llvm-project/llvm/lib/LTO
Duncan P. N. Exon Smith 140d41b791 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
2014-12-17 22:05:42 +00:00
..
CMakeLists.txt
LLVMBuild.txt Attempt at fixing the windows dll build. 2014-07-30 23:39:30 +00:00
LTOCodeGenerator.cpp libLTO: Assert if LTOCodeGenerator and LTOModule are from different contexts 2014-11-11 23:13:10 +00:00
LTOModule.cpp LTO: Lazy-load LTOModule in local contexts 2014-12-17 22:05:42 +00:00
Makefile Test commit. Fixed a copy-paste error in the Makefile for lib/LTO. 2013-10-03 18:05:12 +00:00