forked from OSchip/llvm-project
7941856445
MSVC always places the implicit sret parameter after the implicit this parameter of instance methods. We used to handle this for x86_thiscallcc by allocating the sret parameter on the stack and leaving the this pointer in ecx, but that doesn't handle alternative calling conventions like cdecl, stdcall, fastcall, or the win64 convention. Instead, change the verifier to allow sret on the second parameter. This also requires changing the Mips and X86 backends to return the argument with the sret parameter, instead of assuming that the sret parameter comes first. The Sparc backend also returns sret parameters in a register, but I wasn't able to update it to handle secondary sret parameters. It currently calls report_fatal_error if you feed it an sret in the second parameter. Reviewers: rafael.espindola, majnemer Differential Revision: http://reviews.llvm.org/D3617 llvm-svn: 208453 |
||
---|---|---|
.. | ||
2002-04-13-RetTypes.ll | ||
2002-11-05-GetelementptrPointers.ll | ||
2004-05-21-SwitchConstantMismatch.ll | ||
2006-07-11-StoreStruct.ll | ||
2006-10-15-AddrLabel.ll | ||
2006-12-12-IntrinsicDefine.ll | ||
2007-12-21-InvokeParamAttrs.ll | ||
2008-01-11-VarargAttrs.ll | ||
2008-03-01-AllocaSized.ll | ||
2008-08-22-MemCpyAlignment.ll | ||
2008-11-15-RetVoid.ll | ||
2009-05-29-InvokeResult1.ll | ||
2009-05-29-InvokeResult2.ll | ||
2009-05-29-InvokeResult3.ll | ||
2010-08-07-PointerIntrinsic.ll | ||
AmbiguousPhi.ll | ||
PhiGrouping.ll | ||
README.txt | ||
SelfReferential.ll | ||
alias.ll | ||
aliasing-chain.ll | ||
bitcast-address-space-nested-global-cycle.ll | ||
bitcast-address-space-nested-global.ll | ||
bitcast-address-space-through-constant-inttoptr-inside-gep-instruction.ll | ||
bitcast-address-space-through-constant-inttoptr.ll | ||
bitcast-address-space-through-gep-2.ll | ||
bitcast-address-space-through-gep.ll | ||
bitcast-address-space-through-inttoptr.ll | ||
bitcast-address-spaces.ll | ||
bitcast-alias-address-space.ll | ||
bitcast-vector-pointer-as.ll | ||
byval-1.ll | ||
byval-4.ll | ||
cttz-undef-arg.ll | ||
dominates.ll | ||
fpmath.ll | ||
gcread-ptrptr.ll | ||
gcroot-alloca.ll | ||
gcroot-meta.ll | ||
gcroot-ptrptr.ll | ||
gcwrite-ptrptr.ll | ||
ident-meta1.ll | ||
ident-meta2.ll | ||
ident-meta3.ll | ||
inalloca-vararg.ll | ||
inalloca1.ll | ||
inalloca2.ll | ||
inalloca3.ll | ||
invoke.ll | ||
llvm.compiler_used-invalid-type.ll | ||
llvm.used-invalid-init.ll | ||
llvm.used-invalid-init2.ll | ||
llvm.used-invalid-type.ll | ||
llvm.used-invalid-type2.ll | ||
llvm.used-ptr-type.ll | ||
module-flags-1.ll | ||
musttail-invalid.ll | ||
musttail-valid.ll | ||
range-1.ll | ||
range-2.ll | ||
recursive-type-1.ll | ||
recursive-type-2.ll | ||
recursive-type-3.ll | ||
sret.ll | ||
varargs-intrinsic.ll |
README.txt
This directory contains testcases that the verifier is supposed to detect as malformed LLVM code. Testcases for situations that the verifier incorrectly identifies as malformed should go in the test/Assembler directory.