diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2012-01-02 07:49:53 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2012-01-02 07:49:53 +0000 |
commit | b79934657c4d522193c04775447a1b72a63e9c00 (patch) | |
tree | 7ea2e7985916ab2db4eebd7521daf99c066723ae /llvm/lib/Bitcode/Reader/BitcodeReader.cpp | |
parent | eeb9d9fef6df03f4f1bd9db87a4cbdb2784efbf2 (diff) | |
download | bcm5719-llvm-b79934657c4d522193c04775447a1b72a63e9c00.tar.gz bcm5719-llvm-b79934657c4d522193c04775447a1b72a63e9c00.zip |
Materialize functions whose basic blocks are used by global variables. Fixes
PR11677.
llvm-svn: 147425
Diffstat (limited to 'llvm/lib/Bitcode/Reader/BitcodeReader.cpp')
-rw-r--r-- | llvm/lib/Bitcode/Reader/BitcodeReader.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp index b86d6e08833..9d10498943e 100644 --- a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp +++ b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp @@ -27,6 +27,13 @@ #include "llvm/OperandTraits.h" using namespace llvm; +void BitcodeReader::materializeForwardReferencedFunctions() { + while (!BlockAddrFwdRefs.empty()) { + Function *F = BlockAddrFwdRefs.begin()->first; + F->Materialize(); + } +} + void BitcodeReader::FreeState() { if (BufferOwned) delete Buffer; @@ -2779,6 +2786,9 @@ Module *llvm::getLazyBitcodeModule(MemoryBuffer *Buffer, } // Have the BitcodeReader dtor delete 'Buffer'. R->setBufferOwned(true); + + R->materializeForwardReferencedFunctions(); + return M; } |