Skip to content

Commit a9499f5

Browse files
author
git apple-llvm automerger
committed
Merge commit 'bb12801607e5' from apple/stable/20210107 into swift/main
2 parents 1044437 + bb12801 commit a9499f5

File tree

2 files changed

+28
-12
lines changed

2 files changed

+28
-12
lines changed

llvm/lib/IR/DebugInfo.cpp

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -338,18 +338,13 @@ bool llvm::stripDebugInfo(Function &F) {
338338
Changed = true;
339339
I.setDebugLoc(DebugLoc());
340340
}
341-
}
342-
343-
auto *TermInst = BB.getTerminator();
344-
if (!TermInst)
345-
// This is invalid IR, but we may not have run the verifier yet
346-
continue;
347-
if (auto *LoopID = TermInst->getMetadata(LLVMContext::MD_loop)) {
348-
auto *NewLoopID = LoopIDsMap.lookup(LoopID);
349-
if (!NewLoopID)
350-
NewLoopID = LoopIDsMap[LoopID] = stripDebugLocFromLoopID(LoopID);
351-
if (NewLoopID != LoopID)
352-
TermInst->setMetadata(LLVMContext::MD_loop, NewLoopID);
341+
if (auto *LoopID = I.getMetadata(LLVMContext::MD_loop)) {
342+
auto *NewLoopID = LoopIDsMap.lookup(LoopID);
343+
if (!NewLoopID)
344+
NewLoopID = LoopIDsMap[LoopID] = stripDebugLocFromLoopID(LoopID);
345+
if (NewLoopID != LoopID)
346+
I.setMetadata(LLVMContext::MD_loop, NewLoopID);
347+
}
353348
}
354349
}
355350
return Changed;
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
; RUN: llvm-as -disable-output < %s -o /dev/null 2>&1 | FileCheck %s
2+
; RUN: llvm-as < %s -o - | llvm-dis - | FileCheck %s --check-prefix=CHECK-STRIP
3+
; CHECK: DICompileUnit not listed in llvm.dbg.cu
4+
; CHECK: ignoring invalid debug info in
5+
; CHECK-NOT: DICompileUnit not listed in llvm.dbg.cu
6+
declare hidden void @g() local_unnamed_addr #1 align 2
7+
define hidden void @f() {
8+
tail call void @g() #2, !llvm.loop !5
9+
ret void
10+
}
11+
!llvm.module.flags = !{!0, !1}
12+
!0 = !{i32 2, !"Dwarf Version", i32 4}
13+
!1 = !{i32 2, !"Debug Info Version", i32 3}
14+
; CHECK-STRIP: ![[MD:.*]] = distinct !{![[MD]], !"fake loop metadata"}
15+
!5 = distinct !{!5, !6, !6, !"fake loop metadata"}
16+
!6 = !DILocation(line: 1325, column: 3, scope: !7)
17+
!7 = distinct !DISubprogram(name: "f", scope: !8, file: !8, line: 1324, type: !9, scopeLine: 1324, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !11)
18+
!8 = !DIFile(filename: "/", directory: "f.cpp")
19+
!9 = !DISubroutineType(types: !10)
20+
!10 = !{}
21+
!11 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !8)

0 commit comments

Comments
 (0)