mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-17 05:29:24 +00:00
Verify function attributes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57020 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
17a82eaeb6
commit
6d1b8a5911
@ -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