[llvm] r256224 - Handle empty Subprogram list when linking metadata.

Teresa Johnson via llvm-commits llvm-commits at lists.llvm.org
Mon Dec 21 17:17:19 PST 2015


Author: tejohnson
Date: Mon Dec 21 19:17:19 2015
New Revision: 256224

URL: http://llvm.org/viewvc/llvm-project?rev=256224&view=rev
Log:
Handle empty Subprogram list when linking metadata.

Use an iterator that handles an empty subprogram list.

Fixes PR25915.

Added:
    llvm/trunk/test/tools/gold/X86/pr25915.ll
Modified:
    llvm/trunk/lib/Linker/IRMover.cpp

Modified: llvm/trunk/lib/Linker/IRMover.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Linker/IRMover.cpp?rev=256224&r1=256223&r2=256224&view=diff
==============================================================================
--- llvm/trunk/lib/Linker/IRMover.cpp (original)
+++ llvm/trunk/lib/Linker/IRMover.cpp Mon Dec 21 19:17:19 2015
@@ -1193,7 +1193,7 @@ void IRLinker::findNeededSubprograms(Val
   for (unsigned I = 0, E = CompileUnits->getNumOperands(); I != E; ++I) {
     auto *CU = cast<DICompileUnit>(CompileUnits->getOperand(I));
     assert(CU && "Expected valid compile unit");
-    for (const Metadata *Op : CU->getSubprograms()->operands()) {
+    for (auto *Op : CU->getSubprograms()) {
       // Unless we were doing function importing and deferred metadata linking,
       // any needed SPs should have been mapped as they would be reached
       // from the function linked in (either on the function itself for linked

Added: llvm/trunk/test/tools/gold/X86/pr25915.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/gold/X86/pr25915.ll?rev=256224&view=auto
==============================================================================
--- llvm/trunk/test/tools/gold/X86/pr25915.ll (added)
+++ llvm/trunk/test/tools/gold/X86/pr25915.ll Mon Dec 21 19:17:19 2015
@@ -0,0 +1,17 @@
+; RUN: llvm-as %s -o %t.o
+; RUN: %gold -plugin %llvmshlibdir/LLVMgold.so \
+; RUN:    -plugin-opt=emit-llvm \
+; RUN:    -shared %t.o -o %t2
+; RUN: llvm-dis %t2 -o - | FileCheck %s
+; CHECK-NOT: subprograms
+
+!llvm.dbg.cu = !{!0}
+!llvm.module.flags = !{!3, !4}
+!llvm.ident = !{!5}
+
+!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 3.8.0 (trunk 256170) (llvm/trunk 256171)", isOptimized: false, runtimeVersion: 0, emissionKind: 1, enums: !2)
+!1 = !DIFile(filename: "pr25915.cc", directory: ".")
+!2 = !{}
+!3 = !{i32 2, !"Dwarf Version", i32 4}
+!4 = !{i32 2, !"Debug Info Version", i32 3}
+!5 = !{!"clang version 3.8.0 (trunk 256170) (llvm/trunk 256171)"}




More information about the llvm-commits mailing list