[AArch64,ELF] Restrict MOVZ/MOVK to non-PIC large code model (#70178)
[llvm-project.git] / llvm / test / CodeGen / X86 / dbg-changes-codegen-branch-folding2.mir
blob0ad9222a0741a29ea721ab015a51be42e469f368
1 # RUN: llc -run-pass=block-placement %s -o - | FileCheck %s
3 --- |
4   target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
5   target triple = "x86_64-unknown-linux-gnu"
6   
7   define void @_Z3fn1v() !dbg !6 {
8   entry:
9     %d = alloca i8, align 1
10     br i1 1, label %for.cond.cleanup, label %for.body
11   
12   for.cond.cleanup:
13     ret void
14   
15   for.body:
16     br i1 1, label %for.cond.cleanup, label %for.body.1
17   
18   for.body.1:
19     br i1 1, label %for.cond.cleanup, label %for.body.2
20   
21   for.body.2:
22     br i1 1, label %for.cond.cleanup, label %for.body.3
23   
24   for.body.3:
25     br i1 1, label %for.cond.cleanup, label %for.body.4
26   
27   for.body.4:
28     br i1 1, label %for.cond.cleanup, label %for.body.5
29   
30   for.body.5:
31     br i1 1, label %for.cond.cleanup, label %for.body.6
32   
33   for.body.6:
34     br i1 1, label %for.cond.cleanup, label %for.body.7
35   
36   for.body.7:
37     br i1 1, label %for.cond.cleanup, label %for.body.8
38   
39   for.body.8:
40     br i1 1, label %for.cond.cleanup, label %for.body.9
41   
42   for.body.9:
43     br i1 1, label %for.cond.cleanup, label %for.body.10
44   
45   for.body.10:
46     br i1 1, label %for.cond.cleanup, label %for.body.11
47   
48   for.body.11:
49     %d.0.d.0..12 = load volatile i8, ptr %d, align 1
50     call void @llvm.dbg.value(metadata i8 %d.0.d.0..12, metadata !16, metadata !DIExpression()), !dbg !19
51     br label %for.cond.cleanup
52   }
53   
54   declare void @llvm.dbg.value(metadata, metadata, metadata)
55   
56   !llvm.dbg.cu = !{!0}
57   !llvm.module.flags = !{!3, !4, !5}
58   
59   !0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 7.0.0 (trunk 326606)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, globals: !2)
60   !1 = !DIFile(filename: "repro.cpp", directory: "/home/mdavis/bugs/bz-189869")
61   !2 = !{}
62   !3 = !{i32 2, !"Dwarf Version", i32 4}
63   !4 = !{i32 2, !"Debug Info Version", i32 3}
64   !5 = !{i32 1, !"wchar_size", i32 4}
65   !6 = distinct !DISubprogram(name: "fn1", linkageName: "_Z3fn1v", scope: !7, file: !7, line: 4, type: !8, isLocal: false, isDefinition: true, scopeLine: 4, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !15)
66   !7 = !DIFile(filename: "./repro.cpp", directory: "/home/mdavis/bugs/bz-189869")
67   !8 = !DISubroutineType(types: !9)
68   !9 = !{}
69   !15 = !{!16}
70   !16 = !DILocalVariable(name: "d", scope: !6, file: !7, line: 6, type: !17)
71   !17 = !DIDerivedType(tag: DW_TAG_volatile_type, baseType: !18)
72   !18 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char)
73   !19 = !DILocation(line: 6, column: 17, scope: !6)
75 ...
76 ---
77 # CHECK: name: _Z3fn1v
78 # CHECK: bb.10.for.body.9
79 # CHECK: renamable $al
80 # CHECK-NEXT: TEST8rr killed renamable $al
81 # CHECK-NEXT: JCC_1
82 # CHECK-NOT: $al = IMPLICIT_DEF
83 # CHECK: bb.12.for.body.10
85 name:            _Z3fn1v
86 alignment:       16
87 tracksRegLiveness: true
88 constants:       
89 body:             |
90   bb.0.entry:
91     successors: %bb.1, %bb.4
92     liveins: $rdi, $rbp, $r15, $r14, $r13, $r12, $rbx
93   
94     renamable $al = MOV8ri 1
95     TEST8rr renamable $al, renamable $al, implicit-def $eflags
96     JCC_1 %bb.4, 5, implicit killed $eflags
97   
98   bb.1.for.cond.cleanup:
99     successors: %bb.3, %bb.2
100     liveins: $ecx, $rdi
101   
102     renamable $eax = MOV32rm $rsp, 1, $noreg, -16, $noreg 
103     CMP32rm killed renamable $eax, $rip, 1, $noreg, $noreg, $noreg, implicit-def $eflags 
104     JCC_1 %bb.3, 6, implicit $eflags
105   
106   bb.2:
107     successors: %bb.3
108     liveins: $ebp, $ebx, $edx, $esi, $rdi, $r8d, $r9d, $r10d, $r11d, $r12d, $r13d, $r14d, $r15d
109   
110   bb.3.for.cond.cleanup:
111     liveins: $rdi, $xmm3, $xmm4, $xmm5, $xmm6, $xmm7, $xmm9, $xmm13, $xmm14
112     RET64
113   
114   bb.4.for.body:
115     successors: %bb.1, %bb.5
116     liveins: $al, $rdi
117   
118     renamable $ecx = XOR32rr undef $ecx, undef $ecx, implicit-def dead $eflags
119     TEST8rr killed renamable $al, renamable $al, implicit-def $eflags
120     JCC_1 %bb.1, 5, implicit $eflags
121   
122   bb.5.for.body.1:
123     successors: %bb.1, %bb.6
124     liveins: $ecx, $rdi
125   
126     renamable $al = MOV8ri 1
127     TEST8rr killed renamable $al, renamable $al, implicit-def $eflags
128     JCC_1 %bb.1, 5, implicit $eflags
129   
130   bb.6.for.body.2:
131     successors: %bb.1, %bb.7
132     liveins: $ecx, $eflags, $rdi
133   
134     JCC_1 %bb.1, 5, implicit $eflags
135   
136   bb.7.for.body.3:
137     successors: %bb.1, %bb.8
138     liveins: $ecx, $rdi
139   
140     renamable $al = MOV8ri 1
141     TEST8rr killed renamable $al, renamable $al, implicit-def $eflags
142     JCC_1 %bb.1, 5, implicit $eflags
143   
144   bb.8.for.body.4:
145     successors: %bb.1, %bb.9
146     liveins: $ecx, $eflags, $rdi
147   
148     JCC_1 %bb.1, 5, implicit $eflags
149   
150   bb.9.for.body.5:
151     successors: %bb.1, %bb.10
152     liveins: $ecx, $rdi
153   
154     renamable $al = MOV8ri 1
155     TEST8rr killed renamable $al, renamable $al, implicit-def $eflags
156     JCC_1 %bb.1, 5, implicit $eflags
157   
158   bb.10.for.body.6:
159     successors: %bb.1, %bb.11
160     liveins: $ecx, $eflags, $rdi
161   
162     JCC_1 %bb.1, 5, implicit $eflags
163   
164   bb.11.for.body.7:
165     successors: %bb.1, %bb.12
166     liveins: $ecx, $rdi
167   
168     renamable $al = MOV8ri 1
169     TEST8rr killed renamable $al, renamable $al, implicit-def $eflags
170     JCC_1 %bb.1, 5, implicit $eflags
171   
172   bb.12.for.body.8:
173     successors: %bb.1, %bb.13
174     liveins: $ecx, $eflags, $rdi
175   
176     JCC_1 %bb.1, 5, implicit $eflags
177   
178   bb.13.for.body.9:
179     successors: %bb.14, %bb.15
180     liveins: $rdi
181   
182     renamable $al = MOV8ri 1
183     TEST8rr killed renamable $al, renamable $al, implicit-def $eflags
184     JCC_1 %bb.15, 4, implicit $eflags
185   
186   bb.14:
187     successors: %bb.1
188     liveins: $rdi
189   
190     renamable $ecx = XOR32rr undef $ecx, undef $ecx, implicit-def dead $eflags
191     JMP_1 %bb.1
192   
193   bb.15.for.body.10:
194     successors: %bb.16, %bb.17
195     liveins: $eflags, $rdi
196   
197     JCC_1 %bb.17, 4, implicit killed $eflags
198   
199   bb.16:
200     successors: %bb.1
201     liveins: $rdi
202   
203     JMP_1 %bb.1
204   
205   bb.17.for.body.11:
206     successors: %bb.1
207     liveins: $rdi
208   
209     dead renamable $al = MOV8rm $rsp, 1, $noreg, -121, $noreg 
210     DBG_VALUE $al, $noreg, !16, !DIExpression(), debug-location !19
211     renamable $ecx = XOR32rr undef $ecx, undef $ecx, implicit-def dead $eflags
212     JMP_1 %bb.1