yamauchi updated this revision to Diff 281760.
yamauchi added a comment.
Fix the endianness issue.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D84782/new/
https://reviews.llvm.org/D84782
Files:
clang/test/CodeGen/Inputs/thinlto_expect1.proftext
clang/test/CodeGen/Inputs/thinlto_expect2.proftext
clang/test/CodeGenCXX/Inputs/profile-remap.proftext
clang/test/CodeGenCXX/Inputs/profile-remap_entry.proftext
clang/test/Profile/Inputs/gcc-flag-compatibility_IR.proftext
clang/test/Profile/Inputs/gcc-flag-compatibility_IR_entry.proftext
compiler-rt/test/profile/Linux/instrprof-value-merge.c
llvm/lib/Transforms/Instrumentation/PGOInstrumentation.cpp
llvm/test/Transforms/PGOProfile/Inputs/PR41279.proftext
llvm/test/Transforms/PGOProfile/Inputs/PR41279_2.proftext
llvm/test/Transforms/PGOProfile/Inputs/branch1.proftext
llvm/test/Transforms/PGOProfile/Inputs/branch1_large_count.proftext
llvm/test/Transforms/PGOProfile/Inputs/branch2.proftext
llvm/test/Transforms/PGOProfile/Inputs/branch2_entry.proftext
llvm/test/Transforms/PGOProfile/Inputs/criticaledge.proftext
llvm/test/Transforms/PGOProfile/Inputs/criticaledge_entry.proftext
llvm/test/Transforms/PGOProfile/Inputs/cspgo.proftext
llvm/test/Transforms/PGOProfile/Inputs/diag_no_value_sites.proftext
llvm/test/Transforms/PGOProfile/Inputs/fix_entry_count.proftext
llvm/test/Transforms/PGOProfile/Inputs/func_entry.proftext
llvm/test/Transforms/PGOProfile/Inputs/indirect_call.proftext
llvm/test/Transforms/PGOProfile/Inputs/indirectbr.proftext
llvm/test/Transforms/PGOProfile/Inputs/indirectbr_entry.proftext
llvm/test/Transforms/PGOProfile/Inputs/irreducible.proftext
llvm/test/Transforms/PGOProfile/Inputs/irreducible_entry.proftext
llvm/test/Transforms/PGOProfile/Inputs/landingpad.proftext
llvm/test/Transforms/PGOProfile/Inputs/landingpad_entry.proftext
llvm/test/Transforms/PGOProfile/Inputs/large_count_remarks.proftext
llvm/test/Transforms/PGOProfile/Inputs/loop1.proftext
llvm/test/Transforms/PGOProfile/Inputs/loop1_entry.proftext
llvm/test/Transforms/PGOProfile/Inputs/loop2.proftext
llvm/test/Transforms/PGOProfile/Inputs/loop2_entry.proftext
llvm/test/Transforms/PGOProfile/Inputs/memop_size_annotation.proftext
llvm/test/Transforms/PGOProfile/Inputs/misexpect-branch-correct.proftext
llvm/test/Transforms/PGOProfile/Inputs/misexpect-branch.proftext
llvm/test/Transforms/PGOProfile/Inputs/misexpect-branch_entry.proftext
llvm/test/Transforms/PGOProfile/Inputs/misexpect-switch-correct.proftext
llvm/test/Transforms/PGOProfile/Inputs/misexpect-switch-correct_entry.proftext
llvm/test/Transforms/PGOProfile/Inputs/misexpect-switch.proftext
llvm/test/Transforms/PGOProfile/Inputs/misexpect-switch_entry.proftext
llvm/test/Transforms/PGOProfile/Inputs/multiple_hash_profile.proftext
llvm/test/Transforms/PGOProfile/Inputs/noreturncall.proftext
llvm/test/Transforms/PGOProfile/Inputs/remap.proftext
llvm/test/Transforms/PGOProfile/Inputs/select1.proftext
llvm/test/Transforms/PGOProfile/Inputs/select2.proftext
llvm/test/Transforms/PGOProfile/Inputs/suppl-profile.proftext
llvm/test/Transforms/PGOProfile/Inputs/switch.proftext
llvm/test/Transforms/PGOProfile/Inputs/switch_entry.proftext
llvm/test/Transforms/PGOProfile/Inputs/thinlto_cs.proftext
llvm/test/Transforms/PGOProfile/multiple_hash_profile.ll
Index: llvm/test/Transforms/PGOProfile/multiple_hash_profile.ll
===================================================================
--- llvm/test/Transforms/PGOProfile/multiple_hash_profile.ll
+++ llvm/test/Transforms/PGOProfile/multiple_hash_profile.ll
@@ -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 @@
; 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
}
Index: llvm/test/Transforms/PGOProfile/Inputs/thinlto_cs.proftext
===================================================================
--- llvm/test/Transforms/PGOProfile/Inputs/thinlto_cs.proftext
+++ llvm/test/Transforms/PGOProfile/Inputs/thinlto_cs.proftext
@@ -10,7 +10,7 @@
foo
# Func Hash:
-29212902728
+1720106746050921044
# Num Counters:
2
# Counter Values:
@@ -19,7 +19,7 @@
bar
# Func Hash:
-1152921534274394772
+1299757151682747028
# Num Counters:
2
# Counter Values:
@@ -45,7 +45,7 @@
main
# Func Hash:
-12884901887
+1895182923573755903
# Num Counters:
1
# Counter Values:
@@ -53,7 +53,7 @@
cspgo.c:foo
# Func Hash:
-1152921563228422740
+1720106746050921044
# Num Counters:
4
# Counter Values:
Index: llvm/test/Transforms/PGOProfile/Inputs/switch_entry.proftext
===================================================================
--- llvm/test/Transforms/PGOProfile/Inputs/switch_entry.proftext
+++ llvm/test/Transforms/PGOProfile/Inputs/switch_entry.proftext
@@ -2,7 +2,7 @@
:ir
:entry_first
test_switch
-46200943743
+536873293052540031
4
10
5
Index: llvm/test/Transforms/PGOProfile/Inputs/switch.proftext
===================================================================
--- llvm/test/Transforms/PGOProfile/Inputs/switch.proftext
+++ llvm/test/Transforms/PGOProfile/Inputs/switch.proftext
@@ -1,7 +1,7 @@
# :ir is the flag to indicate this is IR level profile.
:ir
test_switch
-46200943743
+536873293052540031
4
0
5
Index: llvm/test/Transforms/PGOProfile/Inputs/suppl-profile.proftext
===================================================================
--- llvm/test/Transforms/PGOProfile/Inputs/suppl-profile.proftext
+++ llvm/test/Transforms/PGOProfile/Inputs/suppl-profile.proftext
@@ -1,7 +1,7 @@
# :ir is the flag to indicate this is IR level profile.
:ir
test_simple_for
-34137660316
+1063705162469825436
2
0
0
Index: llvm/test/Transforms/PGOProfile/Inputs/select2.proftext
===================================================================
--- llvm/test/Transforms/PGOProfile/Inputs/select2.proftext
+++ llvm/test/Transforms/PGOProfile/Inputs/select2.proftext
@@ -3,7 +3,7 @@
:entry_first
foo
# Func Hash:
-72057628175588252
+134732432632142748
# Num Counters:
3
# Counter Values:
Index: llvm/test/Transforms/PGOProfile/Inputs/select1.proftext
===================================================================
--- llvm/test/Transforms/PGOProfile/Inputs/select1.proftext
+++ llvm/test/Transforms/PGOProfile/Inputs/select1.proftext
@@ -1,7 +1,7 @@
:ir
:entry_first
test_br_2
-72057623705475732
+942389667449461396
3
5
1
Index: llvm/test/Transforms/PGOProfile/Inputs/remap.proftext
===================================================================
--- llvm/test/Transforms/PGOProfile/Inputs/remap.proftext
+++ llvm/test/Transforms/PGOProfile/Inputs/remap.proftext
@@ -1,7 +1,7 @@
# :ir is the flag to indicate this is IR level profile.
:ir
_ZN3foo3barERKN1N1XINS_4quuxEEE
-25571299074
+784007059655560962
2
3
2
Index: llvm/test/Transforms/PGOProfile/Inputs/noreturncall.proftext
===================================================================
--- llvm/test/Transforms/PGOProfile/Inputs/noreturncall.proftext
+++ llvm/test/Transforms/PGOProfile/Inputs/noreturncall.proftext
@@ -2,7 +2,7 @@
:ir
foo
# Func Hash:
-36496524737
+238984482720105921
# Num Counters:
3
# Counter Values:
Index: llvm/test/Transforms/PGOProfile/Inputs/multiple_hash_profile.proftext
===================================================================
--- llvm/test/Transforms/PGOProfile/Inputs/multiple_hash_profile.proftext
+++ llvm/test/Transforms/PGOProfile/Inputs/multiple_hash_profile.proftext
@@ -2,13 +2,23 @@
:ir
_Z3fooi
# Func Hash:
-72057606922829823
+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
+6
+
_Z3fooi
# Func Hash:
12884901887
@@ -17,6 +27,16 @@
# 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 @@
_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
Index: llvm/test/Transforms/PGOProfile/Inputs/misexpect-switch_entry.proftext
===================================================================
--- llvm/test/Transforms/PGOProfile/Inputs/misexpect-switch_entry.proftext
+++ llvm/test/Transforms/PGOProfile/Inputs/misexpect-switch_entry.proftext
@@ -3,7 +3,7 @@
:entry_first
main
# Func Hash:
-74054140268
+391331300939170156
# Num Counters:
7
# Counter Values:
Index: llvm/test/Transforms/PGOProfile/Inputs/misexpect-switch.proftext
===================================================================
--- llvm/test/Transforms/PGOProfile/Inputs/misexpect-switch.proftext
+++ llvm/test/Transforms/PGOProfile/Inputs/misexpect-switch.proftext
@@ -2,7 +2,7 @@
:ir
main
# Func Hash:
-74054140268
+391331300939170156
# Num Counters:
7
# Counter Values:
Index: llvm/test/Transforms/PGOProfile/Inputs/misexpect-switch-correct_entry.proftext
===================================================================
--- llvm/test/Transforms/PGOProfile/Inputs/misexpect-switch-correct_entry.proftext
+++ llvm/test/Transforms/PGOProfile/Inputs/misexpect-switch-correct_entry.proftext
@@ -3,7 +3,7 @@
:entry_first
main
# Func Hash:
-74054140268
+391331300939170156
# Num Counters:
7
# Counter Values:
Index: llvm/test/Transforms/PGOProfile/Inputs/misexpect-switch-correct.proftext
===================================================================
--- llvm/test/Transforms/PGOProfile/Inputs/misexpect-switch-correct.proftext
+++ llvm/test/Transforms/PGOProfile/Inputs/misexpect-switch-correct.proftext
@@ -2,7 +2,7 @@
:ir
main
# Func Hash:
-74054140268
+391331300939170156
# Num Counters:
7
# Counter Values:
Index: llvm/test/Transforms/PGOProfile/Inputs/misexpect-branch_entry.proftext
===================================================================
--- llvm/test/Transforms/PGOProfile/Inputs/misexpect-branch_entry.proftext
+++ llvm/test/Transforms/PGOProfile/Inputs/misexpect-branch_entry.proftext
@@ -3,7 +3,7 @@
:entry_first
bar
# Func Hash:
-29667547796
+146835647075900052
# Num Counters:
2
# Counter Values:
Index: llvm/test/Transforms/PGOProfile/Inputs/misexpect-branch.proftext
===================================================================
--- llvm/test/Transforms/PGOProfile/Inputs/misexpect-branch.proftext
+++ llvm/test/Transforms/PGOProfile/Inputs/misexpect-branch.proftext
@@ -2,7 +2,7 @@
:ir
bar
# Func Hash:
-29667547796
+146835647075900052
# Num Counters:
2
# Counter Values:
Index: llvm/test/Transforms/PGOProfile/Inputs/misexpect-branch-correct.proftext
===================================================================
--- llvm/test/Transforms/PGOProfile/Inputs/misexpect-branch-correct.proftext
+++ llvm/test/Transforms/PGOProfile/Inputs/misexpect-branch-correct.proftext
@@ -2,7 +2,7 @@
:ir
bar
# Func Hash:
-29667547796
+146835647075900052
# Num Counters:
2
# Counter Values:
Index: llvm/test/Transforms/PGOProfile/Inputs/memop_size_annotation.proftext
===================================================================
--- llvm/test/Transforms/PGOProfile/Inputs/memop_size_annotation.proftext
+++ llvm/test/Transforms/PGOProfile/Inputs/memop_size_annotation.proftext
@@ -2,7 +2,7 @@
:ir
foo
# Func Hash:
-53929068288
+687116424982578944
# Num Counters:
3
# Counter Values:
Index: llvm/test/Transforms/PGOProfile/Inputs/loop2_entry.proftext
===================================================================
--- llvm/test/Transforms/PGOProfile/Inputs/loop2_entry.proftext
+++ llvm/test/Transforms/PGOProfile/Inputs/loop2_entry.proftext
@@ -2,7 +2,7 @@
:ir
:entry_first
test_nested_for
-53929068288
+798733566382720768
3
6
33
Index: llvm/test/Transforms/PGOProfile/Inputs/loop2.proftext
===================================================================
--- llvm/test/Transforms/PGOProfile/Inputs/loop2.proftext
+++ llvm/test/Transforms/PGOProfile/Inputs/loop2.proftext
@@ -1,7 +1,7 @@
# :ir is the flag to indicate this is IR level profile.
:ir
test_nested_for
-53929068288
+798733566382720768
3
33
10
Index: llvm/test/Transforms/PGOProfile/Inputs/loop1_entry.proftext
===================================================================
--- llvm/test/Transforms/PGOProfile/Inputs/loop1_entry.proftext
+++ llvm/test/Transforms/PGOProfile/Inputs/loop1_entry.proftext
@@ -2,7 +2,7 @@
:ir
:entry_first
test_simple_for
-34137660316
+1063705162469825436
2
4
96
Index: llvm/test/Transforms/PGOProfile/Inputs/loop1.proftext
===================================================================
--- llvm/test/Transforms/PGOProfile/Inputs/loop1.proftext
+++ llvm/test/Transforms/PGOProfile/Inputs/loop1.proftext
@@ -1,7 +1,7 @@
# :ir is the flag to indicate this is IR level profile.
:ir
test_simple_for
-34137660316
+1063705162469825436
2
96
4
Index: llvm/test/Transforms/PGOProfile/Inputs/large_count_remarks.proftext
===================================================================
--- llvm/test/Transforms/PGOProfile/Inputs/large_count_remarks.proftext
+++ llvm/test/Transforms/PGOProfile/Inputs/large_count_remarks.proftext
@@ -1,7 +1,7 @@
# :ir is the flag to indicate this is IR level profile.
:ir
test
-25571299074
+784007059655560962
2
40000000000
20000000000
Index: llvm/test/Transforms/PGOProfile/Inputs/landingpad_entry.proftext
===================================================================
--- llvm/test/Transforms/PGOProfile/Inputs/landingpad_entry.proftext
+++ llvm/test/Transforms/PGOProfile/Inputs/landingpad_entry.proftext
@@ -2,7 +2,7 @@
:ir
:entry_first
foo
-59130013419
+567185241952511723
4
5
1
@@ -10,7 +10,7 @@
0
bar
-24868915205
+784007058953177093
2
3
2
Index: llvm/test/Transforms/PGOProfile/Inputs/landingpad.proftext
===================================================================
--- llvm/test/Transforms/PGOProfile/Inputs/landingpad.proftext
+++ llvm/test/Transforms/PGOProfile/Inputs/landingpad.proftext
@@ -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 @@
0
bar
-24868915205
+784007058953177093
2
3
2
Index: llvm/test/Transforms/PGOProfile/Inputs/irreducible_entry.proftext
===================================================================
--- llvm/test/Transforms/PGOProfile/Inputs/irreducible_entry.proftext
+++ llvm/test/Transforms/PGOProfile/Inputs/irreducible_entry.proftext
@@ -2,7 +2,7 @@
:entry_first
_Z11irreducibleii
# Func Hash:
-64451410787
+287486624745028451
# Num Counters:
6
# Counter Values:
@@ -15,7 +15,7 @@
_Z11irreduciblePh
# Func Hash:
-104649601521
+331779889035882993
# Num Counters:
9
# Counter Values:
Index: llvm/test/Transforms/PGOProfile/Inputs/irreducible.proftext
===================================================================
--- llvm/test/Transforms/PGOProfile/Inputs/irreducible.proftext
+++ llvm/test/Transforms/PGOProfile/Inputs/irreducible.proftext
@@ -1,7 +1,7 @@
:ir
_Z11irreducibleii
# Func Hash:
-64451410787
+287486624745028451
# Num Counters:
6
# Counter Values:
@@ -14,7 +14,7 @@
_Z11irreduciblePh
# Func Hash:
-104649601521
+331779889035882993
# Num Counters:
9
# Counter Values:
Index: llvm/test/Transforms/PGOProfile/Inputs/indirectbr_entry.proftext
===================================================================
--- llvm/test/Transforms/PGOProfile/Inputs/indirectbr_entry.proftext
+++ llvm/test/Transforms/PGOProfile/Inputs/indirectbr_entry.proftext
@@ -3,7 +3,7 @@
:entry_first
foo
# Func Hash:
-47485104005
+844982796158316421
# Num Counters:
4
# Counter Values:
Index: llvm/test/Transforms/PGOProfile/Inputs/indirectbr.proftext
===================================================================
--- llvm/test/Transforms/PGOProfile/Inputs/indirectbr.proftext
+++ llvm/test/Transforms/PGOProfile/Inputs/indirectbr.proftext
@@ -2,7 +2,7 @@
:ir
foo
# Func Hash:
-47485104005
+844982796158316421
# Num Counters:
4
# Counter Values:
Index: llvm/test/Transforms/PGOProfile/Inputs/indirect_call.proftext
===================================================================
--- llvm/test/Transforms/PGOProfile/Inputs/indirect_call.proftext
+++ llvm/test/Transforms/PGOProfile/Inputs/indirect_call.proftext
@@ -1,7 +1,7 @@
:ir
bar
# Func Hash:
-281487861612543
+170957022131388415
# Num Counters:
1
# Counter Values:
@@ -19,7 +19,7 @@
func1
# Func Hash:
-12884901887
+742261418966908927
# Num Counters:
1
# Counter Values:
@@ -27,7 +27,7 @@
func2
# Func Hash:
-12884901887
+742261418966908927
# Num Counters:
1
# Counter Values:
@@ -35,7 +35,7 @@
func3
# Func Hash:
-12884901887
+742261418966908927
# Num Counters:
1
# Counter Values:
Index: llvm/test/Transforms/PGOProfile/Inputs/func_entry.proftext
===================================================================
--- llvm/test/Transforms/PGOProfile/Inputs/func_entry.proftext
+++ llvm/test/Transforms/PGOProfile/Inputs/func_entry.proftext
@@ -3,7 +3,7 @@
:entry_first
hot
# Func Hash:
-12884901887
+742261418966908927
# Num Counters:
1
# Counter Values:
@@ -11,7 +11,7 @@
cold
# Func Hash:
-12884901887
+742261418966908927
# Num Counters:
1
# Counter Values:
@@ -19,7 +19,7 @@
med
# Func Hash:
-12884901887
+742261418966908927
# Num Counters:
1
# Counter Values:
Index: llvm/test/Transforms/PGOProfile/Inputs/fix_entry_count.proftext
===================================================================
--- llvm/test/Transforms/PGOProfile/Inputs/fix_entry_count.proftext
+++ llvm/test/Transforms/PGOProfile/Inputs/fix_entry_count.proftext
@@ -1,7 +1,7 @@
:ir
:entry_first
test_simple_for
-34137660316
+1063705162469825436
2
0
96
Index: llvm/test/Transforms/PGOProfile/Inputs/diag_no_value_sites.proftext
===================================================================
--- llvm/test/Transforms/PGOProfile/Inputs/diag_no_value_sites.proftext
+++ llvm/test/Transforms/PGOProfile/Inputs/diag_no_value_sites.proftext
@@ -1,6 +1,6 @@
# :ir is the flag to indicate this is IR level profile.
:ir
foo
-12884901887
+48277136972185599
1
1
Index: llvm/test/Transforms/PGOProfile/Inputs/cspgo.proftext
===================================================================
--- llvm/test/Transforms/PGOProfile/Inputs/cspgo.proftext
+++ llvm/test/Transforms/PGOProfile/Inputs/cspgo.proftext
@@ -54,7 +54,7 @@
foo
# Func Hash:
-1152921640672869708
+1456607294772657484
# Num Counters:
10
# Counter Values:
@@ -71,7 +71,7 @@
foo
# Func Hash:
-29212902728
+146835646621254984
# Num Counters:
2
# Counter Values:
@@ -80,7 +80,7 @@
bar
# Func Hash:
-1152921569533132113
+1440408129826749777
# Num Counters:
5
# Counter Values:
@@ -92,7 +92,7 @@
bar
# Func Hash:
-56228292833
+567185239050791137
# Num Counters:
4
# Counter Values:
@@ -103,7 +103,7 @@
main
# Func Hash:
-1152921517491748863
+1895182923573755903
# Num Counters:
1
# Counter Values:
@@ -111,7 +111,7 @@
main
# Func Hash:
-12884901887
+742261418966908927
# Num Counters:
1
# Counter Values:
@@ -135,7 +135,7 @@
goo
# Func Hash:
-1152921517491748863
+1895182923573755903
# Num Counters:
1
# Counter Values:
@@ -143,7 +143,7 @@
goo
# Func Hash:
-12884901887
+742261418966908927
# Num Counters:
1
# Counter Values:
Index: llvm/test/Transforms/PGOProfile/Inputs/criticaledge_entry.proftext
===================================================================
--- llvm/test/Transforms/PGOProfile/Inputs/criticaledge_entry.proftext
+++ llvm/test/Transforms/PGOProfile/Inputs/criticaledge_entry.proftext
@@ -2,7 +2,7 @@
:ir
:entry_first
test_criticalEdge
-82323253069
+93478046750287693
8
7
2
@@ -14,7 +14,7 @@
1
<stdin>:bar
-12884901887
+742261418966908927
1
7
Index: llvm/test/Transforms/PGOProfile/Inputs/criticaledge.proftext
===================================================================
--- llvm/test/Transforms/PGOProfile/Inputs/criticaledge.proftext
+++ llvm/test/Transforms/PGOProfile/Inputs/criticaledge.proftext
@@ -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 @@
1
<stdin>:bar
-12884901887
+742261418966908927
1
7
Index: llvm/test/Transforms/PGOProfile/Inputs/branch2_entry.proftext
===================================================================
--- llvm/test/Transforms/PGOProfile/Inputs/branch2_entry.proftext
+++ llvm/test/Transforms/PGOProfile/Inputs/branch2_entry.proftext
@@ -2,7 +2,7 @@
:ir
:entry_first
test_br_2
-29667547796
+146835647075900052
2
2
1
Index: llvm/test/Transforms/PGOProfile/Inputs/branch2.proftext
===================================================================
--- llvm/test/Transforms/PGOProfile/Inputs/branch2.proftext
+++ llvm/test/Transforms/PGOProfile/Inputs/branch2.proftext
@@ -1,7 +1,7 @@
# :ir is the flag to indicate this is IR level profile.
:ir
test_br_2
-29667547796
+146835647075900052
2
1
1
Index: llvm/test/Transforms/PGOProfile/Inputs/branch1_large_count.proftext
===================================================================
--- llvm/test/Transforms/PGOProfile/Inputs/branch1_large_count.proftext
+++ llvm/test/Transforms/PGOProfile/Inputs/branch1_large_count.proftext
@@ -1,7 +1,7 @@
# :ir is the flag to indicate this is IR level profile.
:ir
test_br_1
-25571299074
+784007059655560962
2
12884901888
8589934592
Index: llvm/test/Transforms/PGOProfile/Inputs/branch1.proftext
===================================================================
--- llvm/test/Transforms/PGOProfile/Inputs/branch1.proftext
+++ llvm/test/Transforms/PGOProfile/Inputs/branch1.proftext
@@ -1,7 +1,7 @@
# :ir is the flag to indicate this is IR level profile.
:ir
test_br_1
-25571299074
+784007059655560962
2
3
2
Index: llvm/test/Transforms/PGOProfile/Inputs/PR41279_2.proftext
===================================================================
--- llvm/test/Transforms/PGOProfile/Inputs/PR41279_2.proftext
+++ llvm/test/Transforms/PGOProfile/Inputs/PR41279_2.proftext
@@ -1,6 +1,6 @@
:ir
f
-62077759478
+1096621589180411894
2
3
2
Index: llvm/test/Transforms/PGOProfile/Inputs/PR41279.proftext
===================================================================
--- llvm/test/Transforms/PGOProfile/Inputs/PR41279.proftext
+++ llvm/test/Transforms/PGOProfile/Inputs/PR41279.proftext
@@ -1,6 +1,6 @@
:ir
foo
-60927483247
+1096621588030135663
4
3
2
Index: llvm/lib/Transforms/Instrumentation/PGOInstrumentation.cpp
===================================================================
--- llvm/lib/Transforms/Instrumentation/PGOInstrumentation.cpp
+++ llvm/lib/Transforms/Instrumentation/PGOInstrumentation.cpp
@@ -261,6 +261,10 @@
// 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 @@
} // 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,32 @@
}
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) {
+ std::vector<uint8_t> Data;
+ for (unsigned I = 0; I < 8; ++I)
+ Data.push_back((uint8_t)(Num >> (I * 8)));
+ 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 +678,12 @@
<< " 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.
Index: compiler-rt/test/profile/Linux/instrprof-value-merge.c
===================================================================
--- compiler-rt/test/profile/Linux/instrprof-value-merge.c
+++ compiler-rt/test/profile/Linux/instrprof-value-merge.c
@@ -45,7 +45,7 @@
// 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
Index: clang/test/Profile/Inputs/gcc-flag-compatibility_IR_entry.proftext
===================================================================
--- clang/test/Profile/Inputs/gcc-flag-compatibility_IR_entry.proftext
+++ clang/test/Profile/Inputs/gcc-flag-compatibility_IR_entry.proftext
@@ -3,7 +3,7 @@
:entry_first
main
# Func Hash:
-34137660316
+1063705162469825436
# Num Counters:
2
# Counter Values:
Index: clang/test/Profile/Inputs/gcc-flag-compatibility_IR.proftext
===================================================================
--- clang/test/Profile/Inputs/gcc-flag-compatibility_IR.proftext
+++ clang/test/Profile/Inputs/gcc-flag-compatibility_IR.proftext
@@ -2,7 +2,7 @@
:ir
main
# Func Hash:
-34137660316
+1063705162469825436
# Num Counters:
2
# Counter Values:
Index: clang/test/CodeGenCXX/Inputs/profile-remap_entry.proftext
===================================================================
--- clang/test/CodeGenCXX/Inputs/profile-remap_entry.proftext
+++ clang/test/CodeGenCXX/Inputs/profile-remap_entry.proftext
@@ -1,7 +1,7 @@
:ir
:entry_first
_ZN3Foo8functionENS_1XE
-29667547796
+146835647075900052
2
100
90
Index: clang/test/CodeGenCXX/Inputs/profile-remap.proftext
===================================================================
--- clang/test/CodeGenCXX/Inputs/profile-remap.proftext
+++ clang/test/CodeGenCXX/Inputs/profile-remap.proftext
@@ -1,6 +1,6 @@
:ir
_ZN3Foo8functionENS_1XE
-29667547796
+146835647075900052
2
10
90
Index: clang/test/CodeGen/Inputs/thinlto_expect2.proftext
===================================================================
--- clang/test/CodeGen/Inputs/thinlto_expect2.proftext
+++ clang/test/CodeGen/Inputs/thinlto_expect2.proftext
@@ -2,7 +2,7 @@
:csir
foo
# Func Hash:
-25571299074
+784007059655560962
# Num Counters:
2
# Counter Values:
@@ -11,7 +11,7 @@
foo
# Func Hash:
-1152921530178146050
+1936928564262407938
# Num Counters:
2
# Counter Values:
Index: clang/test/CodeGen/Inputs/thinlto_expect1.proftext
===================================================================
--- clang/test/CodeGen/Inputs/thinlto_expect1.proftext
+++ clang/test/CodeGen/Inputs/thinlto_expect1.proftext
@@ -2,7 +2,7 @@
:ir
foo
# Func Hash:
-25571299074
+784007059655560962
# Num Counters:
2
# Counter Values:
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits