1; RUN: not opt -passes=verify %s 2>&1 | FileCheck %s 2 3declare swifttailcc void @simple() 4 5define swifttailcc void @inreg(ptr inreg) { 6; CHECK: inreg attribute not allowed in swifttailcc musttail caller 7 musttail call swifttailcc void @simple() 8 ret void 9} 10 11define swifttailcc void @inalloca(ptr inalloca(i8)) { 12; CHECK: inalloca attribute not allowed in swifttailcc musttail caller 13 musttail call swifttailcc void @simple() 14 ret void 15} 16 17define swifttailcc void @swifterror(ptr swifterror) { 18; CHECK: swifterror attribute not allowed in swifttailcc musttail caller 19 musttail call swifttailcc void @simple() 20 ret void 21} 22 23define swifttailcc void @preallocated(ptr preallocated(i8)) { 24; CHECK: preallocated attribute not allowed in swifttailcc musttail caller 25 musttail call swifttailcc void @simple() 26 ret void 27} 28 29define swifttailcc void @byref(ptr byref(i8)) { 30; CHECK: byref attribute not allowed in swifttailcc musttail caller 31 musttail call swifttailcc void @simple() 32 ret void 33} 34 35define swifttailcc void @call_inreg() { 36; CHECK: inreg attribute not allowed in swifttailcc musttail callee 37 musttail call swifttailcc void @inreg(ptr inreg undef) 38 ret void 39} 40 41define swifttailcc void @call_inalloca() { 42; CHECK: inalloca attribute not allowed in swifttailcc musttail callee 43 musttail call swifttailcc void @inalloca(ptr inalloca(i8) undef) 44 ret void 45} 46 47define swifttailcc void @call_swifterror() { 48; CHECK: swifterror attribute not allowed in swifttailcc musttail callee 49 %err = alloca swifterror ptr 50 musttail call swifttailcc void @swifterror(ptr swifterror %err) 51 ret void 52} 53 54define swifttailcc void @call_preallocated() { 55; CHECK: preallocated attribute not allowed in swifttailcc musttail callee 56 musttail call swifttailcc void @preallocated(ptr preallocated(i8) undef) 57 ret void 58} 59 60define swifttailcc void @call_byref() { 61; CHECK: byref attribute not allowed in swifttailcc musttail callee 62 musttail call swifttailcc void @byref(ptr byref(i8) undef) 63 ret void 64} 65 66 67declare swifttailcc void @varargs(...) 68define swifttailcc void @call_varargs(...) { 69; CHECK: cannot guarantee swifttailcc tail call for varargs function 70 musttail call swifttailcc void(...) @varargs(...) 71 ret void 72} 73