mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-14 17:28:53 +00:00
![Teresa Johnson](/assets/img/avatar_default.png)
Summary: I found that stripDebugInfo was still leaving significant amounts of debug info due to !llvm.loop that contained DILocation after stripping. The support for stripping debug info on !llvm.loop added in r293377 only removes a single DILocation. Enhance that to remove all DILocation from !llvm.loop. Reviewers: hfinkel, aprantl, dsanders Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D31117 llvm-svn: 298213
116 lines
4.0 KiB
LLVM
116 lines
4.0 KiB
LLVM
; RUN: opt -S -strip-debug < %s | FileCheck %s
|
|
|
|
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
|
|
target triple = "x86_64-apple-macosx10.12.0"
|
|
|
|
; CHECK-LABEL: _Z5test1v
|
|
; CHECK-NOT: br {{.*}} !llvm.loop
|
|
define void @_Z5test1v() !dbg !7 {
|
|
entry:
|
|
br label %while.body, !dbg !9
|
|
|
|
while.body:
|
|
call void @_Z3barv(), !dbg !10
|
|
br label %while.body, !dbg !11, !llvm.loop !13
|
|
|
|
return:
|
|
ret void, !dbg !14
|
|
}
|
|
|
|
declare void @_Z3barv()
|
|
|
|
; CHECK-LABEL: _Z5test2v
|
|
; CHECK: br {{.*}} !llvm.loop [[LOOP:![0-9]+]]
|
|
define void @_Z5test2v() !dbg !15 {
|
|
entry:
|
|
br label %while.body, !dbg !16
|
|
|
|
while.body:
|
|
call void @_Z3barv(), !dbg !17
|
|
br label %while.body, !dbg !18, !llvm.loop !19
|
|
|
|
return:
|
|
ret void, !dbg !21
|
|
}
|
|
|
|
; CHECK-LABEL: _Z5test3v
|
|
; CHECK: br {{.*}} !llvm.loop [[LOOP2:![0-9]+]]
|
|
define void @_Z5test3v() !dbg !22 {
|
|
entry:
|
|
br label %while.body, !dbg !23
|
|
|
|
while.body:
|
|
call void @_Z3barv(), !dbg !24
|
|
br label %while.body, !dbg !25, !llvm.loop !26
|
|
|
|
return:
|
|
ret void, !dbg !28
|
|
}
|
|
|
|
; CHECK-LABEL: _Z5test4v
|
|
; CHECK-NOT: br {{.*}} !llvm.loop
|
|
define void @_Z5test4v() !dbg !30 {
|
|
entry:
|
|
br label %while.body, !dbg !31
|
|
|
|
while.body:
|
|
call void @_Z3barv(), !dbg !32
|
|
br label %while.body, !dbg !33, !llvm.loop !34
|
|
|
|
return:
|
|
ret void, !dbg !36
|
|
}
|
|
|
|
!llvm.dbg.cu = !{!0}
|
|
!llvm.module.flags = !{!3, !4, !5}
|
|
!llvm.ident = !{!6}
|
|
|
|
!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 4.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !2)
|
|
!1 = !DIFile(filename: "test.cpp", directory: "/tmp")
|
|
!2 = !{}
|
|
!3 = !{i32 2, !"Dwarf Version", i32 4}
|
|
!4 = !{i32 2, !"Debug Info Version", i32 3}
|
|
!5 = !{i32 1, !"PIC Level", i32 2}
|
|
!6 = !{!"clang version 4.0.0"}
|
|
!7 = distinct !DISubprogram(name: "test1", scope: !1, file: !1, line: 3, type: !8, isLocal: false, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
|
|
!8 = !DISubroutineType(types: !2)
|
|
!9 = !DILocation(line: 4, column: 3, scope: !7)
|
|
!10 = !DILocation(line: 5, column: 5, scope: !7)
|
|
!11 = !DILocation(line: 4, column: 3, scope: !12)
|
|
!12 = !DILexicalBlockFile(scope: !7, file: !1, discriminator: 1)
|
|
!13 = distinct !{!13, !9}
|
|
!14 = !DILocation(line: 6, column: 1, scope: !7)
|
|
!15 = distinct !DISubprogram(name: "test2", scope: !1, file: !1, line: 8, type: !8, isLocal: false, isDefinition: true, scopeLine: 8, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
|
|
!16 = !DILocation(line: 8, column: 14, scope: !15)
|
|
!17 = !DILocation(line: 11, column: 5, scope: !15)
|
|
!18 = !DILocation(line: 10, column: 3, scope: !15)
|
|
!19 = distinct !{!19, !16, !20}
|
|
!20 = !{!"llvm.loop.unroll.enable"}
|
|
!21 = !DILocation(line: 12, column: 1, scope: !15)
|
|
!22 = distinct !DISubprogram(name: "test3", scope: !1, file: !1, line: 8, type: !8, isLocal: false, isDefinition: true, scopeLine: 8, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
|
|
!23 = !DILocation(line: 8, column: 14, scope: !22)
|
|
!24 = !DILocation(line: 11, column: 5, scope: !22)
|
|
!25 = !DILocation(line: 10, column: 3, scope: !22)
|
|
!26 = distinct !{!26, !23, !29, !27}
|
|
!27 = !{!"llvm.loop.unroll.enable"}
|
|
!28 = !DILocation(line: 12, column: 1, scope: !22)
|
|
!29 = !DILocation(line: 12, column: 1, scope: !22)
|
|
!30 = distinct !DISubprogram(name: "test4", scope: !1, file: !1, line: 8, type: !8, isLocal: false, isDefinition: true, scopeLine: 8, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
|
|
!31 = !DILocation(line: 8, column: 14, scope: !30)
|
|
!32 = !DILocation(line: 11, column: 5, scope: !30)
|
|
!33 = !DILocation(line: 10, column: 3, scope: !30)
|
|
!34 = distinct !{!34, !31, !35}
|
|
!35 = !DILocation(line: 12, column: 1, scope: !30)
|
|
!36 = !DILocation(line: 12, column: 1, scope: !30)
|
|
|
|
; CHECK-NOT: !DICompileUnit
|
|
; CHECK-NOT: !DIFile
|
|
; CHECK-NOT: !DISubprogram
|
|
; CHECK-NOT: !DISubroutineType
|
|
; CHECK-NOT: !DILocation
|
|
; CHECK-NOT: !DILexicalBlockFile
|
|
; CHECK: [[LOOP]] = distinct !{[[LOOP]], [[LOOP_UNROLL:![0-9]+]]}
|
|
; CHECK-NEXT: [[LOOP_UNROLL]] = !{!"llvm.loop.unroll.enable"}
|
|
; CHECK: [[LOOP2]] = distinct !{[[LOOP2]], [[LOOP_UNROLL]]}
|
|
; CHECK-NOT: !DILocation
|