As the number of parameter attributes increases,
authorDuncan Sands <baldrick@free.fr>
Fri, 27 Jul 2007 15:09:54 +0000 (15:09 +0000)
committerDuncan Sands <baldrick@free.fr>
Fri, 27 Jul 2007 15:09:54 +0000 (15:09 +0000)
commitfdef00f1f7da225ad5d21f3148487e3547954a0c
tree2af2e0d7c9c69a5d9ba5df6a6f6d2b9c840e2dd5
parent36397f50343639ce9a25996f2d790c656791ab92
As the number of parameter attributes increases,
Verifier::visitFunction is suffering a combinatorial
explosion due to the number of mutually incompatible
attributes.  This patch tidies the whole thing up
using attribute masks.  While there I fixed some
small bugs: (1) the ByVal attribute tests cast a
type to a pointer type, which can fail.  Yes, the
fact it is of a pointer type is checked before,
but a failing check does not cause the program
to exit, it continues on outputting further errors;
(2) Nothing was checking that an sret attribute is
on the first parameter; (3) nothing was checking that
a function for which isStructReturn() is true has a
parameter with the sret attribute and vice-versa (I
don't think it is possible for this to go wrong, but
it seems right to check it).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40553 91177308-0d34-0410-b5e6-96231b3b80d8
lib/VMCore/Verifier.cpp