diff options
-rw-r--r-- | llvm/lib/Linker/IRMover.cpp | 10 | ||||
-rw-r--r-- | llvm/test/ThinLTO/X86/index-const-prop.ll | 2 | ||||
-rw-r--r-- | llvm/test/ThinLTO/X86/index-const-prop2.ll | 2 |
3 files changed, 12 insertions, 2 deletions
diff --git a/llvm/lib/Linker/IRMover.cpp b/llvm/lib/Linker/IRMover.cpp index 72e20ae0ba1..afbc57abfcc 100644 --- a/llvm/lib/Linker/IRMover.cpp +++ b/llvm/lib/Linker/IRMover.cpp @@ -1062,6 +1062,16 @@ void IRLinker::prepareCompileUnitsForImport() { ValueMap.MD()[CU->getRawEnumTypes()].reset(nullptr); ValueMap.MD()[CU->getRawMacros()].reset(nullptr); ValueMap.MD()[CU->getRawRetainedTypes()].reset(nullptr); + // The original definition (or at least its debug info - if the variable is + // internalized an optimized away) will remain in the source module, so + // there's no need to import them. + // If LLVM ever does more advanced optimizations on global variables + // (removing/localizing write operations, for instance) that can track + // through debug info, this decision may need to be revisited - but do so + // with care when it comes to debug info size. Emitting small CUs containing + // only a few imported entities into every destination module may be very + // size inefficient. + ValueMap.MD()[CU->getRawGlobalVariables()].reset(nullptr); // Imported entities only need to be mapped in if they have local // scope, as those might correspond to an imported entity inside a diff --git a/llvm/test/ThinLTO/X86/index-const-prop.ll b/llvm/test/ThinLTO/X86/index-const-prop.ll index cbf7006b3dc..9dac8b81b91 100644 --- a/llvm/test/ThinLTO/X86/index-const-prop.ll +++ b/llvm/test/ThinLTO/X86/index-const-prop.ll @@ -21,7 +21,7 @@ ; IMPORT: @gFoo.llvm.0 = internal unnamed_addr global i32 1, align 4, !dbg !0 ; IMPORT-NEXT: @gBar = internal local_unnamed_addr global i32 2, align 4, !dbg !5 -; IMPORT: !DICompileUnit({{.*}}, globals: !{{[0-9]+}}) +; IMPORT: !DICompileUnit({{.*}}) ; OPTIMIZE: define i32 @main ; OPTIMIZE-NEXT: ret i32 3 diff --git a/llvm/test/ThinLTO/X86/index-const-prop2.ll b/llvm/test/ThinLTO/X86/index-const-prop2.ll index d6c8ec80661..96b7593dd4f 100644 --- a/llvm/test/ThinLTO/X86/index-const-prop2.ll +++ b/llvm/test/ThinLTO/X86/index-const-prop2.ll @@ -34,7 +34,7 @@ ; IMPORT: @gFoo.llvm.0 = internal unnamed_addr global i32 1, align 4 ; IMPORT-NEXT: @gBar = internal local_unnamed_addr global i32 2, align 4 -; IMPORT: !DICompileUnit({{.*}}, globals: !{{[0-9]+}}) +; IMPORT: !DICompileUnit({{.*}}) ; CODEGEN: i32 @main() ; CODEGEN-NEXT: ret i32 3 |