D65060 was reverted because it introduced non-determinism by using BFI counts from already freed blocks. The parent of this revision fixes that by using a VH callback on blocks to prevent this from happening and makes sure BFI data is passed correctly in LoopStandardAnalysisResults. This re-introduces the previous optimization of using BFI data to prevent LICM from hoisting/sinking if the instruction will end up moving to a colder block. Internally at Facebook this change results in a ~7% win in a CPU related metric in one of our big services by preventing hoisting cold code into a hot pre-header like the added test case demonstrates. Testing: ninja check Reviewed By: asbirlea Differential Revision: https://reviews.llvm.org/D87551
8 lines
65 B
Plaintext
8 lines
65 B
Plaintext
_Z3fooii:200:1
|
|
0: 1
|
|
1: 1 _Z3bari:1
|
|
2: 200
|
|
3: 200
|
|
4: 0
|
|
5: 1
|