[lld] r263045 - [lto] Don't lazy load metadata for now.

Sean Silva via llvm-commits llvm-commits at lists.llvm.org
Wed Mar 9 10:38:40 PST 2016


Author: silvas
Date: Wed Mar  9 12:38:40 2016
New Revision: 263045

URL: http://llvm.org/viewvc/llvm-project?rev=263045&view=rev
Log:
[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

Added:
    lld/trunk/test/ELF/lto/metadata.ll
Modified:
    lld/trunk/ELF/SymbolTable.cpp

Modified: lld/trunk/ELF/SymbolTable.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/SymbolTable.cpp?rev=263045&r1=263044&r2=263045&view=diff
==============================================================================
--- lld/trunk/ELF/SymbolTable.cpp (original)
+++ lld/trunk/ELF/SymbolTable.cpp Wed Mar  9 12:38:40 2016
@@ -132,7 +132,7 @@ static void addBitcodeFile(IRMover &Move
       MemoryBuffer::getMemBuffer(F.MB, false);
   std::unique_ptr<Module> M =
       check(getLazyBitcodeModule(std::move(Buffer), Context,
-                                 /*ShouldLazyLoadMetadata*/ true));
+                                 /*ShouldLazyLoadMetadata*/ false));
   std::vector<GlobalValue *> Keep;
   for (SymbolBody *B : F.getSymbols()) {
     if (B->repl() != B)

Added: lld/trunk/test/ELF/lto/metadata.ll
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/lto/metadata.ll?rev=263045&view=auto
==============================================================================
--- lld/trunk/test/ELF/lto/metadata.ll (added)
+++ lld/trunk/test/ELF/lto/metadata.ll Wed Mar  9 12:38:40 2016
@@ -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"}




More information about the llvm-commits mailing list