The 'optnone' attribute means don't inline anything into this function

(except functions marked always_inline).
Functions with 'optnone' must also have 'noinline' so they don't get
inlined into any other function.

Based on work by Andrea Di Biagio.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@195046 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Paul Robinson
2013-11-18 21:44:03 +00:00
parent 3560dd2dcd
commit fe45fd084d
6 changed files with 67 additions and 10 deletions

View File

@ -927,9 +927,9 @@ void Verifier::VerifyFunctionAttrs(FunctionType *FT, AttributeSet Attrs,
if (Attrs.hasAttribute(AttributeSet::FunctionIndex,
Attribute::OptimizeNone)) {
Assert1(!Attrs.hasAttribute(AttributeSet::FunctionIndex,
Attribute::AlwaysInline),
"Attributes 'alwaysinline and optnone' are incompatible!", V);
Assert1(Attrs.hasAttribute(AttributeSet::FunctionIndex,
Attribute::NoInline),
"Attribute 'optnone' requires 'noinline'!", V);
Assert1(!Attrs.hasAttribute(AttributeSet::FunctionIndex,
Attribute::OptimizeForSize),