diff options
author | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2014-12-17 22:05:42 +0000 |
---|---|---|
committer | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2014-12-17 22:05:42 +0000 |
commit | 140d41b791825eb29dcfcb81744ef7a87c554bba (patch) | |
tree | 3ab5aac030f255b9a29f822922ae0967aea36eaf /llvm/lib/Object/MachOObjectFile.cpp | |
parent | 6c93b3e29c56d14eab570ce62cd646a95f0c1403 (diff) | |
download | llvm-140d41b791825eb29dcfcb81744ef7a87c554bba.zip llvm-140d41b791825eb29dcfcb81744ef7a87c554bba.tar.gz llvm-140d41b791825eb29dcfcb81744ef7a87c554bba.tar.bz2 |
LTO: Lazy-load LTOModule in local contexts
Start lazy-loading `LTOModule`s that own their contexts. These can only
really be used for parsing symbols, so its unnecessary to ever
materialize their functions.
I looked into using `IRObjectFile::create()` and optionally calling
`materializAllPermanently()` afterwards, but this turned out to be
awkward.
- The default target triple and data layout logic needs to happen
*before* the call to `IRObjectFile::IRObjectFile()`, but after
`Module` was created.
- I tried passing a lambda in to do the module initialization, but
this seemed to require threading the error message from
`TargetRegistry::lookupTarget()` through `std::error_code`.
- I also looked at setting `errMsg` directly from within the lambda,
but this didn't look any better.
(I guess there's a reason we weren't already using that function.)
llvm-svn: 224466
Diffstat (limited to 'llvm/lib/Object/MachOObjectFile.cpp')
0 files changed, 0 insertions, 0 deletions