forked from OSchip/llvm-project
[PGO] Include the mem ops into the function hash.
To avoid hash collisions when the only difference is in mem ops.
This commit is contained in:
parent
3d06fc0049
commit
3d6f53018f
|
@ -2,7 +2,7 @@
|
|||
:ir
|
||||
foo
|
||||
# Func Hash:
|
||||
25571299074
|
||||
784007059655560962
|
||||
# Num Counters:
|
||||
2
|
||||
# Counter Values:
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
:csir
|
||||
foo
|
||||
# Func Hash:
|
||||
25571299074
|
||||
784007059655560962
|
||||
# Num Counters:
|
||||
2
|
||||
# Counter Values:
|
||||
|
@ -11,7 +11,7 @@ foo
|
|||
|
||||
foo
|
||||
# Func Hash:
|
||||
1152921530178146050
|
||||
1936928564262407938
|
||||
# Num Counters:
|
||||
2
|
||||
# Counter Values:
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
:ir
|
||||
_ZN3Foo8functionENS_1XE
|
||||
29667547796
|
||||
146835647075900052
|
||||
2
|
||||
10
|
||||
90
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
:ir
|
||||
:entry_first
|
||||
_ZN3Foo8functionENS_1XE
|
||||
29667547796
|
||||
146835647075900052
|
||||
2
|
||||
100
|
||||
90
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
:ir
|
||||
main
|
||||
# Func Hash:
|
||||
34137660316
|
||||
1063705162469825436
|
||||
# Num Counters:
|
||||
2
|
||||
# Counter Values:
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
:entry_first
|
||||
main
|
||||
# Func Hash:
|
||||
34137660316
|
||||
1063705162469825436
|
||||
# Num Counters:
|
||||
2
|
||||
# Counter Values:
|
||||
|
|
|
@ -45,7 +45,7 @@ int main(int argc, char *argv[]) {
|
|||
|
||||
// CHECK: Counters:
|
||||
// CHECK: main:
|
||||
// CHECK: Hash: 0x00030012a7ab6e87
|
||||
// CHECK: Hash: 0x0a9bd81e87ab6e87
|
||||
// CHECK: Counters: 6
|
||||
// CHECK: Indirect Call Site Count: 3
|
||||
// CHECK: Number of Memory Intrinsics Calls: 3
|
||||
|
|
|
@ -261,6 +261,10 @@ extern cl::opt<PGOViewCountsType> PGOViewCounts;
|
|||
// Defined in Analysis/BlockFrequencyInfo.cpp: -view-bfi-func-name=
|
||||
extern cl::opt<std::string> ViewBlockFreqFuncName;
|
||||
|
||||
static cl::opt<bool>
|
||||
PGOOldCFGHashing("pgo-instr-old-cfg-hashing", cl::init(false), cl::Hidden,
|
||||
cl::desc("Use the old CFG function hashing"));
|
||||
|
||||
// Return a string describing the branch condition that can be
|
||||
// used in static branch probability heuristics:
|
||||
static std::string getBranchCondString(Instruction *TI) {
|
||||
|
@ -620,7 +624,8 @@ public:
|
|||
} // end anonymous namespace
|
||||
|
||||
// Compute Hash value for the CFG: the lower 32 bits are CRC32 of the index
|
||||
// value of each BB in the CFG. The higher 32 bits record the number of edges.
|
||||
// value of each BB in the CFG. The higher 32 bits are the CRC32 of the numbers
|
||||
// of selects, indirect calls, mem ops and edges.
|
||||
template <class Edge, class BBInfo>
|
||||
void FuncPGOInstrumentation<Edge, BBInfo>::computeCFGHash() {
|
||||
std::vector<uint8_t> Indexes;
|
||||
|
@ -639,12 +644,31 @@ void FuncPGOInstrumentation<Edge, BBInfo>::computeCFGHash() {
|
|||
}
|
||||
JC.update(Indexes);
|
||||
|
||||
// Hash format for context sensitive profile. Reserve 4 bits for other
|
||||
// information.
|
||||
FunctionHash = (uint64_t)SIVisitor.getNumOfSelectInsts() << 56 |
|
||||
(uint64_t)ValueSites[IPVK_IndirectCallTarget].size() << 48 |
|
||||
//(uint64_t)ValueSites[IPVK_MemOPSize].size() << 40 |
|
||||
(uint64_t)MST.AllEdges.size() << 32 | JC.getCRC();
|
||||
JamCRC JCH;
|
||||
if (PGOOldCFGHashing) {
|
||||
// Hash format for context sensitive profile. Reserve 4 bits for other
|
||||
// information.
|
||||
FunctionHash = (uint64_t)SIVisitor.getNumOfSelectInsts() << 56 |
|
||||
(uint64_t)ValueSites[IPVK_IndirectCallTarget].size() << 48 |
|
||||
//(uint64_t)ValueSites[IPVK_MemOPSize].size() << 40 |
|
||||
(uint64_t)MST.AllEdges.size() << 32 | JC.getCRC();
|
||||
} else {
|
||||
// The higher 32 bits.
|
||||
auto updateJCH = [&JCH](uint64_t Num) {
|
||||
uint8_t Data[8];
|
||||
support::endian::write64le(Data, Num);
|
||||
JCH.update(Data);
|
||||
};
|
||||
updateJCH((uint64_t)SIVisitor.getNumOfSelectInsts());
|
||||
updateJCH((uint64_t)ValueSites[IPVK_IndirectCallTarget].size());
|
||||
updateJCH((uint64_t)ValueSites[IPVK_MemOPSize].size());
|
||||
updateJCH((uint64_t)MST.AllEdges.size());
|
||||
|
||||
// Hash format for context sensitive profile. Reserve 4 bits for other
|
||||
// information.
|
||||
FunctionHash = (((uint64_t)JCH.getCRC()) << 28) + JC.getCRC();
|
||||
}
|
||||
|
||||
// Reserve bit 60-63 for other information purpose.
|
||||
FunctionHash &= 0x0FFFFFFFFFFFFFFF;
|
||||
if (IsCS)
|
||||
|
@ -653,8 +677,12 @@ void FuncPGOInstrumentation<Edge, BBInfo>::computeCFGHash() {
|
|||
<< " CRC = " << JC.getCRC()
|
||||
<< ", Selects = " << SIVisitor.getNumOfSelectInsts()
|
||||
<< ", Edges = " << MST.AllEdges.size() << ", ICSites = "
|
||||
<< ValueSites[IPVK_IndirectCallTarget].size()
|
||||
<< ", Hash = " << FunctionHash << "\n";);
|
||||
<< ValueSites[IPVK_IndirectCallTarget].size());
|
||||
if (!PGOOldCFGHashing) {
|
||||
LLVM_DEBUG(dbgs() << ", Memops = " << ValueSites[IPVK_MemOPSize].size()
|
||||
<< ", High32 CRC = " << JCH.getCRC());
|
||||
}
|
||||
LLVM_DEBUG(dbgs() << ", Hash = " << FunctionHash << "\n";);
|
||||
}
|
||||
|
||||
// Check if we can safely rename this Comdat function.
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
:ir
|
||||
foo
|
||||
60927483247
|
||||
1096621588030135663
|
||||
4
|
||||
3
|
||||
2
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
:ir
|
||||
f
|
||||
62077759478
|
||||
1096621589180411894
|
||||
2
|
||||
3
|
||||
2
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# :ir is the flag to indicate this is IR level profile.
|
||||
:ir
|
||||
test_br_1
|
||||
25571299074
|
||||
784007059655560962
|
||||
2
|
||||
3
|
||||
2
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# :ir is the flag to indicate this is IR level profile.
|
||||
:ir
|
||||
test_br_1
|
||||
25571299074
|
||||
784007059655560962
|
||||
2
|
||||
12884901888
|
||||
8589934592
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# :ir is the flag to indicate this is IR level profile.
|
||||
:ir
|
||||
test_br_2
|
||||
29667547796
|
||||
146835647075900052
|
||||
2
|
||||
1
|
||||
1
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
:ir
|
||||
:entry_first
|
||||
test_br_2
|
||||
29667547796
|
||||
146835647075900052
|
||||
2
|
||||
2
|
||||
1
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# :ir is the flag to indicate this is IR level profile.
|
||||
:ir
|
||||
test_criticalEdge
|
||||
82323253069
|
||||
93478046750287693
|
||||
8
|
||||
2
|
||||
1
|
||||
|
@ -13,7 +13,7 @@ test_criticalEdge
|
|||
1
|
||||
|
||||
<stdin>:bar
|
||||
12884901887
|
||||
742261418966908927
|
||||
1
|
||||
7
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
:ir
|
||||
:entry_first
|
||||
test_criticalEdge
|
||||
82323253069
|
||||
93478046750287693
|
||||
8
|
||||
7
|
||||
2
|
||||
|
@ -14,7 +14,7 @@ test_criticalEdge
|
|||
1
|
||||
|
||||
<stdin>:bar
|
||||
12884901887
|
||||
742261418966908927
|
||||
1
|
||||
7
|
||||
|
||||
|
|
|
@ -54,7 +54,7 @@ bar_m2
|
|||
|
||||
foo
|
||||
# Func Hash:
|
||||
1152921640672869708
|
||||
1456607294772657484
|
||||
# Num Counters:
|
||||
10
|
||||
# Counter Values:
|
||||
|
@ -71,7 +71,7 @@ foo
|
|||
|
||||
foo
|
||||
# Func Hash:
|
||||
29212902728
|
||||
146835646621254984
|
||||
# Num Counters:
|
||||
2
|
||||
# Counter Values:
|
||||
|
@ -80,7 +80,7 @@ foo
|
|||
|
||||
bar
|
||||
# Func Hash:
|
||||
1152921569533132113
|
||||
1440408129826749777
|
||||
# Num Counters:
|
||||
5
|
||||
# Counter Values:
|
||||
|
@ -92,7 +92,7 @@ bar
|
|||
|
||||
bar
|
||||
# Func Hash:
|
||||
56228292833
|
||||
567185239050791137
|
||||
# Num Counters:
|
||||
4
|
||||
# Counter Values:
|
||||
|
@ -103,7 +103,7 @@ bar
|
|||
|
||||
main
|
||||
# Func Hash:
|
||||
1152921517491748863
|
||||
1895182923573755903
|
||||
# Num Counters:
|
||||
1
|
||||
# Counter Values:
|
||||
|
@ -111,7 +111,7 @@ main
|
|||
|
||||
main
|
||||
# Func Hash:
|
||||
12884901887
|
||||
742261418966908927
|
||||
# Num Counters:
|
||||
1
|
||||
# Counter Values:
|
||||
|
@ -135,7 +135,7 @@ csfdo_plain.c:barbar
|
|||
|
||||
goo
|
||||
# Func Hash:
|
||||
1152921517491748863
|
||||
1895182923573755903
|
||||
# Num Counters:
|
||||
1
|
||||
# Counter Values:
|
||||
|
@ -143,7 +143,7 @@ goo
|
|||
|
||||
goo
|
||||
# Func Hash:
|
||||
12884901887
|
||||
742261418966908927
|
||||
# Num Counters:
|
||||
1
|
||||
# Counter Values:
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# :ir is the flag to indicate this is IR level profile.
|
||||
:ir
|
||||
foo
|
||||
12884901887
|
||||
48277136972185599
|
||||
1
|
||||
1
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
:ir
|
||||
:entry_first
|
||||
test_simple_for
|
||||
34137660316
|
||||
1063705162469825436
|
||||
2
|
||||
0
|
||||
96
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
:entry_first
|
||||
hot
|
||||
# Func Hash:
|
||||
12884901887
|
||||
742261418966908927
|
||||
# Num Counters:
|
||||
1
|
||||
# Counter Values:
|
||||
|
@ -11,7 +11,7 @@ hot
|
|||
|
||||
cold
|
||||
# Func Hash:
|
||||
12884901887
|
||||
742261418966908927
|
||||
# Num Counters:
|
||||
1
|
||||
# Counter Values:
|
||||
|
@ -19,7 +19,7 @@ cold
|
|||
|
||||
med
|
||||
# Func Hash:
|
||||
12884901887
|
||||
742261418966908927
|
||||
# Num Counters:
|
||||
1
|
||||
# Counter Values:
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
:ir
|
||||
bar
|
||||
# Func Hash:
|
||||
281487861612543
|
||||
170957022131388415
|
||||
# Num Counters:
|
||||
1
|
||||
# Counter Values:
|
||||
|
@ -19,7 +19,7 @@ func3:20
|
|||
|
||||
func1
|
||||
# Func Hash:
|
||||
12884901887
|
||||
742261418966908927
|
||||
# Num Counters:
|
||||
1
|
||||
# Counter Values:
|
||||
|
@ -27,7 +27,7 @@ func1
|
|||
|
||||
func2
|
||||
# Func Hash:
|
||||
12884901887
|
||||
742261418966908927
|
||||
# Num Counters:
|
||||
1
|
||||
# Counter Values:
|
||||
|
@ -35,7 +35,7 @@ func2
|
|||
|
||||
func3
|
||||
# Func Hash:
|
||||
12884901887
|
||||
742261418966908927
|
||||
# Num Counters:
|
||||
1
|
||||
# Counter Values:
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
:ir
|
||||
foo
|
||||
# Func Hash:
|
||||
47485104005
|
||||
844982796158316421
|
||||
# Num Counters:
|
||||
4
|
||||
# Counter Values:
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
:entry_first
|
||||
foo
|
||||
# Func Hash:
|
||||
47485104005
|
||||
844982796158316421
|
||||
# Num Counters:
|
||||
4
|
||||
# Counter Values:
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
:ir
|
||||
_Z11irreducibleii
|
||||
# Func Hash:
|
||||
64451410787
|
||||
287486624745028451
|
||||
# Num Counters:
|
||||
6
|
||||
# Counter Values:
|
||||
|
@ -14,7 +14,7 @@ _Z11irreducibleii
|
|||
|
||||
_Z11irreduciblePh
|
||||
# Func Hash:
|
||||
104649601521
|
||||
331779889035882993
|
||||
# Num Counters:
|
||||
9
|
||||
# Counter Values:
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
:entry_first
|
||||
_Z11irreducibleii
|
||||
# Func Hash:
|
||||
64451410787
|
||||
287486624745028451
|
||||
# Num Counters:
|
||||
6
|
||||
# Counter Values:
|
||||
|
@ -15,7 +15,7 @@ _Z11irreducibleii
|
|||
|
||||
_Z11irreduciblePh
|
||||
# Func Hash:
|
||||
104649601521
|
||||
331779889035882993
|
||||
# Num Counters:
|
||||
9
|
||||
# Counter Values:
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# :ir is the flag to indicate this is IR level profile.
|
||||
:ir
|
||||
foo
|
||||
59130013419
|
||||
567185241952511723
|
||||
4
|
||||
3
|
||||
1
|
||||
|
@ -9,7 +9,7 @@ foo
|
|||
0
|
||||
|
||||
bar
|
||||
24868915205
|
||||
784007058953177093
|
||||
2
|
||||
3
|
||||
2
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
:ir
|
||||
:entry_first
|
||||
foo
|
||||
59130013419
|
||||
567185241952511723
|
||||
4
|
||||
5
|
||||
1
|
||||
|
@ -10,7 +10,7 @@ foo
|
|||
0
|
||||
|
||||
bar
|
||||
24868915205
|
||||
784007058953177093
|
||||
2
|
||||
3
|
||||
2
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# :ir is the flag to indicate this is IR level profile.
|
||||
:ir
|
||||
test
|
||||
25571299074
|
||||
784007059655560962
|
||||
2
|
||||
40000000000
|
||||
20000000000
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# :ir is the flag to indicate this is IR level profile.
|
||||
:ir
|
||||
test_simple_for
|
||||
34137660316
|
||||
1063705162469825436
|
||||
2
|
||||
96
|
||||
4
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
:ir
|
||||
:entry_first
|
||||
test_simple_for
|
||||
34137660316
|
||||
1063705162469825436
|
||||
2
|
||||
4
|
||||
96
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# :ir is the flag to indicate this is IR level profile.
|
||||
:ir
|
||||
test_nested_for
|
||||
53929068288
|
||||
798733566382720768
|
||||
3
|
||||
33
|
||||
10
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
:ir
|
||||
:entry_first
|
||||
test_nested_for
|
||||
53929068288
|
||||
798733566382720768
|
||||
3
|
||||
6
|
||||
33
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
:ir
|
||||
foo
|
||||
# Func Hash:
|
||||
53929068288
|
||||
687116424982578944
|
||||
# Num Counters:
|
||||
3
|
||||
# Counter Values:
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
:ir
|
||||
bar
|
||||
# Func Hash:
|
||||
29667547796
|
||||
146835647075900052
|
||||
# Num Counters:
|
||||
2
|
||||
# Counter Values:
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
:ir
|
||||
bar
|
||||
# Func Hash:
|
||||
29667547796
|
||||
146835647075900052
|
||||
# Num Counters:
|
||||
2
|
||||
# Counter Values:
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
:entry_first
|
||||
bar
|
||||
# Func Hash:
|
||||
29667547796
|
||||
146835647075900052
|
||||
# Num Counters:
|
||||
2
|
||||
# Counter Values:
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
:ir
|
||||
main
|
||||
# Func Hash:
|
||||
74054140268
|
||||
391331300939170156
|
||||
# Num Counters:
|
||||
7
|
||||
# Counter Values:
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
:entry_first
|
||||
main
|
||||
# Func Hash:
|
||||
74054140268
|
||||
391331300939170156
|
||||
# Num Counters:
|
||||
7
|
||||
# Counter Values:
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
:ir
|
||||
main
|
||||
# Func Hash:
|
||||
74054140268
|
||||
391331300939170156
|
||||
# Num Counters:
|
||||
7
|
||||
# Counter Values:
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
:entry_first
|
||||
main
|
||||
# Func Hash:
|
||||
74054140268
|
||||
391331300939170156
|
||||
# Num Counters:
|
||||
7
|
||||
# Counter Values:
|
||||
|
|
|
@ -2,12 +2,22 @@
|
|||
:ir
|
||||
_Z3fooi
|
||||
# Func Hash:
|
||||
382993475055910911
|
||||
# Num Counters:
|
||||
2
|
||||
# Counter Values:
|
||||
18
|
||||
12
|
||||
|
||||
# For -pgo-instr-old-cfg-hashing=true
|
||||
_Z3fooi
|
||||
# Func Hash:
|
||||
72057606922829823
|
||||
# Num Counters:
|
||||
2
|
||||
# Counter Values:
|
||||
18
|
||||
12
|
||||
6
|
||||
|
||||
_Z3fooi
|
||||
# Func Hash:
|
||||
|
@ -17,6 +27,16 @@ _Z3fooi
|
|||
# Counter Values:
|
||||
0
|
||||
|
||||
_Z3bari
|
||||
# Func Hash:
|
||||
382993475055910911
|
||||
# Num Counters:
|
||||
2
|
||||
# Counter Values:
|
||||
0
|
||||
0
|
||||
|
||||
# For -pgo-instr-old-cfg-hashing=true
|
||||
_Z3bari
|
||||
# Func Hash:
|
||||
72057606922829823
|
||||
|
@ -28,9 +48,17 @@ _Z3bari
|
|||
|
||||
_Z4m2f1v
|
||||
# Func Hash:
|
||||
12884901887
|
||||
742261418966908927
|
||||
# Num Counters:
|
||||
1
|
||||
# Counter Values:
|
||||
1
|
||||
|
||||
# For -pgo-instr-old-cfg-hashing=true
|
||||
_Z4m2f1v
|
||||
# Func Hash:
|
||||
12884901887
|
||||
# Num Counters:
|
||||
1
|
||||
# Counter Values:
|
||||
1
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
:ir
|
||||
foo
|
||||
# Func Hash:
|
||||
36496524737
|
||||
238984482720105921
|
||||
# Num Counters:
|
||||
3
|
||||
# Counter Values:
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# :ir is the flag to indicate this is IR level profile.
|
||||
:ir
|
||||
_ZN3foo3barERKN1N1XINS_4quuxEEE
|
||||
25571299074
|
||||
784007059655560962
|
||||
2
|
||||
3
|
||||
2
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
:ir
|
||||
:entry_first
|
||||
test_br_2
|
||||
72057623705475732
|
||||
942389667449461396
|
||||
3
|
||||
5
|
||||
1
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
:entry_first
|
||||
foo
|
||||
# Func Hash:
|
||||
72057628175588252
|
||||
134732432632142748
|
||||
# Num Counters:
|
||||
3
|
||||
# Counter Values:
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# :ir is the flag to indicate this is IR level profile.
|
||||
:ir
|
||||
test_simple_for
|
||||
34137660316
|
||||
1063705162469825436
|
||||
2
|
||||
0
|
||||
0
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# :ir is the flag to indicate this is IR level profile.
|
||||
:ir
|
||||
test_switch
|
||||
46200943743
|
||||
536873293052540031
|
||||
4
|
||||
0
|
||||
5
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
:ir
|
||||
:entry_first
|
||||
test_switch
|
||||
46200943743
|
||||
536873293052540031
|
||||
4
|
||||
10
|
||||
5
|
||||
|
|
|
@ -10,7 +10,7 @@ cond.llvm.11253644763537639171
|
|||
|
||||
foo
|
||||
# Func Hash:
|
||||
29212902728
|
||||
1720106746050921044
|
||||
# Num Counters:
|
||||
2
|
||||
# Counter Values:
|
||||
|
@ -19,7 +19,7 @@ foo
|
|||
|
||||
bar
|
||||
# Func Hash:
|
||||
1152921534274394772
|
||||
1299757151682747028
|
||||
# Num Counters:
|
||||
2
|
||||
# Counter Values:
|
||||
|
@ -45,7 +45,7 @@ main
|
|||
|
||||
main
|
||||
# Func Hash:
|
||||
12884901887
|
||||
1895182923573755903
|
||||
# Num Counters:
|
||||
1
|
||||
# Counter Values:
|
||||
|
@ -53,7 +53,7 @@ main
|
|||
|
||||
cspgo.c:foo
|
||||
# Func Hash:
|
||||
1152921563228422740
|
||||
1720106746050921044
|
||||
# Num Counters:
|
||||
4
|
||||
# Counter Values:
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
; RUN: llvm-profdata merge %S/Inputs/multiple_hash_profile.proftext -o %t.profdata
|
||||
; RUN: opt < %s -pgo-instr-use -pgo-test-profile-file=%t.profdata -S | FileCheck %s
|
||||
; RUN: opt < %s -pgo-instr-use -pgo-test-profile-file=%t.profdata -pgo-instr-old-cfg-hashing=true -S | FileCheck -check-prefix=CHECKOLDHASH %s
|
||||
; RUN: opt < %s -passes=pgo-instr-use -pgo-test-profile-file=%t.profdata -S | FileCheck %s
|
||||
; RUN: opt < %s -passes=pgo-instr-use -pgo-test-profile-file=%t.profdata -pgo-instr-old-cfg-hashing=true -S | FileCheck -check-prefix=CHECKOLDHASH %s
|
||||
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
|
||||
target triple = "x86_64-unknown-linux-gnu"
|
||||
|
||||
|
@ -29,6 +31,9 @@ entry:
|
|||
; CHECK: %mul.i = select i1 %cmp.i, i32 1, i32 %i
|
||||
; CHECK-SAME: !prof ![[BW:[0-9]+]]
|
||||
; CHECK: ![[BW]] = !{!"branch_weights", i32 12, i32 6}
|
||||
; CHECKOLDHASH: %mul.i = select i1 %cmp.i, i32 1, i32 %i
|
||||
; CHECKOLDHASH-SAME: !prof ![[BW:[0-9]+]]
|
||||
; CHECKOLDHASH: ![[BW]] = !{!"branch_weights", i32 6, i32 12}
|
||||
%retval.0.i = mul nsw i32 %mul.i, %i
|
||||
ret i32 %retval.0.i
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue