mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-14 07:31:39 +00:00
Fix function attribute verification check.
Thanks Duncan! llvm-svn: 57029
This commit is contained in:
parent
27d8955b8f
commit
0d22d8ebdb
@ -54,7 +54,8 @@ const Attributes Alignment = 0xffff<<16; ///< Alignment of parameter (16 bits)
|
||||
const Attributes ParameterOnly = ByVal | Nest | StructRet;
|
||||
|
||||
/// @brief Attributes that only apply to function.
|
||||
const Attributes FunctionOnly = NoReturn | NoUnwind | ReadNone | ReadOnly;
|
||||
const Attributes FunctionOnly = NoReturn | NoUnwind | ReadNone | ReadOnly |
|
||||
NoInline | AlwaysInline | OptimizeForSize;
|
||||
|
||||
/// @brief Parameter attributes that do not apply to vararg call arguments.
|
||||
const Attributes VarArgsIncompatible = StructRet;
|
||||
|
@ -415,12 +415,11 @@ void Verifier::VerifyAttrs(Attributes Attrs, const Type *Ty,
|
||||
Attributes RetI = Attrs & Attribute::ParameterOnly;
|
||||
Assert1(!RetI, "Attribute " + Attribute::getAsString(RetI) +
|
||||
" does not apply to return values!", V);
|
||||
} else {
|
||||
Attributes ParmI = Attrs & Attribute::FunctionOnly;
|
||||
Assert1(!ParmI, "Attribute " + Attribute::getAsString(ParmI) +
|
||||
" only applies to return values!", V);
|
||||
}
|
||||
|
||||
Attributes FnCheckAttr = Attrs & Attribute::FunctionOnly;
|
||||
Assert1(!FnCheckAttr, "Attribute " + Attribute::getAsString(FnCheckAttr) +
|
||||
" only applies to return values!", V);
|
||||
|
||||
for (unsigned i = 0;
|
||||
i < array_lengthof(Attribute::MutuallyIncompatible); ++i) {
|
||||
Attributes MutI = Attrs & Attribute::MutuallyIncompatible[i];
|
||||
@ -477,7 +476,7 @@ void Verifier::VerifyFunctionAttrs(const FunctionType *FT,
|
||||
}
|
||||
|
||||
Attributes FAttrs = Attrs.getFnAttributes();
|
||||
Assert1(!(FAttrs & (!Attribute::FunctionOnly)),
|
||||
Assert1(!(FAttrs & (~Attribute::FunctionOnly)),
|
||||
"Attribute " + Attribute::getAsString(FAttrs) +
|
||||
" does not apply to function!", V);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user