xref: /aosp_15_r20/external/llvm/test/DebugInfo/MIR/X86/live-debug-values.mir (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker# RUN: llc -run-pass=livedebugvalues -march=x86-64 -o - %s | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Worker# Test the extension of debug ranges from predecessors.
4*9880d681SAndroid Build Coastguard Worker# Generated from the source file LiveDebugValues.c:
5*9880d681SAndroid Build Coastguard Worker# #include <stdio.h>
6*9880d681SAndroid Build Coastguard Worker# int m;
7*9880d681SAndroid Build Coastguard Worker# extern int inc(int n);
8*9880d681SAndroid Build Coastguard Worker# extern int change(int n);
9*9880d681SAndroid Build Coastguard Worker# extern int modify(int n);
10*9880d681SAndroid Build Coastguard Worker# int main(int argc, char **argv) {
11*9880d681SAndroid Build Coastguard Worker#   int n;
12*9880d681SAndroid Build Coastguard Worker#   if (argc != 2)
13*9880d681SAndroid Build Coastguard Worker#     n = 2;
14*9880d681SAndroid Build Coastguard Worker#   else
15*9880d681SAndroid Build Coastguard Worker#     n = atoi(argv[1]);
16*9880d681SAndroid Build Coastguard Worker#   n = change(n);
17*9880d681SAndroid Build Coastguard Worker#   if (n > 10) {
18*9880d681SAndroid Build Coastguard Worker#     m = modify(n);
19*9880d681SAndroid Build Coastguard Worker#     m = m + n;  // var `m' doesn't has a dbg.value
20*9880d681SAndroid Build Coastguard Worker#   }
21*9880d681SAndroid Build Coastguard Worker#   else
22*9880d681SAndroid Build Coastguard Worker#     m = inc(n); // var `m' doesn't has a dbg.value
23*9880d681SAndroid Build Coastguard Worker#   printf("m(main): %d\n", m);
24*9880d681SAndroid Build Coastguard Worker#   return 0;
25*9880d681SAndroid Build Coastguard Worker# }
26*9880d681SAndroid Build Coastguard Worker# with clang -g -O3 -c -emit-llvm LiveDebugValues.c -S -o live-debug-values.ll
27*9880d681SAndroid Build Coastguard Worker# then llc -stop-after stackmap-liveness live-debug-values.ll -o /dev/null > live-debug-values.mir
28*9880d681SAndroid Build Coastguard Worker# This case will also produce multiple locations but only the debug range
29*9880d681SAndroid Build Coastguard Worker# extension is tested here. This test case is tested with DWARF information under
30*9880d681SAndroid Build Coastguard Worker# llvm/test/DebugInfo/live-debug-values.ll and present here for testing under
31*9880d681SAndroid Build Coastguard Worker# MIR->MIR serialization.
32*9880d681SAndroid Build Coastguard Worker
33*9880d681SAndroid Build Coastguard Worker# DBG_VALUE for variable "n" is extended into BB#5 from its predecessors BB#3
34*9880d681SAndroid Build Coastguard Worker# and BB#4.
35*9880d681SAndroid Build Coastguard Worker# CHECK:      bb.5.if.end.7:
36*9880d681SAndroid Build Coastguard Worker# CHECK:        DBG_VALUE debug-use %ebx, debug-use _, !18, !19, debug-location !32
37*9880d681SAndroid Build Coastguard Worker
38*9880d681SAndroid Build Coastguard Worker
39*9880d681SAndroid Build Coastguard Worker--- |
40*9880d681SAndroid Build Coastguard Worker  ; ModuleID = 'live-debug-values.ll'
41*9880d681SAndroid Build Coastguard Worker  target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
42*9880d681SAndroid Build Coastguard Worker  target triple = "x86_64-unknown-linux-gnu"
43*9880d681SAndroid Build Coastguard Worker
44*9880d681SAndroid Build Coastguard Worker  @m = common global i32 0, align 4
45*9880d681SAndroid Build Coastguard Worker  @.str = private unnamed_addr constant [13 x i8] c"m(main): %d\0A\00", align 1
46*9880d681SAndroid Build Coastguard Worker
47*9880d681SAndroid Build Coastguard Worker  ; Function Attrs: nounwind uwtable
48*9880d681SAndroid Build Coastguard Worker  define i32 @main(i32 %argc, i8** nocapture readonly %argv) #0 !dbg !4 {
49*9880d681SAndroid Build Coastguard Worker  entry:
50*9880d681SAndroid Build Coastguard Worker    tail call void @llvm.dbg.value(metadata i32 %argc, i64 0, metadata !12, metadata !20), !dbg !21
51*9880d681SAndroid Build Coastguard Worker    tail call void @llvm.dbg.value(metadata i8** %argv, i64 0, metadata !13, metadata !20), !dbg !22
52*9880d681SAndroid Build Coastguard Worker    %cmp = icmp eq i32 %argc, 2, !dbg !24
53*9880d681SAndroid Build Coastguard Worker    br i1 %cmp, label %if.else, label %if.end, !dbg !26
54*9880d681SAndroid Build Coastguard Worker
55*9880d681SAndroid Build Coastguard Worker  if.else:                                          ; preds = %entry
56*9880d681SAndroid Build Coastguard Worker    %arrayidx = getelementptr inbounds i8*, i8** %argv, i64 1, !dbg !27
57*9880d681SAndroid Build Coastguard Worker    %0 = load i8*, i8** %arrayidx, align 8, !dbg !27, !tbaa !28
58*9880d681SAndroid Build Coastguard Worker    %call = tail call i32 (i8*, ...) bitcast (i32 (...)* @atoi to i32 (i8*, ...)*)(i8* %0) #4, !dbg !32
59*9880d681SAndroid Build Coastguard Worker    tail call void @llvm.dbg.value(metadata i32 %call, i64 0, metadata !14, metadata !20), !dbg !33
60*9880d681SAndroid Build Coastguard Worker    br label %if.end
61*9880d681SAndroid Build Coastguard Worker
62*9880d681SAndroid Build Coastguard Worker  if.end:                                           ; preds = %if.else, %entry
63*9880d681SAndroid Build Coastguard Worker    %n.0 = phi i32 [ %call, %if.else ], [ 2, %entry ]
64*9880d681SAndroid Build Coastguard Worker    %call1 = tail call i32 @change(i32 %n.0) #4, !dbg !34
65*9880d681SAndroid Build Coastguard Worker    tail call void @llvm.dbg.value(metadata i32 %call1, i64 0, metadata !14, metadata !20), !dbg !33
66*9880d681SAndroid Build Coastguard Worker    %cmp2 = icmp sgt i32 %call1, 10, !dbg !35
67*9880d681SAndroid Build Coastguard Worker    br i1 %cmp2, label %if.then.3, label %if.else.5, !dbg !37
68*9880d681SAndroid Build Coastguard Worker
69*9880d681SAndroid Build Coastguard Worker  if.then.3:                                        ; preds = %if.end
70*9880d681SAndroid Build Coastguard Worker    %call4 = tail call i32 @modify(i32 %call1) #4, !dbg !38
71*9880d681SAndroid Build Coastguard Worker    %add = add nsw i32 %call4, %call1, !dbg !40
72*9880d681SAndroid Build Coastguard Worker    br label %if.end.7, !dbg !41
73*9880d681SAndroid Build Coastguard Worker
74*9880d681SAndroid Build Coastguard Worker  if.else.5:                                        ; preds = %if.end
75*9880d681SAndroid Build Coastguard Worker    %call6 = tail call i32 @inc(i32 %call1) #4, !dbg !42
76*9880d681SAndroid Build Coastguard Worker    br label %if.end.7
77*9880d681SAndroid Build Coastguard Worker
78*9880d681SAndroid Build Coastguard Worker  if.end.7:                                         ; preds = %if.else.5, %if.then.3
79*9880d681SAndroid Build Coastguard Worker    %storemerge = phi i32 [ %call6, %if.else.5 ], [ %add, %if.then.3 ]
80*9880d681SAndroid Build Coastguard Worker    store i32 %storemerge, i32* @m, align 4, !dbg !43, !tbaa !44
81*9880d681SAndroid Build Coastguard Worker    %call8 = tail call i32 (i8*, ...) @printf(i8* nonnull getelementptr inbounds ([13 x i8], [13 x i8]* @.str, i64 0, i64 0), i32 %storemerge) #4, !dbg !46
82*9880d681SAndroid Build Coastguard Worker    ret i32 0, !dbg !47
83*9880d681SAndroid Build Coastguard Worker  }
84*9880d681SAndroid Build Coastguard Worker
85*9880d681SAndroid Build Coastguard Worker  declare i32 @atoi(...) #1
86*9880d681SAndroid Build Coastguard Worker
87*9880d681SAndroid Build Coastguard Worker  declare i32 @change(i32) #1
88*9880d681SAndroid Build Coastguard Worker
89*9880d681SAndroid Build Coastguard Worker  declare i32 @modify(i32) #1
90*9880d681SAndroid Build Coastguard Worker
91*9880d681SAndroid Build Coastguard Worker  declare i32 @inc(i32) #1
92*9880d681SAndroid Build Coastguard Worker
93*9880d681SAndroid Build Coastguard Worker  ; Function Attrs: nounwind
94*9880d681SAndroid Build Coastguard Worker  declare i32 @printf(i8* nocapture readonly, ...) #2
95*9880d681SAndroid Build Coastguard Worker
96*9880d681SAndroid Build Coastguard Worker  ; Function Attrs: nounwind readnone
97*9880d681SAndroid Build Coastguard Worker  declare void @llvm.dbg.value(metadata, i64, metadata, metadata) #3
98*9880d681SAndroid Build Coastguard Worker
99*9880d681SAndroid Build Coastguard Worker  attributes #0 = { nounwind uwtable }
100*9880d681SAndroid Build Coastguard Worker  attributes #1 = { nounwind }
101*9880d681SAndroid Build Coastguard Worker  attributes #2 = { nounwind }
102*9880d681SAndroid Build Coastguard Worker  attributes #3 = { nounwind readnone }
103*9880d681SAndroid Build Coastguard Worker  attributes #4 = { nounwind }
104*9880d681SAndroid Build Coastguard Worker
105*9880d681SAndroid Build Coastguard Worker  !llvm.dbg.cu = !{!0}
106*9880d681SAndroid Build Coastguard Worker  !llvm.module.flags = !{!17, !18}
107*9880d681SAndroid Build Coastguard Worker  !llvm.ident = !{!19}
108*9880d681SAndroid Build Coastguard Worker
109*9880d681SAndroid Build Coastguard Worker  !0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.8.0 (trunk 253049) ", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, globals: !15)
110*9880d681SAndroid Build Coastguard Worker  !1 = !DIFile(filename: "LiveDebugValues.c", directory: "/home/vt/julia/test/tvvikram")
111*9880d681SAndroid Build Coastguard Worker  !2 = !{}
112*9880d681SAndroid Build Coastguard Worker  !4 = distinct !DISubprogram(name: "main", scope: !1, file: !1, line: 6, type: !5, isLocal: false, isDefinition: true, scopeLine: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !11)
113*9880d681SAndroid Build Coastguard Worker  !5 = !DISubroutineType(types: !6)
114*9880d681SAndroid Build Coastguard Worker  !6 = !{!7, !7, !8}
115*9880d681SAndroid Build Coastguard Worker  !7 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
116*9880d681SAndroid Build Coastguard Worker  !8 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !9, size: 64, align: 64)
117*9880d681SAndroid Build Coastguard Worker  !9 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !10, size: 64, align: 64)
118*9880d681SAndroid Build Coastguard Worker  !10 = !DIBasicType(name: "char", size: 8, align: 8, encoding: DW_ATE_signed_char)
119*9880d681SAndroid Build Coastguard Worker  !11 = !{!12, !13, !14}
120*9880d681SAndroid Build Coastguard Worker  !12 = !DILocalVariable(name: "argc", arg: 1, scope: !4, file: !1, line: 6, type: !7)
121*9880d681SAndroid Build Coastguard Worker  !13 = !DILocalVariable(name: "argv", arg: 2, scope: !4, file: !1, line: 6, type: !8)
122*9880d681SAndroid Build Coastguard Worker  !14 = !DILocalVariable(name: "n", scope: !4, file: !1, line: 7, type: !7)
123*9880d681SAndroid Build Coastguard Worker  !15 = !{!16}
124*9880d681SAndroid Build Coastguard Worker  !16 = !DIGlobalVariable(name: "m", scope: !0, file: !1, line: 2, type: !7, isLocal: false, isDefinition: true, variable: i32* @m)
125*9880d681SAndroid Build Coastguard Worker  !17 = !{i32 2, !"Dwarf Version", i32 4}
126*9880d681SAndroid Build Coastguard Worker  !18 = !{i32 2, !"Debug Info Version", i32 3}
127*9880d681SAndroid Build Coastguard Worker  !19 = !{!"clang version 3.8.0 (trunk 253049)"}
128*9880d681SAndroid Build Coastguard Worker  !20 = !DIExpression()
129*9880d681SAndroid Build Coastguard Worker  !21 = !DILocation(line: 6, column: 14, scope: !4)
130*9880d681SAndroid Build Coastguard Worker  !22 = !DILocation(line: 6, column: 27, scope: !23)
131*9880d681SAndroid Build Coastguard Worker  !23 = !DILexicalBlockFile(scope: !4, file: !1, discriminator: 1)
132*9880d681SAndroid Build Coastguard Worker  !24 = !DILocation(line: 8, column: 12, scope: !25)
133*9880d681SAndroid Build Coastguard Worker  !25 = distinct !DILexicalBlock(scope: !4, file: !1, line: 8, column: 7)
134*9880d681SAndroid Build Coastguard Worker  !26 = !DILocation(line: 8, column: 7, scope: !4)
135*9880d681SAndroid Build Coastguard Worker  !27 = !DILocation(line: 11, column: 14, scope: !25)
136*9880d681SAndroid Build Coastguard Worker  !28 = !{!29, !29, i64 0}
137*9880d681SAndroid Build Coastguard Worker  !29 = !{!"any pointer", !30, i64 0}
138*9880d681SAndroid Build Coastguard Worker  !30 = !{!"omnipotent char", !31, i64 0}
139*9880d681SAndroid Build Coastguard Worker  !31 = !{!"Simple C/C++ TBAA"}
140*9880d681SAndroid Build Coastguard Worker  !32 = !DILocation(line: 11, column: 9, scope: !25)
141*9880d681SAndroid Build Coastguard Worker  !33 = !DILocation(line: 7, column: 7, scope: !23)
142*9880d681SAndroid Build Coastguard Worker  !34 = !DILocation(line: 12, column: 7, scope: !4)
143*9880d681SAndroid Build Coastguard Worker  !35 = !DILocation(line: 13, column: 9, scope: !36)
144*9880d681SAndroid Build Coastguard Worker  !36 = distinct !DILexicalBlock(scope: !4, file: !1, line: 13, column: 7)
145*9880d681SAndroid Build Coastguard Worker  !37 = !DILocation(line: 13, column: 7, scope: !4)
146*9880d681SAndroid Build Coastguard Worker  !38 = !DILocation(line: 14, column: 9, scope: !39)
147*9880d681SAndroid Build Coastguard Worker  !39 = distinct !DILexicalBlock(scope: !36, file: !1, line: 13, column: 15)
148*9880d681SAndroid Build Coastguard Worker  !40 = !DILocation(line: 15, column: 11, scope: !39)
149*9880d681SAndroid Build Coastguard Worker  !41 = !DILocation(line: 16, column: 3, scope: !39)
150*9880d681SAndroid Build Coastguard Worker  !42 = !DILocation(line: 18, column: 9, scope: !36)
151*9880d681SAndroid Build Coastguard Worker  !43 = !DILocation(line: 15, column: 7, scope: !39)
152*9880d681SAndroid Build Coastguard Worker  !44 = !{!45, !45, i64 0}
153*9880d681SAndroid Build Coastguard Worker  !45 = !{!"int", !30, i64 0}
154*9880d681SAndroid Build Coastguard Worker  !46 = !DILocation(line: 19, column: 3, scope: !4)
155*9880d681SAndroid Build Coastguard Worker  !47 = !DILocation(line: 20, column: 3, scope: !4)
156*9880d681SAndroid Build Coastguard Worker
157*9880d681SAndroid Build Coastguard Worker...
158*9880d681SAndroid Build Coastguard Worker---
159*9880d681SAndroid Build Coastguard Workername:            main
160*9880d681SAndroid Build Coastguard Workeralignment:       4
161*9880d681SAndroid Build Coastguard WorkerexposesReturnsTwice: false
162*9880d681SAndroid Build Coastguard WorkerhasInlineAsm:    false
163*9880d681SAndroid Build Coastguard WorkerallVRegsAllocated: true
164*9880d681SAndroid Build Coastguard WorkerisSSA:           false
165*9880d681SAndroid Build Coastguard WorkertracksRegLiveness: true
166*9880d681SAndroid Build Coastguard WorkertracksSubRegLiveness: false
167*9880d681SAndroid Build Coastguard Workerliveins:
168*9880d681SAndroid Build Coastguard Worker  - { reg: '%edi' }
169*9880d681SAndroid Build Coastguard Worker  - { reg: '%rsi' }
170*9880d681SAndroid Build Coastguard WorkercalleeSavedRegisters: [ '%bh', '%bl', '%bp', '%bpl', '%bx', '%ebp', '%ebx',
171*9880d681SAndroid Build Coastguard Worker                        '%rbp', '%rbx', '%r12', '%r13', '%r14', '%r15',
172*9880d681SAndroid Build Coastguard Worker                        '%r12b', '%r13b', '%r14b', '%r15b', '%r12d', '%r13d',
173*9880d681SAndroid Build Coastguard Worker                        '%r14d', '%r15d', '%r12w', '%r13w', '%r14w', '%r15w' ]
174*9880d681SAndroid Build Coastguard WorkerframeInfo:
175*9880d681SAndroid Build Coastguard Worker  isFrameAddressTaken: false
176*9880d681SAndroid Build Coastguard Worker  isReturnAddressTaken: false
177*9880d681SAndroid Build Coastguard Worker  hasStackMap:     false
178*9880d681SAndroid Build Coastguard Worker  hasPatchPoint:   false
179*9880d681SAndroid Build Coastguard Worker  stackSize:       8
180*9880d681SAndroid Build Coastguard Worker  offsetAdjustment: 0
181*9880d681SAndroid Build Coastguard Worker  maxAlignment:    0
182*9880d681SAndroid Build Coastguard Worker  adjustsStack:    true
183*9880d681SAndroid Build Coastguard Worker  hasCalls:        true
184*9880d681SAndroid Build Coastguard Worker  maxCallFrameSize: 0
185*9880d681SAndroid Build Coastguard Worker  hasOpaqueSPAdjustment: false
186*9880d681SAndroid Build Coastguard Worker  hasVAStart:      false
187*9880d681SAndroid Build Coastguard Worker  hasMustTailInVarArgFunc: false
188*9880d681SAndroid Build Coastguard WorkerfixedStack:
189*9880d681SAndroid Build Coastguard Worker  - { id: 0, type: spill-slot, offset: -16, size: 8, alignment: 16, callee-saved-register: '%rbx' }
190*9880d681SAndroid Build Coastguard Workerbody:             |
191*9880d681SAndroid Build Coastguard Worker  bb.0.entry:
192*9880d681SAndroid Build Coastguard Worker    successors: %bb.1.if.else(16), %bb.2.if.end(16)
193*9880d681SAndroid Build Coastguard Worker    liveins: %edi, %rsi, %rbx
194*9880d681SAndroid Build Coastguard Worker
195*9880d681SAndroid Build Coastguard Worker    frame-setup PUSH64r killed %rbx, implicit-def %rsp, implicit %rsp
196*9880d681SAndroid Build Coastguard Worker    CFI_INSTRUCTION .cfi_def_cfa_offset 16
197*9880d681SAndroid Build Coastguard Worker    CFI_INSTRUCTION .cfi_offset %rbx, -16
198*9880d681SAndroid Build Coastguard Worker    DBG_VALUE debug-use %edi, debug-use _, !12, !20, debug-location !21
199*9880d681SAndroid Build Coastguard Worker    DBG_VALUE debug-use %rsi, debug-use _, !13, !20, debug-location !22
200*9880d681SAndroid Build Coastguard Worker    %eax = MOV32rr %edi
201*9880d681SAndroid Build Coastguard Worker    DBG_VALUE debug-use %eax, debug-use _, !12, !20, debug-location !21
202*9880d681SAndroid Build Coastguard Worker    %edi = MOV32ri 2
203*9880d681SAndroid Build Coastguard Worker    CMP32ri8 killed %eax, 2, implicit-def %eflags, debug-location !26
204*9880d681SAndroid Build Coastguard Worker    JNE_1 %bb.2.if.end, implicit %eflags
205*9880d681SAndroid Build Coastguard Worker
206*9880d681SAndroid Build Coastguard Worker  bb.1.if.else:
207*9880d681SAndroid Build Coastguard Worker    successors: %bb.2.if.end(0)
208*9880d681SAndroid Build Coastguard Worker    liveins: %rsi
209*9880d681SAndroid Build Coastguard Worker
210*9880d681SAndroid Build Coastguard Worker    DBG_VALUE debug-use %rsi, debug-use _, !13, !20, debug-location !22
211*9880d681SAndroid Build Coastguard Worker    %rdi = MOV64rm killed %rsi, 1, _, 8, _, debug-location !27 :: (load 8 from %ir.arrayidx, !tbaa !28)
212*9880d681SAndroid Build Coastguard Worker    dead %eax = XOR32rr undef %eax, undef %eax, implicit-def dead %eflags, implicit-def %al, debug-location !32
213*9880d681SAndroid Build Coastguard Worker    CALL64pcrel32 @atoi, csr_64, implicit %rsp, implicit %rdi, implicit %al, implicit-def %rsp, implicit-def %eax, debug-location !32
214*9880d681SAndroid Build Coastguard Worker    %edi = MOV32rr %eax, debug-location !32
215*9880d681SAndroid Build Coastguard Worker    DBG_VALUE debug-use %edi, debug-use _, !14, !20, debug-location !33
216*9880d681SAndroid Build Coastguard Worker
217*9880d681SAndroid Build Coastguard Worker  bb.2.if.end:
218*9880d681SAndroid Build Coastguard Worker    successors: %bb.3.if.then.3(16), %bb.4.if.else.5(16)
219*9880d681SAndroid Build Coastguard Worker    liveins: %edi
220*9880d681SAndroid Build Coastguard Worker
221*9880d681SAndroid Build Coastguard Worker    CALL64pcrel32 @change, csr_64, implicit %rsp, implicit %edi, implicit-def %rsp, implicit-def %eax, debug-location !34
222*9880d681SAndroid Build Coastguard Worker    %ebx = MOV32rr %eax, debug-location !34
223*9880d681SAndroid Build Coastguard Worker    DBG_VALUE debug-use %ebx, debug-use _, !14, !20, debug-location !33
224*9880d681SAndroid Build Coastguard Worker    CMP32ri8 %ebx, 11, implicit-def %eflags, debug-location !37
225*9880d681SAndroid Build Coastguard Worker    JL_1 %bb.4.if.else.5, implicit killed %eflags, debug-location !37
226*9880d681SAndroid Build Coastguard Worker
227*9880d681SAndroid Build Coastguard Worker  bb.3.if.then.3:
228*9880d681SAndroid Build Coastguard Worker    successors: %bb.5.if.end.7(0)
229*9880d681SAndroid Build Coastguard Worker    liveins: %ebx
230*9880d681SAndroid Build Coastguard Worker
231*9880d681SAndroid Build Coastguard Worker    DBG_VALUE debug-use %ebx, debug-use _, !14, !20, debug-location !33
232*9880d681SAndroid Build Coastguard Worker    %edi = MOV32rr %ebx, debug-location !38
233*9880d681SAndroid Build Coastguard Worker    CALL64pcrel32 @modify, csr_64, implicit %rsp, implicit %edi, implicit-def %rsp, implicit-def %eax, debug-location !38
234*9880d681SAndroid Build Coastguard Worker    %ecx = MOV32rr %eax, debug-location !38
235*9880d681SAndroid Build Coastguard Worker    %ecx = ADD32rr killed %ecx, killed %ebx, implicit-def dead %eflags, debug-location !40
236*9880d681SAndroid Build Coastguard Worker    JMP_1 %bb.5.if.end.7
237*9880d681SAndroid Build Coastguard Worker
238*9880d681SAndroid Build Coastguard Worker  bb.4.if.else.5:
239*9880d681SAndroid Build Coastguard Worker    successors: %bb.5.if.end.7(0)
240*9880d681SAndroid Build Coastguard Worker    liveins: %ebx
241*9880d681SAndroid Build Coastguard Worker
242*9880d681SAndroid Build Coastguard Worker    DBG_VALUE debug-use %ebx, debug-use _, !14, !20, debug-location !33
243*9880d681SAndroid Build Coastguard Worker    %edi = MOV32rr killed %ebx, debug-location !42
244*9880d681SAndroid Build Coastguard Worker    CALL64pcrel32 @inc, csr_64, implicit %rsp, implicit %edi, implicit-def %rsp, implicit-def %eax, debug-location !42
245*9880d681SAndroid Build Coastguard Worker    %ecx = MOV32rr %eax, debug-location !42
246*9880d681SAndroid Build Coastguard Worker
247*9880d681SAndroid Build Coastguard Worker  bb.5.if.end.7:
248*9880d681SAndroid Build Coastguard Worker    liveins: %ecx
249*9880d681SAndroid Build Coastguard Worker
250*9880d681SAndroid Build Coastguard Worker    MOV32mr %rip, 1, _, @m, _, %ecx, debug-location !43 :: (store 4 into @m, !tbaa !44)
251*9880d681SAndroid Build Coastguard Worker    dead undef %edi = MOV32ri64 @.str, implicit-def %rdi, debug-location !46
252*9880d681SAndroid Build Coastguard Worker    dead %eax = XOR32rr undef %eax, undef %eax, implicit-def dead %eflags, implicit-def %al, debug-location !47
253*9880d681SAndroid Build Coastguard Worker    %esi = MOV32rr killed %ecx, debug-location !46
254*9880d681SAndroid Build Coastguard Worker    CALL64pcrel32 @printf, csr_64, implicit %rsp, implicit %rdi, implicit %esi, implicit %al, implicit-def %rsp, implicit-def dead %eax, debug-location !46
255*9880d681SAndroid Build Coastguard Worker    %eax = XOR32rr undef %eax, undef %eax, implicit-def dead %eflags, debug-location !47
256*9880d681SAndroid Build Coastguard Worker    %rbx = POP64r implicit-def %rsp, implicit %rsp, debug-location !47
257*9880d681SAndroid Build Coastguard Worker    RETQ %eax, debug-location !47
258*9880d681SAndroid Build Coastguard Worker
259*9880d681SAndroid Build Coastguard Worker...
260