Materialize functions whose basic blocks are used by global variables. Fixes
PR11677. llvm-svn: 147425
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user