aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
diff options
context:
space:
mode:
authorPetar Jovanovic <petar.jovanovic@imgtec.com>2014-09-23 12:54:19 +0000
committerPetar Jovanovic <petar.jovanovic@imgtec.com>2014-09-23 12:54:19 +0000
commit7480e4db5e629e8410c9fed37b3f9a16bb57a8fa (patch)
treec08583030536877e89eae4c00a76e68ad87ca6e0 /llvm/lib/Bitcode/Reader/BitcodeReader.cpp
parent40592d2dec009c2bb3204c75d195f42ebcada739 (diff)
downloadllvm-7480e4db5e629e8410c9fed37b3f9a16bb57a8fa.zip
llvm-7480e4db5e629e8410c9fed37b3f9a16bb57a8fa.tar.gz
llvm-7480e4db5e629e8410c9fed37b3f9a16bb57a8fa.tar.bz2
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
Diffstat (limited to 'llvm/lib/Bitcode/Reader/BitcodeReader.cpp')
-rw-r--r--llvm/lib/Bitcode/Reader/BitcodeReader.cpp2
1 files changed, 1 insertions, 1 deletions
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) {