@@ -191,27 +191,31 @@ func.func @store_malformed_elem_type(%foo: !llvm.ptr, %bar: f32) {
191
191
func.func @call_non_function_type (%callee : !llvm.func <i8 (i8 )>, %arg : i8 ) {
192
192
// expected-error@+1 {{expected function type}}
193
193
llvm.call %callee (%arg ) : !llvm.func <i8 (i8 )>
194
+ llvm.return
194
195
}
195
196
196
197
// -----
197
198
198
199
func.func @invalid_call () {
199
200
// expected-error@+1 {{'llvm.call' op must have either a `callee` attribute or at least an operand}}
200
201
" llvm.call" () : () -> ()
202
+ llvm.return
201
203
}
202
204
203
205
// -----
204
206
205
207
func.func @call_non_function_type (%callee : !llvm.func <i8 (i8 )>, %arg : i8 ) {
206
208
// expected-error@+1 {{expected function type}}
207
209
llvm.call %callee (%arg ) : !llvm.func <i8 (i8 )>
210
+ llvm.return
208
211
}
209
212
210
213
// -----
211
214
212
215
func.func @call_unknown_symbol () {
213
216
// expected-error@+1 {{'llvm.call' op 'missing_callee' does not reference a symbol in the current scope}}
214
217
llvm.call @missing_callee () : () -> ()
218
+ llvm.return
215
219
}
216
220
217
221
// -----
@@ -221,13 +225,15 @@ func.func private @standard_func_callee()
221
225
func.func @call_non_llvm () {
222
226
// expected-error@+1 {{'llvm.call' op 'standard_func_callee' does not reference a valid LLVM function}}
223
227
llvm.call @standard_func_callee () : () -> ()
228
+ llvm.return
224
229
}
225
230
226
231
// -----
227
232
228
233
func.func @call_non_llvm_indirect (%arg0 : tensor <*xi32 >) {
229
234
// expected-error@+1 {{'llvm.call' op operand #0 must be LLVM dialect-compatible type}}
230
235
" llvm.call" (%arg0 ) : (tensor <*xi32 >) -> ()
236
+ llvm.return
231
237
}
232
238
233
239
// -----
@@ -237,13 +243,15 @@ llvm.func @callee_func(i8) -> ()
237
243
func.func @callee_arg_mismatch (%arg0 : i32 ) {
238
244
// expected-error@+1 {{'llvm.call' op operand type mismatch for operand 0: 'i32' != 'i8'}}
239
245
llvm.call @callee_func (%arg0 ) : (i32 ) -> ()
246
+ llvm.return
240
247
}
241
248
242
249
// -----
243
250
244
251
func.func @indirect_callee_arg_mismatch (%arg0 : i32 , %callee : !llvm.ptr <func <void (i8 )>>) {
245
252
// expected-error@+1 {{'llvm.call' op operand type mismatch for operand 0: 'i32' != 'i8'}}
246
253
" llvm.call" (%callee , %arg0 ) : (!llvm.ptr <func <void (i8 )>>, i32 ) -> ()
254
+ llvm.return
247
255
}
248
256
249
257
// -----
@@ -253,34 +261,39 @@ llvm.func @callee_func() -> (i8)
253
261
func.func @callee_return_mismatch () {
254
262
// expected-error@+1 {{'llvm.call' op result type mismatch: 'i32' != 'i8'}}
255
263
%res = llvm.call @callee_func () : () -> (i32 )
264
+ llvm.return
256
265
}
257
266
258
267
// -----
259
268
260
269
func.func @indirect_callee_return_mismatch (%callee : !llvm.ptr <func <i8 ()>>) {
261
270
// expected-error@+1 {{'llvm.call' op result type mismatch: 'i32' != 'i8'}}
262
271
" llvm.call" (%callee ) : (!llvm.ptr <func <i8 ()>>) -> (i32 )
272
+ llvm.return
263
273
}
264
274
265
275
// -----
266
276
267
277
func.func @call_too_many_results (%callee : () -> (i32 ,i32 )) {
268
278
// expected-error@+1 {{expected function with 0 or 1 result}}
269
279
llvm.call %callee () : () -> (i32 , i32 )
280
+ llvm.return
270
281
}
271
282
272
283
// -----
273
284
274
285
func.func @call_non_llvm_result (%callee : () -> (tensor <*xi32 >)) {
275
286
// expected-error@+1 {{expected result to have LLVM type}}
276
287
llvm.call %callee () : () -> (tensor <*xi32 >)
288
+ llvm.return
277
289
}
278
290
279
291
// -----
280
292
281
293
func.func @call_non_llvm_input (%callee : (tensor <*xi32 >) -> (), %arg : tensor <*xi32 >) {
282
294
// expected-error@+1 {{expected LLVM types as inputs}}
283
295
llvm.call %callee (%arg ) : (tensor <*xi32 >) -> ()
296
+ llvm.return
284
297
}
285
298
286
299
// -----
0 commit comments