@@ -21,7 +21,7 @@ define i32 @test1(i32 %x) {
21
21
; CHECK-NEXT: retl
22
22
entry:
23
23
%add = add nsw i32 %x , 4
24
- %ret = callbr i32 asm "xorl $1, $0; jmp ${2:l}" , "=r,r,!i,~{dirflag},~{fpsr},~{flags} " (i32 %add )
24
+ %ret = callbr i32 asm "xorl $1, $0; jmp ${2:l}" , "=r,r,!i" (i32 %add )
25
25
to label %normal [label %abnormal ]
26
26
27
27
normal:
@@ -31,15 +31,11 @@ abnormal:
31
31
ret i32 1
32
32
}
33
33
34
- define i32 @test2 (i32 %out1 , i32 %out2 ) {
34
+ define i32 @test2 (i32 %out1 , i32 %out2 ) nounwind {
35
35
; CHECK-LABEL: test2:
36
36
; CHECK: # %bb.0: # %entry
37
37
; CHECK-NEXT: pushl %edi
38
- ; CHECK-NEXT: .cfi_def_cfa_offset 8
39
38
; CHECK-NEXT: pushl %esi
40
- ; CHECK-NEXT: .cfi_def_cfa_offset 12
41
- ; CHECK-NEXT: .cfi_offset %esi, -12
42
- ; CHECK-NEXT: .cfi_offset %edi, -8
43
39
; CHECK-NEXT: movl {{[0-9]+}}(%esp), %edi
44
40
; CHECK-NEXT: movl {{[0-9]+}}(%esp), %esi
45
41
; CHECK-NEXT: movl $-1, %eax
@@ -65,26 +61,23 @@ define i32 @test2(i32 %out1, i32 %out2) {
65
61
; CHECK-NEXT: # %return
66
62
; CHECK-NEXT: # Label of block must be emitted
67
63
; CHECK-NEXT: popl %esi
68
- ; CHECK-NEXT: .cfi_def_cfa_offset 8
69
64
; CHECK-NEXT: popl %edi
70
- ; CHECK-NEXT: .cfi_def_cfa_offset 4
71
65
; CHECK-NEXT: retl
72
66
; CHECK-NEXT: .LBB1_4: # Block address taken
73
67
; CHECK-NEXT: # %label_true
74
68
; CHECK-NEXT: # Label of block must be emitted
75
- ; CHECK-NEXT: .cfi_def_cfa_offset 12
76
69
; CHECK-NEXT: movl $-2, %eax
77
70
; CHECK-NEXT: jmp .LBB1_5
78
71
entry:
79
72
%cmp = icmp slt i32 %out1 , %out2
80
73
br i1 %cmp , label %if.then , label %if.else
81
74
82
75
if.then: ; preds = %entry
83
- %0 = callbr { i32 , i32 } asm sideeffect "testl $0, $0; testl $1, $2; jne ${3:l}" , "={si},={di},r,!i,!i,0,1,~{dirflag},~{fpsr},~{flags} " (i32 %out1 , i32 %out1 , i32 %out2 )
76
+ %0 = callbr { i32 , i32 } asm sideeffect "testl $0, $0; testl $1, $2; jne ${3:l}" , "={si},={di},r,!i,!i,0,1" (i32 %out1 , i32 %out1 , i32 %out2 )
84
77
to label %if.end [label %label_true , label %return ]
85
78
86
79
if.else: ; preds = %entry
87
- %1 = callbr { i32 , i32 } asm sideeffect "testl $0, $1; testl $2, $3; jne ${5:l}" , "={si},={di},r,r,!i,!i,0,1,~{dirflag},~{fpsr},~{flags} " (i32 %out1 , i32 %out2 , i32 %out1 , i32 %out2 )
80
+ %1 = callbr { i32 , i32 } asm sideeffect "testl $0, $1; testl $2, $3; jne ${5:l}" , "={si},={di},r,r,!i,!i,0,1" (i32 %out1 , i32 %out2 , i32 %out1 , i32 %out2 )
88
81
to label %if.end [label %label_true , label %return ]
89
82
90
83
if.end: ; preds = %if.else, %if.then
@@ -102,15 +95,11 @@ return: ; preds = %if.then, %if.else,
102
95
ret i32 %retval.0
103
96
}
104
97
105
- define i32 @test3 (i1 %cmp ) {
98
+ define i32 @test3 (i1 %cmp ) nounwind {
106
99
; CHECK-LABEL: test3:
107
100
; CHECK: # %bb.0: # %entry
108
101
; CHECK-NEXT: pushl %edi
109
- ; CHECK-NEXT: .cfi_def_cfa_offset 8
110
102
; CHECK-NEXT: pushl %esi
111
- ; CHECK-NEXT: .cfi_def_cfa_offset 12
112
- ; CHECK-NEXT: .cfi_offset %esi, -12
113
- ; CHECK-NEXT: .cfi_offset %edi, -8
114
103
; CHECK-NEXT: testb $1, {{[0-9]+}}(%esp)
115
104
; CHECK-NEXT: je .LBB2_3
116
105
; CHECK-NEXT: # %bb.1: # %true
@@ -130,14 +119,11 @@ define i32 @test3(i1 %cmp) {
130
119
; CHECK-NEXT: movl %edx, %eax
131
120
; CHECK-NEXT: .LBB2_5: # %asm.fallthrough
132
121
; CHECK-NEXT: popl %esi
133
- ; CHECK-NEXT: .cfi_def_cfa_offset 8
134
122
; CHECK-NEXT: popl %edi
135
- ; CHECK-NEXT: .cfi_def_cfa_offset 4
136
123
; CHECK-NEXT: retl
137
124
; CHECK-NEXT: .LBB2_6: # Block address taken
138
125
; CHECK-NEXT: # %indirect
139
126
; CHECK-NEXT: # Label of block must be emitted
140
- ; CHECK-NEXT: .cfi_def_cfa_offset 12
141
127
; CHECK-NEXT: movl $42, %eax
142
128
; CHECK-NEXT: jmp .LBB2_5
143
129
entry:
@@ -188,13 +174,13 @@ define i32 @test4(i32 %out1, i32 %out2) {
188
174
; CHECK-NEXT: movl $-2, %eax
189
175
; CHECK-NEXT: jmp .LBB3_4
190
176
entry:
191
- %0 = callbr { i32 , i32 } asm sideeffect "testl $0, $0; testl $1, $2; jne ${3:l}" , "=r,=r,r,!i,!i,~{dirflag},~{fpsr},~{flags} " (i32 %out1 )
177
+ %0 = callbr { i32 , i32 } asm sideeffect "testl $0, $0; testl $1, $2; jne ${3:l}" , "=r,=r,r,!i,!i" (i32 %out1 )
192
178
to label %asm.fallthrough [label %label_true , label %return ]
193
179
194
180
asm .fallthrough: ; preds = %entry
195
181
%asmresult = extractvalue { i32 , i32 } %0 , 0
196
182
%asmresult1 = extractvalue { i32 , i32 } %0 , 1
197
- %1 = callbr { i32 , i32 } asm sideeffect "testl $0, $1; testl $2, $3; jne ${5:l}" , "=r,=r,r,r,!i,!i,~{dirflag},~{fpsr},~{flags} " (i32 %asmresult , i32 %asmresult1 )
183
+ %1 = callbr { i32 , i32 } asm sideeffect "testl $0, $1; testl $2, $3; jne ${5:l}" , "=r,=r,r,r,!i,!i" (i32 %asmresult , i32 %asmresult1 )
198
184
to label %asm.fallthrough2 [label %label_true , label %return ]
199
185
200
186
asm .fallthrough2: ; preds = %asm.fallthrough
@@ -224,7 +210,7 @@ define dso_local void @test5() {
224
210
; CHECK-NEXT: # Label of block must be emitted
225
211
; CHECK-NEXT: retl
226
212
%1 = call i32 @llvm.read_register.i32 (metadata !3 )
227
- %2 = callbr i32 asm "" , "={esp},!i,{esp},~{dirflag},~{fpsr},~{flags} " (i32 %1 )
213
+ %2 = callbr i32 asm "" , "={esp},!i,{esp}" (i32 %1 )
228
214
to label %3 [label %4 ]
229
215
230
216
3 :
0 commit comments