xref: /llvm-project/llvm/test/CodeGen/X86/debug-spilled-snippet.ll (revision 1a65d95d0056ce98f94944ff1fd5309242fd5f28)
1*1a65d95dSBevin Hansson; RUN: llc -mtriple i386 %s -stop-after=livedebugvalues -o - | FileCheck %s
2*1a65d95dSBevin Hansson
3*1a65d95dSBevin Hansson; There should be multiple debug values for this variable after regalloc. The
4*1a65d95dSBevin Hansson; value has been spilled, but we shouldn't lose track of the location because
5*1a65d95dSBevin Hansson; of this.
6*1a65d95dSBevin Hansson
7*1a65d95dSBevin Hansson; CHECK-COUNT-4: DBG_VALUE $ebp, 0, !6, !DIExpression(DW_OP_constu, 16, DW_OP_minus), debug-location !10
8*1a65d95dSBevin Hansson
9*1a65d95dSBevin Hanssondefine void @main(i32 %call, i32 %xor.i, i1 %tobool4.not, i32 %.pre) #0 !dbg !4 {
10*1a65d95dSBevin Hanssonentry:
11*1a65d95dSBevin Hansson  %tobool1.not = icmp ne i32 %call, 0
12*1a65d95dSBevin Hansson  %spec.select = zext i1 %tobool1.not to i32
13*1a65d95dSBevin Hansson  br label %for.body5
14*1a65d95dSBevin Hansson
15*1a65d95dSBevin Hanssonfor.cond.loopexit.loopexit:                       ; preds = %for.body5
16*1a65d95dSBevin Hansson    #dbg_value(i32 %spec.select, !6, !DIExpression(), !10)
17*1a65d95dSBevin Hansson  %tobool.not.i53 = icmp eq i32 %spec.select, 0
18*1a65d95dSBevin Hansson  br i1 %tobool.not.i53, label %transparent_crc.exit57, label %if.then.i54
19*1a65d95dSBevin Hansson
20*1a65d95dSBevin Hanssonfor.body5:                                        ; preds = %for.body5, %entry
21*1a65d95dSBevin Hansson  %0 = phi i32 [ 0, %entry ], [ %xor1.i40.i, %for.body5 ]
22*1a65d95dSBevin Hansson  %xor6.i = xor i32 %.pre, %0
23*1a65d95dSBevin Hansson  %shr7.i = ashr i32 %xor6.i, 1
24*1a65d95dSBevin Hansson  %xor17.i = xor i32 %shr7.i, %call
25*1a65d95dSBevin Hansson  %shr18.i = ashr i32 %xor17.i, 1
26*1a65d95dSBevin Hansson  %xor.i.i = xor i32 %shr18.i, %xor.i
27*1a65d95dSBevin Hansson  %arrayidx.i.i = getelementptr [0 x i32], ptr null, i32 0, i32 %xor.i.i
28*1a65d95dSBevin Hansson  %xor1.i40.i = xor i32 %xor.i.i, %call
29*1a65d95dSBevin Hansson  br i1 %tobool4.not, label %for.cond.loopexit.loopexit, label %for.body5
30*1a65d95dSBevin Hansson
31*1a65d95dSBevin Hanssonif.then.i54:                                      ; preds = %for.cond.loopexit.loopexit
32*1a65d95dSBevin Hansson  store i64 0, ptr null, align 4
33*1a65d95dSBevin Hansson  br label %transparent_crc.exit57
34*1a65d95dSBevin Hansson
35*1a65d95dSBevin Hanssontransparent_crc.exit57:                           ; preds = %if.then.i54, %for.cond.loopexit.loopexit
36*1a65d95dSBevin Hansson  ret void
37*1a65d95dSBevin Hansson}
38*1a65d95dSBevin Hansson
39*1a65d95dSBevin Hanssonattributes #0 = { "frame-pointer"="all" }
40*1a65d95dSBevin Hansson
41*1a65d95dSBevin Hansson!llvm.dbg.cu = !{!0}
42*1a65d95dSBevin Hansson!llvm.module.flags = !{!3}
43*1a65d95dSBevin Hansson
44*1a65d95dSBevin Hansson!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 20.0.0git.prerel", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, globals: !2, splitDebugInlining: false, nameTableKind: None)
45*1a65d95dSBevin Hansson!1 = !DIFile(filename: "xx.c", directory: "/path", checksumkind: CSK_MD5, checksum: "c4b2fc62bca9171ad484c91fb78b8842")
46*1a65d95dSBevin Hansson!2 = !{}
47*1a65d95dSBevin Hansson!3 = !{i32 2, !"Debug Info Version", i32 3}
48*1a65d95dSBevin Hansson!4 = distinct !DISubprogram(name: "main", scope: !1, file: !1, line: 20, type: !5, scopeLine: 20, flags: DIFlagAllCallsDescribed, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !2)
49*1a65d95dSBevin Hansson!5 = !DISubroutineType(types: !2)
50*1a65d95dSBevin Hansson!6 = !DILocalVariable(name: "flag", arg: 2, scope: !7, file: !1, line: 8, type: !9)
51*1a65d95dSBevin Hansson!7 = distinct !DISubprogram(name: "transparent_crc", scope: !1, file: !1, line: 8, type: !8, scopeLine: 8, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !2)
52*1a65d95dSBevin Hansson!8 = distinct !DISubroutineType(types: !2)
53*1a65d95dSBevin Hansson!9 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
54*1a65d95dSBevin Hansson!10 = !DILocation(line: 0, scope: !7, inlinedAt: !11)
55*1a65d95dSBevin Hansson!11 = distinct !DILocation(line: 28, column: 3, scope: !4)
56