[PATCH] D17982: [lto] Don't lazy load metadata for now.

Rafael EspĂ­ndola via llvm-commits llvm-commits at lists.llvm.org
Wed Mar 9 10:03:46 PST 2016


Parsing twice is actually a time versus memory tradeoff.

This patch LGTM.

At some point we have to figure out a way of lazy loading metadata and not
copying metadata that is not used, but that is not now.

Cheers,
Rafael
On Mar 9, 2016 12:24 AM, "Sean Silva" <chisophugis at gmail.com> wrote:

> silvas created this revision.
> silvas added a reviewer: rafael.
> silvas added subscribers: llvm-commits, Bigcheese, ruiu.
> Herald added a subscriber: joker.eph.
>
> 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.
>
> http://reviews.llvm.org/D17982
>
> Files:
>   ELF/SymbolTable.cpp
>   test/ELF/lto/metadata.ll
>
> Index: test/ELF/lto/metadata.ll
> ===================================================================
> --- /dev/null
> +++ 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"}
> Index: ELF/SymbolTable.cpp
> ===================================================================
> --- ELF/SymbolTable.cpp
> +++ ELF/SymbolTable.cpp
> @@ -132,7 +132,7 @@
>        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)
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160309/1617b0e5/attachment.html>


More information about the llvm-commits mailing list