[llvm-commits] [llvm] r56524 - in /llvm/trunk: include/llvm/Attributes.h include/llvm/Function.h lib/AsmParser/llvmAsmParser.cpp.cvs lib/AsmParser/llvmAsmParser.y lib/AsmParser/llvmAsmParser.y.cvs lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp lib/Target/X86/AsmPrinter/X86IntelAsmPrinter.cpp lib/Transforms/IPO/InlineAlways.cpp lib/Transforms/IPO/InlineSimple.cpp lib/Transforms/IPO/Inliner.cpp lib/Transforms/Scalar/LoopUnswitch.cpp lib/Transforms/Utils/InlineCost.cpp lib/VMCore/AsmWriter.cpp
Chris Lattner
clattner at apple.com
Tue Sep 23 16:53:08 PDT 2008
On Sep 23, 2008, at 4:52 PM, Devang Patel wrote:
> Author: dpatel
> Date: Tue Sep 23 18:52:03 2008
> New Revision: 56524
>
> URL: http://llvm.org/viewvc/llvm-project?rev=56524&view=rev
> Log:
> Move FN_NOTE_AlwaysInline and other out of ParamAttrs namespace.
> Do not check isDeclaration() in hasNote(). It is clients'
> responsibility.
Eww, please introduce a new namespace. Like "FnAttr::NoInline". I
still don't understand how notes are different than attributes. These
are just function attributes, no?
-Chris
>
>
> Modified:
> llvm/trunk/include/llvm/Attributes.h
> llvm/trunk/include/llvm/Function.h
> llvm/trunk/lib/AsmParser/llvmAsmParser.cpp.cvs
> llvm/trunk/lib/AsmParser/llvmAsmParser.y
> llvm/trunk/lib/AsmParser/llvmAsmParser.y.cvs
> llvm/trunk/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp
> llvm/trunk/lib/Target/X86/AsmPrinter/X86IntelAsmPrinter.cpp
> llvm/trunk/lib/Transforms/IPO/InlineAlways.cpp
> llvm/trunk/lib/Transforms/IPO/InlineSimple.cpp
> llvm/trunk/lib/Transforms/IPO/Inliner.cpp
> llvm/trunk/lib/Transforms/Scalar/LoopUnswitch.cpp
> llvm/trunk/lib/Transforms/Utils/InlineCost.cpp
> llvm/trunk/lib/VMCore/AsmWriter.cpp
>
> Modified: llvm/trunk/include/llvm/Attributes.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Attributes.h?rev=56524&r1=56523&r2=56524&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/include/llvm/Attributes.h (original)
> +++ llvm/trunk/include/llvm/Attributes.h Tue Sep 23 18:52:03 2008
> @@ -46,13 +46,6 @@
> const Attributes Alignment = 0xffff<<16; ///< Alignment of parameter
> (16 bits)
> // 0 = unknown, else in clear
> (not log)
>
> -/// Function notes are implemented as attributes stored at index ~0
> in
> -/// parameter attribute list.
> -const Attributes FN_NOTE_None = 0;
> -const Attributes FN_NOTE_NoInline = 1<<0; // inline=never
> -const Attributes FN_NOTE_AlwaysInline = 1<<1; // inline=always
> -const Attributes FN_NOTE_OptimizeForSize = 1<<2; // opt_size
> -
> /// @brief Attributes that only apply to function parameters.
> const Attributes ParameterOnly = ByVal | Nest | StructRet;
>
> @@ -85,6 +78,12 @@
> std::string getAsString(Attributes Attrs);
> } // end namespace ParamAttr
>
> +/// Function notes are implemented as attributes stored at index ~0
> in
> +/// parameter attribute list.
> +const Attributes FN_NOTE_None = 0;
> +const Attributes FN_NOTE_NoInline = 1<<0; // inline=never
> +const Attributes FN_NOTE_AlwaysInline = 1<<1; // inline=always
> +const Attributes FN_NOTE_OptimizeForSize = 1<<2; // opt_size
>
> /// This is just a pair of values to associate a set of parameter
> attributes
> /// with a parameter index.
>
> Modified: llvm/trunk/include/llvm/Function.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Function.h?rev=56524&r1=56523&r2=56524&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/include/llvm/Function.h (original)
> +++ llvm/trunk/include/llvm/Function.h Tue Sep 23 18:52:03 2008
> @@ -152,7 +152,7 @@
> /// hasNote - Return true if this function has given note.
> bool hasNote(Attributes N) const {
> // Notes are stored at ~0 index in parameter attribute list
> - return (!isDeclaration() && paramHasAttr(~0, N));
> + return (paramHasAttr(~0, N));
> }
>
> /// setNotes - Set notes for this function
>
> Modified: llvm/trunk/lib/AsmParser/llvmAsmParser.cpp.cvs
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/AsmParser/llvmAsmParser.cpp.cvs?rev=56524&r1=56523&r2=56524&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/lib/AsmParser/llvmAsmParser.cpp.cvs (original)
> +++ llvm/trunk/lib/AsmParser/llvmAsmParser.cpp.cvs Tue Sep 23
> 18:52:03 2008
> @@ -4125,11 +4125,11 @@
> #line 1298 "/Volumes/Nanpura/mainline/llvm/lib/AsmParser/
> llvmAsmParser.y"
> {
> unsigned tmp = (yyvsp[(1) - (3)].ParamAttrs) |
> (yyvsp[(3) - (3)].ParamAttrs);
> - if ((yyvsp[(3) - (3)].ParamAttrs) ==
> ParamAttr::FN_NOTE_NoInline
> - && ((yyvsp[(1) - (3)].ParamAttrs) &
> ParamAttr::FN_NOTE_AlwaysInline))
> + if ((yyvsp[(3) - (3)].ParamAttrs) == FN_NOTE_NoInline
> + && ((yyvsp[(1) - (3)].ParamAttrs) &
> FN_NOTE_AlwaysInline))
> GEN_ERROR("Function Notes may include only one
> inline notes!")
> - if ((yyvsp[(3) - (3)].ParamAttrs) ==
> ParamAttr::FN_NOTE_AlwaysInline
> - && ((yyvsp[(1) - (3)].ParamAttrs) &
> ParamAttr::FN_NOTE_NoInline))
> + if ((yyvsp[(3) - (3)].ParamAttrs) ==
> FN_NOTE_AlwaysInline
> + && ((yyvsp[(1) - (3)].ParamAttrs) &
> FN_NOTE_NoInline))
> GEN_ERROR("Function Notes may include only one
> inline notes!")
> (yyval.ParamAttrs) = tmp;
> CHECK_FOR_ERROR
> @@ -4138,22 +4138,22 @@
>
> case 131:
> #line 1311 "/Volumes/Nanpura/mainline/llvm/lib/AsmParser/
> llvmAsmParser.y"
> - { (yyval.ParamAttrs) = ParamAttr::FN_NOTE_NoInline; ;}
> + { (yyval.ParamAttrs) = FN_NOTE_NoInline; ;}
> break;
>
> case 132:
> #line 1312 "/Volumes/Nanpura/mainline/llvm/lib/AsmParser/
> llvmAsmParser.y"
> - { (yyval.ParamAttrs) = ParamAttr::FN_NOTE_AlwaysInline; ;}
> + { (yyval.ParamAttrs) = FN_NOTE_AlwaysInline; ;}
> break;
>
> case 133:
> #line 1313 "/Volumes/Nanpura/mainline/llvm/lib/AsmParser/
> llvmAsmParser.y"
> - { (yyval.ParamAttrs) = ParamAttr::FN_NOTE_OptimizeForSize; ;}
> + { (yyval.ParamAttrs) = FN_NOTE_OptimizeForSize; ;}
> break;
>
> case 134:
> #line 1316 "/Volumes/Nanpura/mainline/llvm/lib/AsmParser/
> llvmAsmParser.y"
> - { (yyval.ParamAttrs) = ParamAttr::FN_NOTE_None; ;}
> + { (yyval.ParamAttrs) = FN_NOTE_None; ;}
> break;
>
> case 135:
>
> Modified: llvm/trunk/lib/AsmParser/llvmAsmParser.y
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/AsmParser/llvmAsmParser.y?rev=56524&r1=56523&r2=56524&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/lib/AsmParser/llvmAsmParser.y (original)
> +++ llvm/trunk/lib/AsmParser/llvmAsmParser.y Tue Sep 23 18:52:03 2008
> @@ -1297,23 +1297,23 @@
> FuncNoteList : FuncNote { $$ = $1; }
> | FuncNoteList ',' FuncNote {
> unsigned tmp = $1 | $3;
> - if ($3 == ParamAttr::FN_NOTE_NoInline
> - && ($1 & ParamAttr::FN_NOTE_AlwaysInline))
> + if ($3 == FN_NOTE_NoInline
> + && ($1 & FN_NOTE_AlwaysInline))
> GEN_ERROR("Function Notes may include only one
> inline notes!")
> - if ($3 == ParamAttr::FN_NOTE_AlwaysInline
> - && ($1 & ParamAttr::FN_NOTE_NoInline))
> + if ($3 == FN_NOTE_AlwaysInline
> + && ($1 & FN_NOTE_NoInline))
> GEN_ERROR("Function Notes may include only one
> inline notes!")
> $$ = tmp;
> CHECK_FOR_ERROR
> }
> ;
>
> -FuncNote : INLINE '=' NEVER { $$ =
> ParamAttr::FN_NOTE_NoInline; }
> - | INLINE '=' ALWAYS { $$ =
> ParamAttr::FN_NOTE_AlwaysInline; }
> - | OPTIMIZEFORSIZE { $$ =
> ParamAttr::FN_NOTE_OptimizeForSize; }
> +FuncNote : INLINE '=' NEVER { $$ = FN_NOTE_NoInline; }
> + | INLINE '=' ALWAYS { $$ = FN_NOTE_AlwaysInline; }
> + | OPTIMIZEFORSIZE { $$ = FN_NOTE_OptimizeForSize; }
> ;
>
> -OptFuncNotes : /* empty */ { $$ = ParamAttr::FN_NOTE_None; }
> +OptFuncNotes : /* empty */ { $$ = FN_NOTE_None; }
> | FNNOTE '(' FuncNoteList ')' {
> $$ = $3;
> }
>
> Modified: llvm/trunk/lib/AsmParser/llvmAsmParser.y.cvs
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/AsmParser/llvmAsmParser.y.cvs?rev=56524&r1=56523&r2=56524&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/lib/AsmParser/llvmAsmParser.y.cvs (original)
> +++ llvm/trunk/lib/AsmParser/llvmAsmParser.y.cvs Tue Sep 23 18:52:03
> 2008
> @@ -1297,23 +1297,23 @@
> FuncNoteList : FuncNote { $$ = $1; }
> | FuncNoteList ',' FuncNote {
> unsigned tmp = $1 | $3;
> - if ($3 == ParamAttr::FN_NOTE_NoInline
> - && ($1 & ParamAttr::FN_NOTE_AlwaysInline))
> + if ($3 == FN_NOTE_NoInline
> + && ($1 & FN_NOTE_AlwaysInline))
> GEN_ERROR("Function Notes may include only one
> inline notes!")
> - if ($3 == ParamAttr::FN_NOTE_AlwaysInline
> - && ($1 & ParamAttr::FN_NOTE_NoInline))
> + if ($3 == FN_NOTE_AlwaysInline
> + && ($1 & FN_NOTE_NoInline))
> GEN_ERROR("Function Notes may include only one
> inline notes!")
> $$ = tmp;
> CHECK_FOR_ERROR
> }
> ;
>
> -FuncNote : INLINE '=' NEVER { $$ =
> ParamAttr::FN_NOTE_NoInline; }
> - | INLINE '=' ALWAYS { $$ =
> ParamAttr::FN_NOTE_AlwaysInline; }
> - | OPTIMIZEFORSIZE { $$ =
> ParamAttr::FN_NOTE_OptimizeForSize; }
> +FuncNote : INLINE '=' NEVER { $$ = FN_NOTE_NoInline; }
> + | INLINE '=' ALWAYS { $$ = FN_NOTE_AlwaysInline; }
> + | OPTIMIZEFORSIZE { $$ = FN_NOTE_OptimizeForSize; }
> ;
>
> -OptFuncNotes : /* empty */ { $$ = ParamAttr::FN_NOTE_None; }
> +OptFuncNotes : /* empty */ { $$ = FN_NOTE_None; }
> | FNNOTE '(' FuncNoteList ')' {
> $$ = $3;
> }
>
> Modified: llvm/trunk/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp?rev=56524&r1=56523&r2=56524&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp
> (original)
> +++ llvm/trunk/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp Tue
> Sep 23 18:52:03 2008
> @@ -160,7 +160,7 @@
> SwitchToTextSection(SectionName.c_str());
>
> unsigned FnAlign = OptimizeForSize ? 1 : 4;
> - if (F->hasNote(ParamAttr::FN_NOTE_OptimizeForSize))
> + if (!F->isDeclaration() && F->hasNote(FN_NOTE_OptimizeForSize))
> FnAlign = 1;
> switch (F->getLinkage()) {
> default: assert(0 && "Unknown linkage type!");
>
> Modified: llvm/trunk/lib/Target/X86/AsmPrinter/X86IntelAsmPrinter.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/AsmPrinter/X86IntelAsmPrinter.cpp?rev=56524&r1=56523&r2=56524&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/lib/Target/X86/AsmPrinter/X86IntelAsmPrinter.cpp
> (original)
> +++ llvm/trunk/lib/Target/X86/AsmPrinter/X86IntelAsmPrinter.cpp Tue
> Sep 23 18:52:03 2008
> @@ -147,7 +147,7 @@
> SwitchToTextSection(getSectionForFunction(*F).c_str(), F);
>
> unsigned FnAlign = OptimizeForSize ? 1 : 4;
> - if (F->hasNote(ParamAttr::FN_NOTE_OptimizeForSize))
> + if (!F->isDeclaration() && F->hasNote(FN_NOTE_OptimizeForSize))
> FnAlign = 1;
> switch (F->getLinkage()) {
> default: assert(0 && "Unsupported linkage type!");
>
> Modified: llvm/trunk/lib/Transforms/IPO/InlineAlways.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/InlineAlways.cpp?rev=56524&r1=56523&r2=56524&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/lib/Transforms/IPO/InlineAlways.cpp (original)
> +++ llvm/trunk/lib/Transforms/IPO/InlineAlways.cpp Tue Sep 23
> 18:52:03 2008
> @@ -63,7 +63,7 @@
>
> for (Module::iterator I = M.begin(), E = M.end();
> I != E; ++I)
> - if (!I->isDeclaration() && !I-
> >hasNote(ParamAttr::FN_NOTE_AlwaysInline))
> + if (!I->isDeclaration() && !I->hasNote(FN_NOTE_AlwaysInline))
> NeverInline.insert(I);
>
> return false;
>
> Modified: llvm/trunk/lib/Transforms/IPO/InlineSimple.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/InlineSimple.cpp?rev=56524&r1=56523&r2=56524&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/lib/Transforms/IPO/InlineSimple.cpp (original)
> +++ llvm/trunk/lib/Transforms/IPO/InlineSimple.cpp Tue Sep 23
> 18:52:03 2008
> @@ -65,7 +65,7 @@
>
> for (Module::iterator I = M.begin(), E = M.end();
> I != E; ++I)
> - if (I->hasNote(ParamAttr::FN_NOTE_NoInline))
> + if (!I->isDeclaration() && I->hasNote(FN_NOTE_NoInline))
> NeverInline.insert(I);
>
> // Get llvm.noinline
>
> Modified: llvm/trunk/lib/Transforms/IPO/Inliner.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/Inliner.cpp?rev=56524&r1=56523&r2=56524&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/lib/Transforms/IPO/Inliner.cpp (original)
> +++ llvm/trunk/lib/Transforms/IPO/Inliner.cpp Tue Sep 23 18:52:03 2008
> @@ -141,7 +141,7 @@
>
> int CurrentThreshold = InlineThreshold;
> Function *Fn = CS.getCaller();
> - if (Fn && Fn->hasNote(ParamAttr::FN_NOTE_OptimizeForSize)
> + if (Fn && !Fn->isDeclaration() && Fn-
> >hasNote(FN_NOTE_OptimizeForSize)
> && InlineThreshold != 50) {
> CurrentThreshold = 50;
> }
>
> Modified: llvm/trunk/lib/Transforms/Scalar/LoopUnswitch.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/LoopUnswitch.cpp?rev=56524&r1=56523&r2=56524&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/lib/Transforms/Scalar/LoopUnswitch.cpp (original)
> +++ llvm/trunk/lib/Transforms/Scalar/LoopUnswitch.cpp Tue Sep 23
> 18:52:03 2008
> @@ -430,7 +430,7 @@
> Function *F = loopHeader->getParent();
>
> // Do not unswitch if the function is optimized for size.
> - if (F->hasNote(ParamAttr::FN_NOTE_OptimizeForSize))
> + if (!F->isDeclaration() && F->hasNote(FN_NOTE_OptimizeForSize))
> return false;
>
> // Check to see if it would be profitable to unswitch current loop.
>
> Modified: llvm/trunk/lib/Transforms/Utils/InlineCost.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Utils/InlineCost.cpp?rev=56524&r1=56523&r2=56524&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/lib/Transforms/Utils/InlineCost.cpp (original)
> +++ llvm/trunk/lib/Transforms/Utils/InlineCost.cpp Tue Sep 23
> 18:52:03 2008
> @@ -222,7 +222,7 @@
> if (CalleeFI.NeverInline)
> return 2000000000;
>
> - if (Callee->hasNote(ParamAttr::FN_NOTE_AlwaysInline))
> + if (!Callee->isDeclaration() && Callee-
> >hasNote(FN_NOTE_AlwaysInline))
> return -2000000000;
>
> // Add to the inline quality for properties that make the call
> valuable to
>
> Modified: llvm/trunk/lib/VMCore/AsmWriter.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/AsmWriter.cpp?rev=56524&r1=56523&r2=56524&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/lib/VMCore/AsmWriter.cpp (original)
> +++ llvm/trunk/lib/VMCore/AsmWriter.cpp Tue Sep 23 18:52:03 2008
> @@ -1412,12 +1412,12 @@
> } else {
>
> bool insideNotes = false;
> - if (F->hasNote(ParamAttr::FN_NOTE_AlwaysInline)) {
> + if (F->hasNote(FN_NOTE_AlwaysInline)) {
> Out << "notes(";
> insideNotes = true;
> Out << "inline=always";
> }
> - if (F->hasNote(ParamAttr::FN_NOTE_NoInline)) {
> + if (F->hasNote(FN_NOTE_NoInline)) {
> if (insideNotes)
> Out << ",";
> else {
> @@ -1426,7 +1426,7 @@
> }
> Out << "inline=never";
> }
> - if (F->hasNote(ParamAttr::FN_NOTE_OptimizeForSize)) {
> + if (F->hasNote(FN_NOTE_OptimizeForSize)) {
> if (insideNotes)
> Out << ",";
> else {
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list