[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / Verifier / tailcc-musttail.ll
blob2f0ce4f4b55e09bc003bf9c954faa24e7764774c
1 ; RUN: not opt -passes=verify %s 2>&1 | FileCheck %s
3 declare tailcc void @simple()
5 define tailcc void @inreg(ptr inreg) {
6 ; CHECK: inreg attribute not allowed in tailcc musttail caller
7   musttail call tailcc void @simple()
8   ret void
11 define tailcc void @inalloca(ptr inalloca(i8)) {
12 ; CHECK: inalloca attribute not allowed in tailcc musttail caller
13   musttail call tailcc void @simple()
14   ret void
17 define tailcc void @swifterror(ptr swifterror) {
18 ; CHECK: swifterror attribute not allowed in tailcc musttail caller
19   musttail call tailcc void @simple()
20   ret void
23 define tailcc void @preallocated(ptr preallocated(i8)) {
24 ; CHECK: preallocated attribute not allowed in tailcc musttail caller
25   musttail call tailcc void @simple()
26   ret void
29 define tailcc void @byref(ptr byref(i8)) {
30 ; CHECK: byref attribute not allowed in tailcc musttail caller
31   musttail call tailcc void @simple()
32   ret void
35 define tailcc void @call_inreg() {
36 ; CHECK: inreg attribute not allowed in tailcc musttail callee
37   musttail call tailcc void @inreg(ptr inreg undef)
38   ret void
41 define tailcc void @call_inalloca() {
42 ; CHECK: inalloca attribute not allowed in tailcc musttail callee
43   musttail call tailcc void @inalloca(ptr inalloca(i8) undef)
44   ret void
47 define tailcc void @call_swifterror() {
48 ; CHECK: swifterror attribute not allowed in tailcc musttail callee
49   %err = alloca swifterror ptr
50   musttail call tailcc void @swifterror(ptr swifterror %err)
51   ret void
54 define tailcc void @call_preallocated() {
55 ; CHECK: preallocated attribute not allowed in tailcc musttail callee
56   musttail call tailcc void @preallocated(ptr preallocated(i8) undef)
57   ret void
60 define tailcc void @call_byref() {
61 ; CHECK: byref attribute not allowed in tailcc musttail callee
62   musttail call tailcc void @byref(ptr byref(i8) undef)
63   ret void
67 declare tailcc void @varargs(...)
68 define tailcc void @call_varargs(...) {
69 ; CHECK: cannot guarantee tailcc tail call for varargs function
70   musttail call tailcc void(...) @varargs(...)
71   ret void