llvm-project/bolt
Maksim Panchenko 489e514530 [BOLT] Improve annotations format and processing
Summary:
Change the way annotations are stored and processed.

Embed annotation type/index into immediate value stored as an operand.
This limits the effective range of values that could be stored as
annotations to 56 bits, which is still plenty for most integer types
that we use and for pointers on real systems. High 8 bits are reserved
for storing annotation type/index.

Expand the interface for general annotations to include reference to
annotations by index. The main purpose of this interface is to improve
performance of annotations that are used by heavy (>O(N)) algorithms,
such as data flow analysis.

For -frame-opt pass, new memory usage and processing times are slightly
better compared to those before refactoring.

(cherry picked from FBD7492017)
2018-03-29 18:42:06 -07:00
..
Passes [BOLT] Improve annotations format and processing 2018-03-29 18:42:06 -07:00
Target [BOLT] Improve annotations format and processing 2018-03-29 18:42:06 -07:00
merge-fdata [BOLT rebase] Rebase fixes on top of LLVM Feb2018 2018-02-06 15:00:23 -08:00
BinaryBasicBlock.cpp [BOLT] Fix CFG in BinaryFunction::eraseInvalidBBs() 2018-03-30 17:44:14 -07:00
BinaryBasicBlock.h [BOLT] Fix CFG in BinaryFunction::eraseInvalidBBs() 2018-03-30 17:44:14 -07:00
BinaryContext.cpp [BOLT][Refactoring] Isolate changes to MC layer 2018-03-19 18:32:12 -07:00
BinaryContext.h [BOLT][Refactoring] Isolate changes to MC layer 2018-03-19 18:32:12 -07:00
BinaryData.cpp [BOLT] Refactor global symbol handling code. 2017-11-14 20:05:11 -08:00
BinaryData.h [BOLT] Refactor global symbol handling code. 2017-11-14 20:05:11 -08:00
BinaryFunction.cpp [BOLT] Improve annotations format and processing 2018-03-29 18:42:06 -07:00
BinaryFunction.h [BOLT] Fix CFG in BinaryFunction::eraseInvalidBBs() 2018-03-30 17:44:14 -07:00
BinaryFunctionProfile.cpp [BOLT] improvements for CFG construction 2018-03-22 09:48:59 -07:00
BinaryLoop.h [BOLT rebase] Rebase fixes on top of LLVM Feb2018 2018-02-06 15:00:23 -08:00
BinaryPassManager.cpp [BOLT][Refactoring] Isolate changes to MC layer 2018-03-19 18:32:12 -07:00
BinaryPassManager.h [BOLT rebase] Rebase fixes on top of LLVM Feb2018 2018-02-06 15:00:23 -08:00
BinaryPasses.cpp [BOLT] Emit short tail calls in relocation mode. 2017-02-13 23:05:12 -08:00
BinaryPasses.h [BOLT] Emit short tail calls in relocation mode. 2017-02-13 23:05:12 -08:00
BinarySection.cpp [BOLT rebase] Rebase fixes on top of LLVM Feb2018 2018-02-06 15:00:23 -08:00
BinarySection.h [BOLT rebase] Rebase fixes on top of LLVM Feb2018 2018-02-06 15:00:23 -08:00
BoltDiff.cpp [BOLTDIFF] Add a tool to audit performance differences 2017-12-07 15:00:41 -08:00
CMakeLists.txt [BOLT] Introduce MCPlus layer 2018-03-09 09:45:13 -08:00
CacheMetrics.cpp [BOLT] Introduce MCPlus layer 2018-03-09 09:45:13 -08:00
CacheMetrics.h [BOLT] a new block reordering algorithm 2017-12-01 16:54:08 -08:00
DWARFRewriter.cpp [BOLT rebase] Rebase fixes on top of LLVM Feb2018 2018-02-06 15:00:23 -08:00
DataAggregator.cpp [BOLT rebase] Rebase fixes on top of LLVM Feb2018 2018-02-06 15:00:23 -08:00
DataAggregator.h [BOLT] Major overhaul of profiling in BOLT 2017-11-28 09:57:21 -08:00
DataReader.cpp [BOLTDIFF] Add a tool to audit performance differences 2017-12-07 15:00:41 -08:00
DataReader.h [BOLT] Fix ICP nested jump table handling and general stats. 2017-11-29 17:38:39 -08:00
DebugData.cpp [BOLT rebase] Rebase fixes on top of LLVM Feb2018 2018-02-06 15:00:23 -08:00
DebugData.h [BOLT rebase] Rebase fixes on top of LLVM Feb2018 2018-02-06 15:00:23 -08:00
Exceptions.cpp [BOLT][Refactoring] Isolate changes to MC layer 2018-03-19 18:32:12 -07:00
Exceptions.h [BOLT rebase] Rebase fixes on top of LLVM Feb2018 2018-02-06 15:00:23 -08:00
JumpTable.cpp [BOLT] Refactor global symbol handling code. 2017-11-14 20:05:11 -08:00
JumpTable.h [BOLT] Refactor global symbol handling code. 2017-11-14 20:05:11 -08:00
LLVMBuild.txt Tool to merge .fdata files. 2016-04-08 12:18:06 -07:00
MCPlus.h [BOLT] Improve annotations format and processing 2018-03-29 18:42:06 -07:00
MCPlusBuilder.cpp [BOLT] Improve annotations format and processing 2018-03-29 18:42:06 -07:00
MCPlusBuilder.h [BOLT] Improve annotations format and processing 2018-03-29 18:42:06 -07:00
ProfileReader.cpp [BOLT][Refactoring] Isolate changes to MC layer 2018-03-19 18:32:12 -07:00
ProfileReader.h [BOLT] Improved function profile matching 2018-02-14 12:30:27 -08:00
ProfileWriter.cpp [BOLT] Introduce MCPlus layer 2018-03-09 09:45:13 -08:00
ProfileWriter.h [BOLT] New profile format 2017-12-13 23:12:01 -08:00
ProfileYAMLMapping.h [BOLT] New profile format 2017-12-13 23:12:01 -08:00
README.md BOLT root commit 2022-01-10 17:58:05 -08:00
Relocation.cpp [BOLT] Refactor global symbol handling code. 2017-11-14 20:05:11 -08:00
Relocation.h [BOLT] Refactor global symbol handling code. 2017-11-14 20:05:11 -08:00
ReorderAlgorithm.cpp ICF improvements. 2016-12-21 17:13:56 -08:00
ReorderAlgorithm.h Add cluster randomization layout algorithm. 2016-09-11 14:33:58 -07:00
RewriteInstance.cpp [BOLT] Fix relocation verification 2018-03-30 15:49:34 -07:00
RewriteInstance.h [BOLT rebase] Rebase fixes on top of LLVM Feb2018 2018-02-06 15:00:23 -08:00
llvm-bolt.cpp [BOLT rebase] Rebase fixes on top of LLVM Feb2018 2018-02-06 15:00:23 -08:00

README.md