From 50d27ff3c1f7944def79067b937490b56aedf25b Mon Sep 17 00:00:00 2001 From: Sean Silva Date: Wed, 9 Mar 2016 18:38:40 +0000 Subject: [PATCH] [lto] Don't lazy load metadata for now. Summary: At the very least we hit Assertion failed: (((Flags & RF_HaveUnmaterializedMetadata) || Node->isResolved()) && "Unexpected unresolved node"), function MapMetadataImpl, file /Users/Sean/pg/llvm/lib/Transforms/Utils/ValueMapper.cpp, line 375. on the included test case. We currently do things like parse the module twice to keep the implementation minimal. I think it makes sense to add start with eager loading for similar reasons. Reviewers: rafael Subscribers: ruiu, Bigcheese, llvm-commits, joker.eph Differential Revision: http://reviews.llvm.org/D17982 llvm-svn: 263045 --- lld/ELF/SymbolTable.cpp | 2 +- lld/test/ELF/lto/metadata.ll | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 lld/test/ELF/lto/metadata.ll diff --git a/lld/ELF/SymbolTable.cpp b/lld/ELF/SymbolTable.cpp index cd8c8d2..8e8d77f 100644 --- a/lld/ELF/SymbolTable.cpp +++ b/lld/ELF/SymbolTable.cpp @@ -132,7 +132,7 @@ static void addBitcodeFile(IRMover &Mover, BitcodeFile &F, MemoryBuffer::getMemBuffer(F.MB, false); std::unique_ptr M = check(getLazyBitcodeModule(std::move(Buffer), Context, - /*ShouldLazyLoadMetadata*/ true)); + /*ShouldLazyLoadMetadata*/ false)); std::vector Keep; for (SymbolBody *B : F.getSymbols()) { if (B->repl() != B) diff --git a/lld/test/ELF/lto/metadata.ll b/lld/test/ELF/lto/metadata.ll new file mode 100644 index 0000000..3e73de5 --- /dev/null +++ b/lld/test/ELF/lto/metadata.ll @@ -0,0 +1,13 @@ +; REQUIRES: x86 +; RUN: llvm-as %s -o %t1.o +; RUN: ld.lld -m elf_x86_64 %t1.o %t1.o -o %t.so -shared + +target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64-unknown-linux-gnu" + +define weak void @foo(i32* %p) { + store i32 5, i32* %p, align 4, !tbaa !0 + ret void +} + +!0 = !{!"Simple C/C++ TBAA"} -- 2.7.4