diff options
author | Reid Kleckner <rnk@google.com> | 2017-08-23 20:31:27 +0000 |
---|---|---|
committer | Reid Kleckner <rnk@google.com> | 2017-08-23 20:31:27 +0000 |
commit | 6d353348e58105098363ed5be162a2f9c044d342 (patch) | |
tree | 8f67617b050d1287cf830706bc242c9c5ce4d0d8 /llvm/test/Transforms | |
parent | c01994b5fe93542f7d3c62726c67635652c92df2 (diff) | |
download | bcm5719-llvm-6d353348e58105098363ed5be162a2f9c044d342.tar.gz bcm5719-llvm-6d353348e58105098363ed5be162a2f9c044d342.zip |
Parse and print DIExpressions inline to ease IR and MIR testing
Summary:
Most DIExpressions are empty or very simple. When they are complex, they
tend to be unique, so checking them inline is reasonable.
This also avoids the need for CodeGen passes to append to the
llvm.dbg.mir named md node.
See also PR22780, for making DIExpression not be an MDNode.
Reviewers: aprantl, dexonsmith, dblaikie
Subscribers: qcolombet, javed.absar, eraman, hiraditya, llvm-commits
Differential Revision: https://reviews.llvm.org/D37075
llvm-svn: 311594
Diffstat (limited to 'llvm/test/Transforms')
11 files changed, 27 insertions, 45 deletions
diff --git a/llvm/test/Transforms/GlobalMerge/debug-info.ll b/llvm/test/Transforms/GlobalMerge/debug-info.ll index 1f324f38c12..06c3d8ee470 100644 --- a/llvm/test/Transforms/GlobalMerge/debug-info.ll +++ b/llvm/test/Transforms/GlobalMerge/debug-info.ll @@ -15,9 +15,8 @@ define void @use1() { } ; CHECK: [[A]] = !DIGlobalVariableExpression(var: [[AVAR:![0-9]+]]) ; CHECK: [[AVAR]] = !DIGlobalVariable(name: "a", scope: null, type: !2, isLocal: false, isDefinition: true) -; CHECK: [[B]] = !DIGlobalVariableExpression(var: [[BVAR:![0-9]+]], expr: [[EXPR:![0-9]+]]) +; CHECK: [[B]] = !DIGlobalVariableExpression(var: [[BVAR:![0-9]+]], expr: !DIExpression(DW_OP_plus_uconst, 4)) ; CHECK: [[BVAR]] = !DIGlobalVariable(name: "b", scope: null, type: !2, isLocal: false, isDefinition: true) -; CHECK: [[EXPR]] = !DIExpression(DW_OP_plus_uconst, 4) !llvm.module.flags = !{!4, !5} diff --git a/llvm/test/Transforms/Inline/inline_dbg_declare.ll b/llvm/test/Transforms/Inline/inline_dbg_declare.ll index e2d8551a908..918b9b6f679 100644 --- a/llvm/test/Transforms/Inline/inline_dbg_declare.ll +++ b/llvm/test/Transforms/Inline/inline_dbg_declare.ll @@ -43,7 +43,7 @@ define void @bar(float* %dst) #0 !dbg !9 { entry: ; CHECK: [[x_addr_i:%[a-zA-Z0-9.]+]] = alloca float, align 4 -; CHECK-NEXT: void @llvm.dbg.declare(metadata float* [[x_addr_i]], metadata [[m23:![0-9]+]], metadata !{{[0-9]+}}), !dbg [[m24:![0-9]+]] +; CHECK-NEXT: void @llvm.dbg.declare(metadata float* [[x_addr_i]], metadata [[m23:![0-9]+]], metadata !DIExpression()), !dbg [[m24:![0-9]+]] %dst.addr = alloca float*, align 4 store float* %dst, float** %dst.addr, align 4 diff --git a/llvm/test/Transforms/InstCombine/debuginfo-dce.ll b/llvm/test/Transforms/InstCombine/debuginfo-dce.ll index 41f05271838..efc68abf6aa 100644 --- a/llvm/test/Transforms/InstCombine/debuginfo-dce.ll +++ b/llvm/test/Transforms/InstCombine/debuginfo-dce.ll @@ -32,7 +32,7 @@ entry: ; CHECK: define void @salvage_load ; CHECK-NEXT: entry: ; CHECK-NEXT: call void @llvm.dbg.value(metadata %struct.entry** %queue, -; CHECK-SAME: metadata ![[LOAD_EXPR:[0-9]+]]) +; CHECK-SAME: metadata !DIExpression(DW_OP_deref, DW_OP_plus_uconst, 0)) store %struct.entry* %1, %struct.entry** %im_not_dead, align 8 ret void, !dbg !21 } @@ -46,7 +46,7 @@ entry: ; CHECK: define void @salvage_bitcast ; CHECK-NEXT: entry: ; CHECK-NEXT: call void @llvm.dbg.value(metadata %struct.entry* %queue, -; CHECK-SAME: metadata ![[BITCAST_EXPR:[0-9]+]]) +; CHECK-SAME: metadata !DIExpression(DW_OP_plus_uconst, 0)) store i8* %1, i8** %im_not_dead, align 8 ret void, !dbg !23 } @@ -60,7 +60,7 @@ entry: ; CHECK: define void @salvage_gep0 ; CHECK-NEXT: entry: ; CHECK-NEXT: call void @llvm.dbg.value(metadata %struct.entry* %queue, -; CHECK-SAME: metadata ![[GEP0_EXPR:[0-9]+]]) +; CHECK-SAME: metadata !DIExpression(DW_OP_constu, 8, DW_OP_minus, DW_OP_plus_uconst, 0, DW_OP_stack_value)) store %struct.entry** %1, %struct.entry*** %im_not_dead, align 8 ret void, !dbg !26 } @@ -74,7 +74,7 @@ entry: ; CHECK: define void @salvage_gep1 ; CHECK-NEXT: entry: ; CHECK-NEXT: call void @llvm.dbg.value(metadata %struct.entry* %queue, -; CHECK-SAME: metadata ![[GEP1_EXPR:[0-9]+]]) +; CHECK-SAME: metadata !DIExpression(DW_OP_constu, 8, DW_OP_minus, DW_OP_stack_value, DW_OP_LLVM_fragment, 0, 32)) store %struct.entry** %1, %struct.entry*** %im_not_dead, align 8 ret void, !dbg !29 } @@ -88,18 +88,11 @@ entry: ; CHECK: define void @salvage_gep2 ; CHECK-NEXT: entry: ; CHECK-NEXT: call void @llvm.dbg.value(metadata %struct.entry* %queue, -; CHECK-SAME: metadata ![[GEP2_EXPR:[0-9]+]]) +; CHECK-SAME: metadata !DIExpression(DW_OP_constu, 8, DW_OP_minus, DW_OP_stack_value)) store %struct.entry** %1, %struct.entry*** %im_not_dead, align 8 ret void, !dbg !32 } -; CHECK: ![[LOAD_EXPR]] = !DIExpression(DW_OP_deref, DW_OP_plus_uconst, 0) -; CHECK: ![[BITCAST_EXPR]] = !DIExpression(DW_OP_plus_uconst, 0) -; CHECK: ![[GEP0_EXPR]] = !DIExpression(DW_OP_constu, 8, DW_OP_minus, DW_OP_plus_uconst, 0, DW_OP_stack_value) -; CHECK: ![[GEP1_EXPR]] = !DIExpression(DW_OP_constu, 8, DW_OP_minus, DW_OP_stack_value, -; CHECK-SAME: DW_OP_LLVM_fragment, 0, 32) -; CHECK: ![[GEP2_EXPR]] = !DIExpression(DW_OP_constu, 8, DW_OP_minus, DW_OP_stack_value) - ; Function Attrs: nounwind readnone declare void @llvm.dbg.value(metadata, metadata, metadata) #1 diff --git a/llvm/test/Transforms/LoopRotate/phi-dbgvalue.ll b/llvm/test/Transforms/LoopRotate/phi-dbgvalue.ll index 6aa2fdb9f2b..6254c55e8f3 100644 --- a/llvm/test/Transforms/LoopRotate/phi-dbgvalue.ll +++ b/llvm/test/Transforms/LoopRotate/phi-dbgvalue.ll @@ -3,10 +3,12 @@ ;CHECK-LABEL: func ;CHECK-LABEL: entry ;CHECK-NEXT: tail call void @llvm.dbg.value(metadata i32 %a -;CHECK-NEXT: tail call void @llvm.dbg.value(metadata i32 1, metadata !13, metadata !11), !dbg !15 +;CHECK-NEXT: tail call void @llvm.dbg.value(metadata i32 1, metadata ![[I_VAR:[0-9]+]], metadata !DIExpression()) ;CHECK-LABEL: for.body: ;CHECK-NEXT: [[I:%.*]] = phi i32 [ 1, %entry ], [ %inc, %for.body ] -;CHECK-NEXT: tail call void @llvm.dbg.value(metadata i32 [[I]], metadata !13, metadata !11), !dbg !15 +;CHECK-NEXT: tail call void @llvm.dbg.value(metadata i32 [[I]], metadata ![[I_VAR]], metadata !DIExpression()) + +; CHECK: ![[I_VAR]] = !DILocalVariable(name: "i",{{.*}}) ; Function Attrs: noinline nounwind define void @func(i32 %a) local_unnamed_addr #0 !dbg !6 { diff --git a/llvm/test/Transforms/Mem2Reg/debug-alloca-phi.ll b/llvm/test/Transforms/Mem2Reg/debug-alloca-phi.ll index 787b2463364..7b47c70e1e6 100644 --- a/llvm/test/Transforms/Mem2Reg/debug-alloca-phi.ll +++ b/llvm/test/Transforms/Mem2Reg/debug-alloca-phi.ll @@ -14,17 +14,15 @@ for.cond: ; CHECK: %[[PHI:.*]] = phi i8 [ 0, %entry ], [ %0, %for.cond ] %entryN = load i8, i8* %entry1, align 8, !dbg !20 ; CHECK: call void @llvm.dbg.value(metadata i8 %[[PHI]], -; CHECK-SAME: metadata ![[EXPR:[0-9]+]]) +; CHECK-SAME: metadata !DIExpression()) %0 = add i8 %entryN, 1 ; CHECK: %0 = add i8 %[[PHI]], 1 ; CHECK: call void @llvm.dbg.value(metadata i8 %0, -; CHECK-SAME: metadata ![[EXPR]]) +; CHECK-SAME: metadata !DIExpression()) store i8 %0, i8* %entry1, align 8, !dbg !20 br label %for.cond, !dbg !20 } -; CHECK: ![[EXPR]] = !DIExpression() - declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 attributes #0 = { nounwind ssp uwtable } diff --git a/llvm/test/Transforms/MergeFunc/mergefunc-preserve-debug-info.ll b/llvm/test/Transforms/MergeFunc/mergefunc-preserve-debug-info.ll index 57d5aef6d65..d24c7a7c48d 100644 --- a/llvm/test/Transforms/MergeFunc/mergefunc-preserve-debug-info.ll +++ b/llvm/test/Transforms/MergeFunc/mergefunc-preserve-debug-info.ll @@ -87,17 +87,17 @@ define i32 @maxB(i32 %x, i32 %y) !dbg !34 { ; OPTIMIZATION_LEVEL_0-NEXT: %x.addr = alloca i32, align 4 ; OPTIMIZATION_LEVEL_0-NEXT: %y.addr = alloca i32, align 4 ; OPTIMIZATION_LEVEL_0-NEXT: store i32 %x, i32* %x.addr, align 4 -; OPTIMIZATION_LEVEL_0-NEXT: call void @llvm.dbg.declare(metadata i32* %x.addr, metadata !{{[0-9]+}}, metadata !{{[0-9]+}}), !dbg !{{[0-9]+}} +; OPTIMIZATION_LEVEL_0-NEXT: call void @llvm.dbg.declare(metadata i32* %x.addr, metadata !{{[0-9]+}}, metadata !DIExpression()), !dbg !{{[0-9]+}} ; OPTIMIZATION_LEVEL_0-NEXT: store i32 %y, i32* %y.addr, align 4 -; OPTIMIZATION_LEVEL_0-NEXT: call void @llvm.dbg.declare(metadata i32* %y.addr, metadata !{{[0-9]+}}, metadata !{{[0-9]+}}), !dbg !{{[0-9]+}} +; OPTIMIZATION_LEVEL_0-NEXT: call void @llvm.dbg.declare(metadata i32* %y.addr, metadata !{{[0-9]+}}, metadata !DIExpression()), !dbg !{{[0-9]+}} ; OPTIMIZATION_LEVEL_0-NEXT: %0 = tail call i32 @maxA(i32 %x, i32 %y), !dbg !{{[0-9]+}} ; OPTIMIZATION_LEVEL_0-NEXT: ret i32 %0, !dbg !{{[0-9]+}} ; OPTIMIZATION_LEVEL_0-NEXT: } ; OPTIMIZATION_LEVEL_2: define i32 @maxB(i32 %x, i32 %y) ; OPTIMIZATION_LEVEL_2-NEXT: entry: -; OPTIMIZATION_LEVEL_2-NEXT: tail call void @llvm.dbg.value(metadata i32 %x, metadata !{{[0-9]+}}, metadata !{{[0-9]+}}), !dbg !{{[0-9]+}} -; OPTIMIZATION_LEVEL_2-NEXT: tail call void @llvm.dbg.value(metadata i32 %y, metadata !{{[0-9]+}}, metadata !{{[0-9]+}}), !dbg !{{[0-9]+}} +; OPTIMIZATION_LEVEL_2-NEXT: tail call void @llvm.dbg.value(metadata i32 %x, metadata !{{[0-9]+}}, metadata !DIExpression()), !dbg !{{[0-9]+}} +; OPTIMIZATION_LEVEL_2-NEXT: tail call void @llvm.dbg.value(metadata i32 %y, metadata !{{[0-9]+}}, metadata !DIExpression()), !dbg !{{[0-9]+}} ; OPTIMIZATION_LEVEL_2-NEXT: %0 = tail call i32 @maxA(i32 %x, i32 %y) #{{[0-9]+}}, !dbg !{{[0-9]+}} ; OPTIMIZATION_LEVEL_2-NEXT: ret i32 %0, !dbg !{{[0-9]+}} ; OPTIMIZATION_LEVEL_2-NEXT: } diff --git a/llvm/test/Transforms/SROA/dbg-single-piece.ll b/llvm/test/Transforms/SROA/dbg-single-piece.ll index d9a931f1d74..b174e5dc764 100644 --- a/llvm/test/Transforms/SROA/dbg-single-piece.ll +++ b/llvm/test/Transforms/SROA/dbg-single-piece.ll @@ -11,9 +11,8 @@ entry: ; Checks that SROA still inserts a bit_piece expression, even if it produces only one piece ; (as long as that piece is smaller than the whole thing) ; CHECK-NOT: call void @llvm.dbg.value -; CHECK: call void @llvm.dbg.value(metadata %foo* undef, {{.*}}, metadata ![[BIT_PIECE:[0-9]+]]), !dbg +; CHECK: call void @llvm.dbg.value(metadata %foo* undef, {{.*}}, metadata !DIExpression(DW_OP_LLVM_fragment, 64, 64)), !dbg ; CHECK-NOT: call void @llvm.dbg.value -; CHECK: ![[BIT_PIECE]] = !DIExpression(DW_OP_LLVM_fragment, 64, 64) %0 = bitcast %foo* %retval to i8* %1 = getelementptr inbounds i8, i8* %0, i64 8 %2 = bitcast i8* %1 to %foo** diff --git a/llvm/test/Transforms/SafeStack/X86/debug-loc-dynamic.ll b/llvm/test/Transforms/SafeStack/X86/debug-loc-dynamic.ll index aedd9612e94..b96f6abc59f 100644 --- a/llvm/test/Transforms/SafeStack/X86/debug-loc-dynamic.ll +++ b/llvm/test/Transforms/SafeStack/X86/debug-loc-dynamic.ll @@ -14,7 +14,7 @@ entry: %0 = zext i32 %n to i64, !dbg !16 ; CHECK: store i8* %[[VLA:.*]], i8** @__safestack_unsafe_stack_ptr -; CHECK: tail call void @llvm.dbg.value(metadata i8* %[[VLA]], metadata ![[TYPE:.*]], metadata ![[EXPR:.*]]) +; CHECK: tail call void @llvm.dbg.value(metadata i8* %[[VLA]], metadata ![[TYPE:.*]], metadata !DIExpression(DW_OP_deref)) ; CHECK: call void @capture({{.*}} %[[VLA]]) %vla = alloca i8, i64 %0, align 16, !dbg !16 @@ -50,7 +50,6 @@ declare void @llvm.dbg.value(metadata, metadata, metadata) !15 = !DILocation(line: 2, column: 12, scope: !6) !16 = !DILocation(line: 3, column: 3, scope: !6) -; CHECK-DAG: ![[EXPR]] = !DIExpression(DW_OP_deref) !17 = !DIExpression(DW_OP_deref) !18 = !DILocation(line: 3, column: 8, scope: !6) !19 = !DILocation(line: 4, column: 3, scope: !6) diff --git a/llvm/test/Transforms/SafeStack/X86/debug-loc.ll b/llvm/test/Transforms/SafeStack/X86/debug-loc.ll index d6b217142bf..0a315d65e6b 100644 --- a/llvm/test/Transforms/SafeStack/X86/debug-loc.ll +++ b/llvm/test/Transforms/SafeStack/X86/debug-loc.ll @@ -20,9 +20,9 @@ entry: ; dbg.declare for %zzz and %xxx are gone; replaced with dbg.declare based off the unsafe stack pointer ; CHECK-NOT: call void @llvm.dbg.declare -; CHECK: call void @llvm.dbg.declare(metadata i8* %[[USP]], metadata ![[VAR_ARG:.*]], metadata ![[EXPR_ARG:.*]]) +; CHECK: call void @llvm.dbg.declare(metadata i8* %[[USP]], metadata ![[VAR_ARG:.*]], metadata !DIExpression(DW_OP_constu, 104, DW_OP_minus)) ; CHECK-NOT: call void @llvm.dbg.declare -; CHECK: call void @llvm.dbg.declare(metadata i8* %[[USP]], metadata ![[VAR_LOCAL:.*]], metadata ![[EXPR_LOCAL:.*]]) +; CHECK: call void @llvm.dbg.declare(metadata i8* %[[USP]], metadata ![[VAR_LOCAL:.*]], metadata !DIExpression(DW_OP_constu, 208, DW_OP_minus)) ; CHECK-NOT: call void @llvm.dbg.declare call void @Capture(%struct.S* %zzz), !dbg !23 @@ -37,10 +37,8 @@ entry: ; CHECK-DAG: ![[VAR_ARG]] = !DILocalVariable(name: "zzz" ; 100 aligned up to 8 -; CHECK-DAG: ![[EXPR_ARG]] = !DIExpression(DW_OP_constu, 104, DW_OP_minus ; CHECK-DAG: ![[VAR_LOCAL]] = !DILocalVariable(name: "xxx" -; CHECK-DAG: ![[EXPR_LOCAL]] = !DIExpression(DW_OP_constu, 208, DW_OP_minus ; Function Attrs: nounwind readnone declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 diff --git a/llvm/test/Transforms/SafeStack/X86/debug-loc2.ll b/llvm/test/Transforms/SafeStack/X86/debug-loc2.ll index ac774650cad..20a9c37bc05 100644 --- a/llvm/test/Transforms/SafeStack/X86/debug-loc2.ll +++ b/llvm/test/Transforms/SafeStack/X86/debug-loc2.ll @@ -25,7 +25,7 @@ entry: tail call void @llvm.dbg.value(metadata i32* %x1, metadata !10, metadata !24), !dbg !16 ; Supported dbg.value: rewritted based on the [[USP]] value. -; CHECK: call void @llvm.dbg.value(metadata i8* %[[USP]], metadata ![[X1:.*]], metadata ![[X1_EXPR:.*]]) +; CHECK: call void @llvm.dbg.value(metadata i8* %[[USP]], metadata ![[X1:.*]], metadata !DIExpression(DW_OP_deref, DW_OP_constu, 4, DW_OP_minus)) tail call void @llvm.dbg.value(metadata i32* %x1, metadata !10, metadata !15), !dbg !16 call void @capture(i32* nonnull %x1), !dbg !17 @@ -33,7 +33,7 @@ entry: ; CHECK: call void @llvm.random.metadata.use(metadata ![[EMPTY]]) call void @llvm.random.metadata.use(metadata i32* %x2) -; CHECK: call void @llvm.dbg.value(metadata i8* %[[USP]], metadata ![[X2:.*]], metadata ![[X2_EXPR:.*]]) +; CHECK: call void @llvm.dbg.value(metadata i8* %[[USP]], metadata ![[X2:.*]], metadata !DIExpression(DW_OP_deref, DW_OP_constu, 8, DW_OP_minus)) call void @llvm.dbg.value(metadata i32* %x2, metadata !12, metadata !15), !dbg !18 call void @capture(i32* nonnull %x2), !dbg !19 ret void, !dbg !20 @@ -84,8 +84,6 @@ attributes #4 = { nounwind } !13 = !DILocation(line: 5, column: 3, scope: !6) !14 = !DILocation(line: 6, column: 3, scope: !6) -; CHECK-DAG: ![[X1_EXPR]] = !DIExpression(DW_OP_deref, DW_OP_constu, 4, DW_OP_minus) -; CHECK-DAG: ![[X2_EXPR]] = !DIExpression(DW_OP_deref, DW_OP_constu, 8, DW_OP_minus) !15 = !DIExpression(DW_OP_deref) !16 = !DILocation(line: 5, column: 7, scope: !6) !17 = !DILocation(line: 8, column: 3, scope: !6) diff --git a/llvm/test/Transforms/Util/split-bit-piece.ll b/llvm/test/Transforms/Util/split-bit-piece.ll index 173d52ce0a7..71d5e070f5d 100644 --- a/llvm/test/Transforms/Util/split-bit-piece.ll +++ b/llvm/test/Transforms/Util/split-bit-piece.ll @@ -19,14 +19,10 @@ ; parameter. It can reference the register it's in directly without masking off ; high bits or anything -; CHECK: call void @llvm.dbg.value(metadata i8 %g.coerce0, metadata ![[VAR_STRUCT:[0-9]+]], metadata ![[EXPR_STRUCT1:[0-9]+]]) -; CHECK: call void @llvm.dbg.value(metadata i64 %g.coerce1, metadata ![[VAR_STRUCT]], metadata ![[EXPR_STRUCT2:[0-9]+]]) -; CHECK: call void @llvm.dbg.value(metadata i1 %b, metadata ![[VAR_BOOL:[0-9]+]], metadata ![[EXPR_BOOL:[0-9]+]]) -; CHECK: call void @llvm.dbg.value(metadata i1 %frag, metadata ![[FRAG_BOOL:[0-9]+]], metadata ![[FRAG_BOOL:[0-9]+]]) -; CHECK: ![[EXPR_STRUCT1]] = !DIExpression(DW_OP_LLVM_fragment, 0, 8) -; CHECK: ![[EXPR_STRUCT2]] = !DIExpression(DW_OP_LLVM_fragment, 32, 64) -; CHECK: ![[EXPR_BOOL]] = !DIExpression() -; CHECK: ![[FRAG_BOOL]] = !DIExpression(DW_OP_LLVM_fragment, 0, 1) +; CHECK: call void @llvm.dbg.value(metadata i8 %g.coerce0, metadata ![[VAR_STRUCT:[0-9]+]], metadata !DIExpression(DW_OP_LLVM_fragment, 0, 8)) +; CHECK: call void @llvm.dbg.value(metadata i64 %g.coerce1, metadata ![[VAR_STRUCT]], metadata !DIExpression(DW_OP_LLVM_fragment, 32, 64)) +; CHECK: call void @llvm.dbg.value(metadata i1 %b, metadata ![[VAR_BOOL:[0-9]+]], metadata !DIExpression()) +; CHECK: call void @llvm.dbg.value(metadata i1 %frag, metadata ![[VAR_FRAG:[0-9]+]], metadata !DIExpression(DW_OP_LLVM_fragment, 0, 1)) %struct.foo = type { i8, i64 } |