[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