diff options
author | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2014-07-28 21:19:41 +0000 |
---|---|---|
committer | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2014-07-28 21:19:41 +0000 |
commit | 1f66c856b54e32e6590d1333fc8a60d56979edb8 (patch) | |
tree | 768875d352946ca33ca6773c03aada1ebb4f3c24 /llvm/tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp | |
parent | f59b735a80004aa951e6f5e250231eb4b6fb18c8 (diff) | |
download | bcm5719-llvm-1f66c856b54e32e6590d1333fc8a60d56979edb8.tar.gz bcm5719-llvm-1f66c856b54e32e6590d1333fc8a60d56979edb8.zip |
Bitcode: Serialize (and recover) use-list order
Predict and serialize use-list order in bitcode. This makes the option
`-preserve-bc-use-list-order` work *most* of the time, but this is still
experimental.
- Builds a full value-table up front in the writer, sets up a list of
use-list orders to write out, and discards the table. This is a
simpler first step than determining the order from the various
overlapping IDs of values on-the-fly.
- The shuffles stored in the use-list order list have an unnecessarily
large memory footprint.
- `blockaddress` expressions cause functions to be materialized
out-of-order. For now I've ignored this problem, so use-list orders
will be wrong for constants used by functions that have block
addresses taken. There are a couple of ways to fix this, but I
don't have a concrete plan yet.
- When materializing functions lazily, the use-lists for constants
will not be correct. This use case is out of scope: what should the
use-list order be, if it's incomplete?
This is part of PR5680.
llvm-svn: 214125
Diffstat (limited to 'llvm/tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp')
-rw-r--r-- | llvm/tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/llvm/tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp b/llvm/tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp index 15567cf3123..63145c087a6 100644 --- a/llvm/tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp +++ b/llvm/tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp @@ -271,7 +271,8 @@ static const char *GetCodeName(unsigned CodeID, unsigned BlockID, case bitc::USELIST_BLOCK_ID: switch(CodeID) { default:return nullptr; - case bitc::USELIST_CODE_ENTRY: return "USELIST_CODE_ENTRY"; + case bitc::USELIST_CODE_DEFAULT: return "USELIST_CODE_DEFAULT"; + case bitc::USELIST_CODE_BB: return "USELIST_CODE_BB"; } } } |