73 lines · plain
1; RUN: not opt -passes=verify %s 2>&1 | FileCheck %s2 3declare tailcc void @simple()4 5define tailcc void @inreg(ptr inreg) {6; CHECK: inreg attribute not allowed in tailcc musttail caller7 musttail call tailcc void @simple()8 ret void9}10 11define tailcc void @inalloca(ptr inalloca(i8)) {12; CHECK: inalloca attribute not allowed in tailcc musttail caller13 musttail call tailcc void @simple()14 ret void15}16 17define tailcc void @swifterror(ptr swifterror) {18; CHECK: swifterror attribute not allowed in tailcc musttail caller19 musttail call tailcc void @simple()20 ret void21}22 23define tailcc void @preallocated(ptr preallocated(i8)) {24; CHECK: preallocated attribute not allowed in tailcc musttail caller25 musttail call tailcc void @simple()26 ret void27}28 29define tailcc void @byref(ptr byref(i8)) {30; CHECK: byref attribute not allowed in tailcc musttail caller31 musttail call tailcc void @simple()32 ret void33}34 35define tailcc void @call_inreg() {36; CHECK: inreg attribute not allowed in tailcc musttail callee37 musttail call tailcc void @inreg(ptr inreg undef)38 ret void39}40 41define tailcc void @call_inalloca() {42; CHECK: inalloca attribute not allowed in tailcc musttail callee43 musttail call tailcc void @inalloca(ptr inalloca(i8) undef)44 ret void45}46 47define tailcc void @call_swifterror() {48; CHECK: swifterror attribute not allowed in tailcc musttail callee49 %err = alloca swifterror ptr50 musttail call tailcc void @swifterror(ptr swifterror %err)51 ret void52}53 54define tailcc void @call_preallocated() {55; CHECK: preallocated attribute not allowed in tailcc musttail callee56 musttail call tailcc void @preallocated(ptr preallocated(i8) undef)57 ret void58}59 60define tailcc void @call_byref() {61; CHECK: byref attribute not allowed in tailcc musttail callee62 musttail call tailcc void @byref(ptr byref(i8) undef)63 ret void64}65 66 67declare tailcc void @varargs(...)68define tailcc void @call_varargs(...) {69; CHECK: cannot guarantee tailcc tail call for varargs function70 musttail call tailcc void(...) @varargs(...)71 ret void72}73