1+ ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
12; RUN: opt -S -passes=jump-threading < %s | FileCheck %s
23
3- ; @process_block_branch checks that JumpThreading's processBlock() propagates
4+ ; @process_block_branch checks that JumpThreading's processBlock() propagates
45; the debug location to the new branch instruction.
56
67; @process_threadable_edges_branch checks that JumpThreading's processThreadableEdges()
78; propagates the debug location to the new branch instruction.
89
910define i32 @process_block_branch (i32 %action ) #0 !dbg !5 {
1011; CHECK-LABEL: define i32 @process_block_branch(
11- ; CHECK: for.cond:
12- ; CHECK-NEXT: br label %for.cond, !dbg [[DBG10:![0-9]+]]
12+ ; CHECK-SAME: i32 [[ACTION:%.*]]) #[[ATTR0:[0-9]+]] !dbg [[DBG5:![0-9]+]] {
13+ ; CHECK-NEXT: [[ENTRY:.*:]]
14+ ; CHECK-NEXT: switch i32 [[ACTION]], label %[[IF_THEN:.*]] [
15+ ; CHECK-NEXT: i32 1, label %[[IF_THEN]]
16+ ; CHECK-NEXT: i32 0, label %[[IF_THEN]]
17+ ; CHECK-NEXT: ], !dbg [[DBG8:![0-9]+]]
18+ ; CHECK: [[IF_THEN]]:
19+ ; CHECK-NEXT: ret i32 undef, !dbg [[DBG9:![0-9]+]]
1320;
1421entry:
1522 switch i32 %action , label %lor.rhs [
@@ -35,8 +42,18 @@ for.body: ; preds = %for.cond
3542
3643define void @process_threadable_edges_branch (i32 %value ) #0 !dbg !15 {
3744; CHECK-LABEL: define void @process_threadable_edges_branch(
38- ; CHECK: L0:
39- ; CHECK: br label %L2, !dbg [[DBG17:![0-9]+]]
45+ ; CHECK-SAME: i32 [[VALUE:%.*]]) #[[ATTR0]] !dbg [[DBG10:![0-9]+]] {
46+ ; CHECK-NEXT: [[ENTRY:.*:]]
47+ ; CHECK-NEXT: [[CMP:%.*]] = icmp eq i32 [[VALUE]], 32, !dbg [[DBG11:![0-9]+]]
48+ ; CHECK-NEXT: [[ADD:%.*]] = add i32 [[VALUE]], 64, !dbg [[DBG12:![0-9]+]]
49+ ; CHECK-NEXT: br i1 [[CMP]], label %[[L0:.*]], label %[[L2:.*]], !dbg [[DBG13:![0-9]+]]
50+ ; CHECK: [[L0]]:
51+ ; CHECK-NEXT: [[TMP0:%.*]] = call i32 @f2(), !dbg [[DBG14:![0-9]+]]
52+ ; CHECK-NEXT: [[TMP1:%.*]] = call i32 @f2(), !dbg [[DBG15:![0-9]+]]
53+ ; CHECK-NEXT: br label %[[L2]], !dbg [[DBG16:![0-9]+]]
54+ ; CHECK: [[L2]]:
55+ ; CHECK-NEXT: call void @f4(i32 [[ADD]]), !dbg [[DBG17:![0-9]+]]
56+ ; CHECK-NEXT: ret void, !dbg [[DBG18:![0-9]+]]
4057;
4158entry:
4259 %cmp = icmp eq i32 %value , 32 , !dbg !16
@@ -78,10 +95,6 @@ attributes #0 = { nounwind }
7895!llvm.debugify = !{!2 , !3 }
7996!llvm.module.flags = !{!4 }
8097
81- ;.
82- ; CHECK: [[DBG10]] = !DILocation(line: 6,
83- ; CHECK: [[DBG17]] = !DILocation(line: 13,
84- ;.
8598
8699!0 = distinct !DICompileUnit (language: DW_LANG_C, file: !1 , producer: "debugify" , isOptimized: true , runtimeVersion: 0 , emissionKind: FullDebug)
87100!1 = !DIFile (filename: "temp.ll" , directory: "/" )
@@ -111,3 +124,21 @@ attributes #0 = { nounwind }
111124!25 = !DILocation (line: 17 , column: 1 , scope: !15 )
112125!26 = !DILocation (line: 18 , column: 1 , scope: !15 )
113126!27 = !DILocation (line: 19 , column: 1 , scope: !15 )
127+ ;.
128+ ; CHECK: [[META0:![0-9]+]] = distinct !DICompileUnit(language: DW_LANG_C, file: [[META1:![0-9]+]], producer: "debugify", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug)
129+ ; CHECK: [[META1]] = !DIFile(filename: "temp.ll", directory: {{.*}})
130+ ; CHECK: [[DBG5]] = distinct !DISubprogram(name: "process_block_branch", linkageName: "process_block_branch", scope: null, file: [[META1]], line: 1, type: [[META6:![0-9]+]], scopeLine: 1, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: [[META0]])
131+ ; CHECK: [[META6]] = !DISubroutineType(types: [[META7:![0-9]+]])
132+ ; CHECK: [[META7]] = !{}
133+ ; CHECK: [[DBG8]] = !DILocation(line: 1, column: 1, scope: [[DBG5]])
134+ ; CHECK: [[DBG9]] = !DILocation(line: 2, column: 1, scope: [[DBG5]])
135+ ; CHECK: [[DBG10]] = distinct !DISubprogram(name: "process_threadable_edges_branch", linkageName: "process_threadable_edges_branch", scope: null, file: [[META1]], line: 8, type: [[META6]], scopeLine: 8, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: [[META0]])
136+ ; CHECK: [[DBG11]] = !DILocation(line: 8, column: 1, scope: [[DBG10]])
137+ ; CHECK: [[DBG12]] = !DILocation(line: 9, column: 1, scope: [[DBG10]])
138+ ; CHECK: [[DBG13]] = !DILocation(line: 10, column: 1, scope: [[DBG10]])
139+ ; CHECK: [[DBG14]] = !DILocation(line: 11, column: 1, scope: [[DBG10]])
140+ ; CHECK: [[DBG15]] = !DILocation(line: 12, column: 1, scope: [[DBG10]])
141+ ; CHECK: [[DBG16]] = !DILocation(line: 13, column: 1, scope: [[DBG10]])
142+ ; CHECK: [[DBG17]] = !DILocation(line: 16, column: 1, scope: [[DBG10]])
143+ ; CHECK: [[DBG18]] = !DILocation(line: 17, column: 1, scope: [[DBG10]])
144+ ;.
0 commit comments