mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-12-27 14:07:32 +00:00
Verify function attributes.
llvm-svn: 57020
This commit is contained in:
parent
d572afd76c
commit
2bed4d4ca0
@ -53,8 +53,8 @@ const Attributes Alignment = 0xffff<<16; ///< Alignment of parameter (16 bits)
|
||||
/// @brief Attributes that only apply to function parameters.
|
||||
const Attributes ParameterOnly = ByVal | Nest | StructRet;
|
||||
|
||||
/// @brief Attributes that only apply to function return values.
|
||||
const Attributes ReturnOnly = NoReturn | NoUnwind | ReadNone | ReadOnly;
|
||||
/// @brief Attributes that only apply to function.
|
||||
const Attributes FunctionOnly = NoReturn | NoUnwind | ReadNone | ReadOnly;
|
||||
|
||||
/// @brief Parameter attributes that do not apply to vararg call arguments.
|
||||
const Attributes VarArgsIncompatible = StructRet;
|
||||
|
@ -416,7 +416,7 @@ void Verifier::VerifyAttrs(Attributes Attrs, const Type *Ty,
|
||||
Assert1(!RetI, "Attribute " + Attribute::getAsString(RetI) +
|
||||
" does not apply to return values!", V);
|
||||
} else {
|
||||
Attributes ParmI = Attrs & Attribute::ReturnOnly;
|
||||
Attributes ParmI = Attrs & Attribute::FunctionOnly;
|
||||
Assert1(!ParmI, "Attribute " + Attribute::getAsString(ParmI) +
|
||||
" only applies to return values!", V);
|
||||
}
|
||||
@ -477,6 +477,10 @@ void Verifier::VerifyFunctionAttrs(const FunctionType *FT,
|
||||
}
|
||||
|
||||
Attributes FAttrs = Attrs.getFnAttributes();
|
||||
Assert1(!(FAttrs & (!Attribute::FunctionOnly)),
|
||||
"Attribute " + Attribute::getAsString(FAttrs) +
|
||||
" does not apply to function!", V);
|
||||
|
||||
for (unsigned i = 0;
|
||||
i < array_lengthof(Attribute::MutuallyIncompatible); ++i) {
|
||||
Attributes MutI = FAttrs & Attribute::MutuallyIncompatible[i];
|
||||
|
Loading…
Reference in New Issue
Block a user