Pre-instrumentation inline (pre-inliner) greatly improves the IR instrumentation code performance, among other benefits. One issue of the pre-inliner is it can introduce CFG-mismatch for COMDAT functions. This is due to the fact that the same COMDAT function may have different early inline decisions across different modules -- that means different copies of COMDAT functions will have different CFG checksum. In this patch, we propose a partially renaming the COMDAT group and its member function/variable so we have different profile counter for each version. We will post-fix the COMDAT function and the group name with its FunctionHash. Differential Revision: http://reviews.llvm.org/D22600 llvm-svn: 276673
44 lines
401 B
Plaintext
44 lines
401 B
Plaintext
:ir
|
|
bar
|
|
# Func Hash:
|
|
281487861612543
|
|
# Num Counters:
|
|
1
|
|
# Counter Values:
|
|
140
|
|
# Num Value Kinds:
|
|
1
|
|
# ValueKind = IPVK_IndirectCallTarget:
|
|
0
|
|
# NumValueSites:
|
|
1
|
|
3
|
|
func2:80
|
|
func1:40
|
|
func3:20
|
|
|
|
func1
|
|
# Func Hash:
|
|
12884901887
|
|
# Num Counters:
|
|
1
|
|
# Counter Values:
|
|
40
|
|
|
|
func2
|
|
# Func Hash:
|
|
12884901887
|
|
# Num Counters:
|
|
1
|
|
# Counter Values:
|
|
80
|
|
|
|
func3
|
|
# Func Hash:
|
|
12884901887
|
|
# Num Counters:
|
|
1
|
|
# Counter Values:
|
|
20
|
|
|