From 7480e4db5e629e8410c9fed37b3f9a16bb57a8fa Mon Sep 17 00:00:00 2001 From: Petar Jovanovic Date: Tue, 23 Sep 2014 12:54:19 +0000 Subject: Do not destroy external linkage when deleting function body The function deleteBody() converts the linkage to external and thus destroys original linkage type value. Lack of correct linkage type causes wrong relocations to be emitted later. Calling dropAllReferences() instead of deleteBody() will fix the issue. Differential Revision: http://reviews.llvm.org/D5415 llvm-svn: 218302 --- llvm/lib/Bitcode/Reader/BitcodeReader.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'llvm/lib/Bitcode/Reader/BitcodeReader.cpp') diff --git a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp index 80afb56..f113c2c 100644 --- a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp +++ b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp @@ -3347,7 +3347,7 @@ void BitcodeReader::Dematerialize(GlobalValue *GV) { assert(DeferredFunctionInfo.count(F) && "No info to read function later?"); // Just forget the function body, we can remat it later. - F->deleteBody(); + F->dropAllReferences(); } std::error_code BitcodeReader::MaterializeModule(Module *M) { -- cgit v1.1