Update LLD for D20550.

Differential Revision: http://reviews.llvm.org/D20704

llvm-svn: 270968
This commit is contained in:
Peter Collingbourne 2016-05-27 05:21:45 +00:00
parent 1eaa97f439
commit 5079f3b727
3 changed files with 24 additions and 2 deletions

View File

@ -218,8 +218,12 @@ void BitcodeCompiler::add(BitcodeFile &F) {
Keep.push_back(GV);
}
Mover.move(Obj->takeModule(), Keep,
[](GlobalValue &, IRMover::ValueAdder) {});
if (Error E = Mover.move(Obj->takeModule(), Keep,
[](GlobalValue &, IRMover::ValueAdder) {})) {
handleAllErrors(std::move(E), [&](const llvm::ErrorInfoBase &EIB) {
fatal("failed to link module " + F.getName() + ": " + EIB.message());
});
}
}
static void internalize(GlobalValue &GV) {

View File

@ -0,0 +1,6 @@
target triple = "x86_64-unknown-linux-gnu"
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
!0 = !{ i32 1, !"foo", i32 2 }
!llvm.module.flags = !{ !0 }

View File

@ -0,0 +1,12 @@
; RUN: llvm-as -o %t1.bc %s
; RUN: llvm-as -o %t2.bc %S/Inputs/irmover-error.ll
; RUN: not ld.lld -m elf_x86_64 %t1.bc %t2.bc -o %t 2>&1 | FileCheck %s
; CHECK: failed to link module {{.*}}2.bc: linking module flags 'foo': IDs have conflicting values
target triple = "x86_64-unknown-linux-gnu"
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
!0 = !{ i32 1, !"foo", i32 1 }
!llvm.module.flags = !{ !0 }