From a472f66dd0ec371399ed5d52271dff4f58833eb0 Mon Sep 17 00:00:00 2001 From: Reid Spencer Date: Wed, 11 Apr 2007 02:44:20 +0000 Subject: [PATCH] For PR1146: Put the parameter attributes in their own ParamAttr name space. Adjust the rest of llvm as a result. llvm-svn: 35877 --- llvm/include/llvm/ParameterAttributes.h | 67 ++++++++++++++----- llvm/lib/AsmParser/llvmAsmParser.cpp.cvs | 44 ++++++------ llvm/lib/AsmParser/llvmAsmParser.y | 44 ++++++------ llvm/lib/AsmParser/llvmAsmParser.y.cvs | 44 ++++++------ .../CodeGen/SelectionDAG/SelectionDAGISel.cpp | 26 +++---- llvm/lib/Linker/LinkItems.cpp | 16 +++-- llvm/lib/Target/CBackend/CBackend.cpp | 16 ++--- llvm/lib/Target/MSIL/MSILWriter.cpp | 4 +- llvm/lib/VMCore/AsmWriter.cpp | 22 +++--- llvm/lib/VMCore/Function.cpp | 16 ++--- llvm/lib/VMCore/Type.cpp | 6 +- llvm/tools/llvm-upgrade/UpgradeParser.cpp.cvs | 16 ++--- llvm/tools/llvm-upgrade/UpgradeParser.y | 16 ++--- llvm/tools/llvm-upgrade/UpgradeParser.y.cvs | 16 ++--- 14 files changed, 196 insertions(+), 157 deletions(-) diff --git a/llvm/include/llvm/ParameterAttributes.h b/llvm/include/llvm/ParameterAttributes.h index e1c2844bfebe..48044b95914e 100644 --- a/llvm/include/llvm/ParameterAttributes.h +++ b/llvm/include/llvm/ParameterAttributes.h @@ -1,4 +1,4 @@ -//===-- llvm/ParameterAttributes.h - Container for Param Attrs --*- C++ -*-===// +//===-- llvm/ParameterAttributes.h - Container for ParamAttrs ---*- C++ -*-===// // // The LLVM Compiler Infrastructure // @@ -25,16 +25,22 @@ namespace llvm { /// treated by optimizations and code generation. This enumeration lists the /// attributes that can be associated with parameters or function results. /// @brief Function parameter attributes. -enum ParameterAttributes { - NoAttributeSet = 0, ///< No attributes have been set - ZExtAttribute = 1 << 0, ///< zero extended before/after call - SExtAttribute = 1 << 1, ///< sign extended before/after call - NoReturnAttribute = 1 << 2, ///< mark the function as not returning - InRegAttribute = 1 << 3, ///< force argument to be passed in register - StructRetAttribute = 1 << 4, ///< hidden pointer to structure to return - NoUnwindAttribute = 1 << 5 ///< Function doesn't unwind stack +namespace ParamAttr { + +enum Attributes { + None = 0, ///< No attributes have been set + ZExt = 1 << 0, ///< zero extended before/after call + SExt = 1 << 1, ///< sign extended before/after call + NoReturn = 1 << 2, ///< mark the function as not returning + InReg = 1 << 3, ///< force argument to be passed in register + StructRet = 1 << 4, ///< hidden pointer to structure to return + NoUnwind = 1 << 5 ///< Function doesn't unwind stack }; +} + +typedef ParamAttr::Attributes ParameterAttributes; + /// This class is used by Function and CallInst to represent the set of /// parameter attributes used. It represents a list of pairs of uint16_t, one /// for the parameter index, and one a set of ParameterAttributes bits. @@ -45,6 +51,39 @@ enum ParameterAttributes { /// are provided to obtain information about the attributes. /// @brief A List of ParameterAttributes. class ParamAttrsList { + //void operator=(const ParamAttrsList &); // Do not implement + //ParamAttrsList(const ParamAttrsList &); // Do not implement + + /// @name Types + /// @{ + public: + /// This is an internal structure used to associate the ParameterAttributes + /// with a parameter index. + /// @brief ParameterAttributes with a parameter index. + struct ParamAttrsWithIndex { + uint16_t attrs; ///< The attributes that are set, |'d together + uint16_t index; ///< Index of the parameter for which the attributes apply + }; + + /// @brief A vector of attribute/index pairs. + typedef SmallVector ParamAttrsVector; + + /// @} + /// @name Construction + /// @{ + public: + /// @brief Construct an empty ParamAttrsList + ParamAttrsList() {} + + /// This method ensures the uniqueness of ParamAttrsList instances. The + /// argument is a vector of attribute/index pairs as represented by the + /// ParamAttrsWithIndex structure. The vector is used in the construction of + /// the ParamAttrsList instance. If an instance with identical vector pairs + /// exists, it will be returned instead of creating a new instance. + /// @brief Get a ParamAttrsList instance. + ParamAttrsList *get(const ParamAttrsVector &attrVec); + + /// @} /// @name Accessors /// @{ public: @@ -148,15 +187,7 @@ class ParamAttrsList { /// @name Data /// @{ private: - /// This is an internal structure used to associate the ParameterAttributes - /// with a parameter index. - /// @brief ParameterAttributes with a parameter index. - struct ParamAttrsWithIndex { - uint16_t attrs; ///< The attributes that are set, |'d together - uint16_t index; ///< Index of the parameter for which the attributes apply - }; - - SmallVector attrs; ///< The list of attributes + ParamAttrsVector attrs; ///< The list of attributes /// @} }; diff --git a/llvm/lib/AsmParser/llvmAsmParser.cpp.cvs b/llvm/lib/AsmParser/llvmAsmParser.cpp.cvs index f73f2ee5a448..f3217826634b 100644 --- a/llvm/lib/AsmParser/llvmAsmParser.cpp.cvs +++ b/llvm/lib/AsmParser/llvmAsmParser.cpp.cvs @@ -3337,27 +3337,27 @@ yyreduce: case 93: #line 1192 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" - { (yyval.ParamAttrs) = ZExtAttribute; ;} + { (yyval.ParamAttrs) = ParamAttr::ZExt; ;} break; case 94: #line 1193 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" - { (yyval.ParamAttrs) = SExtAttribute; ;} + { (yyval.ParamAttrs) = ParamAttr::SExt; ;} break; case 95: #line 1194 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" - { (yyval.ParamAttrs) = InRegAttribute; ;} + { (yyval.ParamAttrs) = ParamAttr::InReg; ;} break; case 96: #line 1195 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" - { (yyval.ParamAttrs) = StructRetAttribute; ;} + { (yyval.ParamAttrs) = ParamAttr::StructRet; ;} break; case 97: #line 1198 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" - { (yyval.ParamAttrs) = NoAttributeSet; ;} + { (yyval.ParamAttrs) = ParamAttr::None; ;} break; case 98: @@ -3369,17 +3369,17 @@ yyreduce: case 99: #line 1204 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" - { (yyval.ParamAttrs) = NoReturnAttribute; ;} + { (yyval.ParamAttrs) = ParamAttr::NoReturn; ;} break; case 100: #line 1205 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" - { (yyval.ParamAttrs) = NoUnwindAttribute; ;} + { (yyval.ParamAttrs) = ParamAttr::NoUnwind; ;} break; case 102: #line 1209 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" - { (yyval.ParamAttrs) = NoAttributeSet; ;} + { (yyval.ParamAttrs) = ParamAttr::None; ;} break; case 103: @@ -3522,7 +3522,7 @@ yyreduce: { std::vector Params; ParamAttrsList Attrs; - if ((yyvsp[0].ParamAttrs) != NoAttributeSet) + if ((yyvsp[0].ParamAttrs) != ParamAttr::None) Attrs.addAttributes(0, (yyvsp[0].ParamAttrs)); unsigned index = 1; TypeWithAttrsList::iterator I = (yyvsp[-2].TypeWithAttrsList)->begin(), E = (yyvsp[-2].TypeWithAttrsList)->end(); @@ -3530,7 +3530,7 @@ yyreduce: const Type *Ty = I->Ty->get(); Params.push_back(Ty); if (Ty != Type::VoidTy) - if (I->Attrs != NoAttributeSet) + if (I->Attrs != ParamAttr::None) Attrs.addAttributes(index, I->Attrs); } bool isVarArg = Params.size() && Params.back() == Type::VoidTy; @@ -3552,7 +3552,7 @@ yyreduce: { std::vector Params; ParamAttrsList Attrs; - if ((yyvsp[0].ParamAttrs) != NoAttributeSet) + if ((yyvsp[0].ParamAttrs) != ParamAttr::None) Attrs.addAttributes(0, (yyvsp[0].ParamAttrs)); TypeWithAttrsList::iterator I = (yyvsp[-2].TypeWithAttrsList)->begin(), E = (yyvsp[-2].TypeWithAttrsList)->end(); unsigned index = 1; @@ -3560,7 +3560,7 @@ yyreduce: const Type* Ty = I->Ty->get(); Params.push_back(Ty); if (Ty != Type::VoidTy) - if (I->Attrs != NoAttributeSet) + if (I->Attrs != ParamAttr::None) Attrs.addAttributes(index, I->Attrs); } bool isVarArg = Params.size() && Params.back() == Type::VoidTy; @@ -3693,7 +3693,7 @@ yyreduce: #line 1431 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.TypeWithAttrsList)=(yyvsp[-2].TypeWithAttrsList); - TypeWithAttrs TWA; TWA.Attrs = NoAttributeSet; + TypeWithAttrs TWA; TWA.Attrs = ParamAttr::None; TWA.Ty = new PATypeHolder(Type::VoidTy); (yyval.TypeWithAttrsList)->push_back(TWA); CHECK_FOR_ERROR @@ -3704,7 +3704,7 @@ yyreduce: #line 1438 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y" { (yyval.TypeWithAttrsList) = new TypeWithAttrsList; - TypeWithAttrs TWA; TWA.Attrs = NoAttributeSet; + TypeWithAttrs TWA; TWA.Attrs = ParamAttr::None; TWA.Ty = new PATypeHolder(Type::VoidTy); (yyval.TypeWithAttrsList)->push_back(TWA); CHECK_FOR_ERROR @@ -4578,7 +4578,7 @@ yyreduce: struct ArgListEntry E; E.Ty = new PATypeHolder(Type::VoidTy); E.Name = 0; - E.Attrs = NoAttributeSet; + E.Attrs = ParamAttr::None; (yyval.ArgList)->push_back(E); CHECK_FOR_ERROR ;} @@ -4591,7 +4591,7 @@ yyreduce: struct ArgListEntry E; E.Ty = new PATypeHolder(Type::VoidTy); E.Name = 0; - E.Attrs = NoAttributeSet; + E.Attrs = ParamAttr::None; (yyval.ArgList)->push_back(E); CHECK_FOR_ERROR ;} @@ -4619,7 +4619,7 @@ yyreduce: std::vector ParamTypeList; ParamAttrsList ParamAttrs; - if ((yyvsp[-2].ParamAttrs) != NoAttributeSet) + if ((yyvsp[-2].ParamAttrs) != ParamAttr::None) ParamAttrs.addAttributes(0, (yyvsp[-2].ParamAttrs)); if ((yyvsp[-4].ArgList)) { // If there are arguments... unsigned index = 1; @@ -4629,7 +4629,7 @@ yyreduce: GEN_ERROR("Reference to abstract argument: " + Ty->getDescription()); ParamTypeList.push_back(Ty); if (Ty != Type::VoidTy) - if (I->Attrs != NoAttributeSet) + if (I->Attrs != ParamAttr::None) ParamAttrs.addAttributes(index, I->Attrs); } } @@ -5075,7 +5075,7 @@ yyreduce: // Pull out the types of all of the arguments... std::vector ParamTypes; ParamAttrsList ParamAttrs; - if ((yyvsp[-6].ParamAttrs) != NoAttributeSet) + if ((yyvsp[-6].ParamAttrs) != ParamAttr::None) ParamAttrs.addAttributes(0, (yyvsp[-6].ParamAttrs)); ValueRefList::iterator I = (yyvsp[-8].ValueRefList)->begin(), E = (yyvsp[-8].ValueRefList)->end(); unsigned index = 1; @@ -5084,7 +5084,7 @@ yyreduce: if (Ty == Type::VoidTy) GEN_ERROR("Short call syntax cannot be used with varargs"); ParamTypes.push_back(Ty); - if (I->Attrs != NoAttributeSet) + if (I->Attrs != ParamAttr::None) ParamAttrs.addAttributes(index, I->Attrs); } @@ -5471,7 +5471,7 @@ yyreduce: // Pull out the types of all of the arguments... std::vector ParamTypes; ParamAttrsList ParamAttrs; - if ((yyvsp[0].ParamAttrs) != NoAttributeSet) + if ((yyvsp[0].ParamAttrs) != ParamAttr::None) ParamAttrs.addAttributes(0, (yyvsp[0].ParamAttrs)); unsigned index = 1; ValueRefList::iterator I = (yyvsp[-2].ValueRefList)->begin(), E = (yyvsp[-2].ValueRefList)->end(); @@ -5480,7 +5480,7 @@ yyreduce: if (Ty == Type::VoidTy) GEN_ERROR("Short call syntax cannot be used with varargs"); ParamTypes.push_back(Ty); - if (I->Attrs != NoAttributeSet) + if (I->Attrs != ParamAttr::None) ParamAttrs.addAttributes(index, I->Attrs); } diff --git a/llvm/lib/AsmParser/llvmAsmParser.y b/llvm/lib/AsmParser/llvmAsmParser.y index 92d06a75c569..ddf6fcec00bf 100644 --- a/llvm/lib/AsmParser/llvmAsmParser.y +++ b/llvm/lib/AsmParser/llvmAsmParser.y @@ -1189,24 +1189,24 @@ OptCallingConv : /*empty*/ { $$ = CallingConv::C; } | CHECK_FOR_ERROR }; -ParamAttr : ZEXT { $$ = ZExtAttribute; } - | SEXT { $$ = SExtAttribute; } - | INREG { $$ = InRegAttribute; } - | SRET { $$ = StructRetAttribute; } +ParamAttr : ZEXT { $$ = ParamAttr::ZExt; } + | SEXT { $$ = ParamAttr::SExt; } + | INREG { $$ = ParamAttr::InReg; } + | SRET { $$ = ParamAttr::StructRet; } ; -OptParamAttrs : /* empty */ { $$ = NoAttributeSet; } +OptParamAttrs : /* empty */ { $$ = ParamAttr::None; } | OptParamAttrs ParamAttr { $$ = $1 | $2; } ; -FuncAttr : NORETURN { $$ = NoReturnAttribute; } - | NOUNWIND { $$ = NoUnwindAttribute; } +FuncAttr : NORETURN { $$ = ParamAttr::NoReturn; } + | NOUNWIND { $$ = ParamAttr::NoUnwind; } | ParamAttr ; -OptFuncAttrs : /* empty */ { $$ = NoAttributeSet; } +OptFuncAttrs : /* empty */ { $$ = ParamAttr::None; } | OptFuncAttrs FuncAttr { $$ = $1 | $2; } @@ -1298,7 +1298,7 @@ Types | Types '(' ArgTypeListI ')' OptFuncAttrs { std::vector Params; ParamAttrsList Attrs; - if ($5 != NoAttributeSet) + if ($5 != ParamAttr::None) Attrs.addAttributes(0, $5); unsigned index = 1; TypeWithAttrsList::iterator I = $3->begin(), E = $3->end(); @@ -1306,7 +1306,7 @@ Types const Type *Ty = I->Ty->get(); Params.push_back(Ty); if (Ty != Type::VoidTy) - if (I->Attrs != NoAttributeSet) + if (I->Attrs != ParamAttr::None) Attrs.addAttributes(index, I->Attrs); } bool isVarArg = Params.size() && Params.back() == Type::VoidTy; @@ -1324,7 +1324,7 @@ Types | VOID '(' ArgTypeListI ')' OptFuncAttrs { std::vector Params; ParamAttrsList Attrs; - if ($5 != NoAttributeSet) + if ($5 != ParamAttr::None) Attrs.addAttributes(0, $5); TypeWithAttrsList::iterator I = $3->begin(), E = $3->end(); unsigned index = 1; @@ -1332,7 +1332,7 @@ Types const Type* Ty = I->Ty->get(); Params.push_back(Ty); if (Ty != Type::VoidTy) - if (I->Attrs != NoAttributeSet) + if (I->Attrs != ParamAttr::None) Attrs.addAttributes(index, I->Attrs); } bool isVarArg = Params.size() && Params.back() == Type::VoidTy; @@ -1430,14 +1430,14 @@ ArgTypeListI : ArgTypeList | ArgTypeList ',' DOTDOTDOT { $$=$1; - TypeWithAttrs TWA; TWA.Attrs = NoAttributeSet; + TypeWithAttrs TWA; TWA.Attrs = ParamAttr::None; TWA.Ty = new PATypeHolder(Type::VoidTy); $$->push_back(TWA); CHECK_FOR_ERROR } | DOTDOTDOT { $$ = new TypeWithAttrsList; - TypeWithAttrs TWA; TWA.Attrs = NoAttributeSet; + TypeWithAttrs TWA; TWA.Attrs = ParamAttr::None; TWA.Ty = new PATypeHolder(Type::VoidTy); $$->push_back(TWA); CHECK_FOR_ERROR @@ -2100,7 +2100,7 @@ ArgList : ArgListH { struct ArgListEntry E; E.Ty = new PATypeHolder(Type::VoidTy); E.Name = 0; - E.Attrs = NoAttributeSet; + E.Attrs = ParamAttr::None; $$->push_back(E); CHECK_FOR_ERROR } @@ -2109,7 +2109,7 @@ ArgList : ArgListH { struct ArgListEntry E; E.Ty = new PATypeHolder(Type::VoidTy); E.Name = 0; - E.Attrs = NoAttributeSet; + E.Attrs = ParamAttr::None; $$->push_back(E); CHECK_FOR_ERROR } @@ -2131,7 +2131,7 @@ FunctionHeaderH : OptCallingConv ResultTypes GlobalName '(' ArgList ')' std::vector ParamTypeList; ParamAttrsList ParamAttrs; - if ($7 != NoAttributeSet) + if ($7 != ParamAttr::None) ParamAttrs.addAttributes(0, $7); if ($5) { // If there are arguments... unsigned index = 1; @@ -2141,7 +2141,7 @@ FunctionHeaderH : OptCallingConv ResultTypes GlobalName '(' ArgList ')' GEN_ERROR("Reference to abstract argument: " + Ty->getDescription()); ParamTypeList.push_back(Ty); if (Ty != Type::VoidTy) - if (I->Attrs != NoAttributeSet) + if (I->Attrs != ParamAttr::None) ParamAttrs.addAttributes(index, I->Attrs); } } @@ -2486,7 +2486,7 @@ BBTerminatorInst : RET ResolvedVal { // Return with a result... // Pull out the types of all of the arguments... std::vector ParamTypes; ParamAttrsList ParamAttrs; - if ($8 != NoAttributeSet) + if ($8 != ParamAttr::None) ParamAttrs.addAttributes(0, $8); ValueRefList::iterator I = $6->begin(), E = $6->end(); unsigned index = 1; @@ -2495,7 +2495,7 @@ BBTerminatorInst : RET ResolvedVal { // Return with a result... if (Ty == Type::VoidTy) GEN_ERROR("Short call syntax cannot be used with varargs"); ParamTypes.push_back(Ty); - if (I->Attrs != NoAttributeSet) + if (I->Attrs != ParamAttr::None) ParamAttrs.addAttributes(index, I->Attrs); } @@ -2792,7 +2792,7 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef { // Pull out the types of all of the arguments... std::vector ParamTypes; ParamAttrsList ParamAttrs; - if ($8 != NoAttributeSet) + if ($8 != ParamAttr::None) ParamAttrs.addAttributes(0, $8); unsigned index = 1; ValueRefList::iterator I = $6->begin(), E = $6->end(); @@ -2801,7 +2801,7 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef { if (Ty == Type::VoidTy) GEN_ERROR("Short call syntax cannot be used with varargs"); ParamTypes.push_back(Ty); - if (I->Attrs != NoAttributeSet) + if (I->Attrs != ParamAttr::None) ParamAttrs.addAttributes(index, I->Attrs); } diff --git a/llvm/lib/AsmParser/llvmAsmParser.y.cvs b/llvm/lib/AsmParser/llvmAsmParser.y.cvs index 92d06a75c569..ddf6fcec00bf 100644 --- a/llvm/lib/AsmParser/llvmAsmParser.y.cvs +++ b/llvm/lib/AsmParser/llvmAsmParser.y.cvs @@ -1189,24 +1189,24 @@ OptCallingConv : /*empty*/ { $$ = CallingConv::C; } | CHECK_FOR_ERROR }; -ParamAttr : ZEXT { $$ = ZExtAttribute; } - | SEXT { $$ = SExtAttribute; } - | INREG { $$ = InRegAttribute; } - | SRET { $$ = StructRetAttribute; } +ParamAttr : ZEXT { $$ = ParamAttr::ZExt; } + | SEXT { $$ = ParamAttr::SExt; } + | INREG { $$ = ParamAttr::InReg; } + | SRET { $$ = ParamAttr::StructRet; } ; -OptParamAttrs : /* empty */ { $$ = NoAttributeSet; } +OptParamAttrs : /* empty */ { $$ = ParamAttr::None; } | OptParamAttrs ParamAttr { $$ = $1 | $2; } ; -FuncAttr : NORETURN { $$ = NoReturnAttribute; } - | NOUNWIND { $$ = NoUnwindAttribute; } +FuncAttr : NORETURN { $$ = ParamAttr::NoReturn; } + | NOUNWIND { $$ = ParamAttr::NoUnwind; } | ParamAttr ; -OptFuncAttrs : /* empty */ { $$ = NoAttributeSet; } +OptFuncAttrs : /* empty */ { $$ = ParamAttr::None; } | OptFuncAttrs FuncAttr { $$ = $1 | $2; } @@ -1298,7 +1298,7 @@ Types | Types '(' ArgTypeListI ')' OptFuncAttrs { std::vector Params; ParamAttrsList Attrs; - if ($5 != NoAttributeSet) + if ($5 != ParamAttr::None) Attrs.addAttributes(0, $5); unsigned index = 1; TypeWithAttrsList::iterator I = $3->begin(), E = $3->end(); @@ -1306,7 +1306,7 @@ Types const Type *Ty = I->Ty->get(); Params.push_back(Ty); if (Ty != Type::VoidTy) - if (I->Attrs != NoAttributeSet) + if (I->Attrs != ParamAttr::None) Attrs.addAttributes(index, I->Attrs); } bool isVarArg = Params.size() && Params.back() == Type::VoidTy; @@ -1324,7 +1324,7 @@ Types | VOID '(' ArgTypeListI ')' OptFuncAttrs { std::vector Params; ParamAttrsList Attrs; - if ($5 != NoAttributeSet) + if ($5 != ParamAttr::None) Attrs.addAttributes(0, $5); TypeWithAttrsList::iterator I = $3->begin(), E = $3->end(); unsigned index = 1; @@ -1332,7 +1332,7 @@ Types const Type* Ty = I->Ty->get(); Params.push_back(Ty); if (Ty != Type::VoidTy) - if (I->Attrs != NoAttributeSet) + if (I->Attrs != ParamAttr::None) Attrs.addAttributes(index, I->Attrs); } bool isVarArg = Params.size() && Params.back() == Type::VoidTy; @@ -1430,14 +1430,14 @@ ArgTypeListI : ArgTypeList | ArgTypeList ',' DOTDOTDOT { $$=$1; - TypeWithAttrs TWA; TWA.Attrs = NoAttributeSet; + TypeWithAttrs TWA; TWA.Attrs = ParamAttr::None; TWA.Ty = new PATypeHolder(Type::VoidTy); $$->push_back(TWA); CHECK_FOR_ERROR } | DOTDOTDOT { $$ = new TypeWithAttrsList; - TypeWithAttrs TWA; TWA.Attrs = NoAttributeSet; + TypeWithAttrs TWA; TWA.Attrs = ParamAttr::None; TWA.Ty = new PATypeHolder(Type::VoidTy); $$->push_back(TWA); CHECK_FOR_ERROR @@ -2100,7 +2100,7 @@ ArgList : ArgListH { struct ArgListEntry E; E.Ty = new PATypeHolder(Type::VoidTy); E.Name = 0; - E.Attrs = NoAttributeSet; + E.Attrs = ParamAttr::None; $$->push_back(E); CHECK_FOR_ERROR } @@ -2109,7 +2109,7 @@ ArgList : ArgListH { struct ArgListEntry E; E.Ty = new PATypeHolder(Type::VoidTy); E.Name = 0; - E.Attrs = NoAttributeSet; + E.Attrs = ParamAttr::None; $$->push_back(E); CHECK_FOR_ERROR } @@ -2131,7 +2131,7 @@ FunctionHeaderH : OptCallingConv ResultTypes GlobalName '(' ArgList ')' std::vector ParamTypeList; ParamAttrsList ParamAttrs; - if ($7 != NoAttributeSet) + if ($7 != ParamAttr::None) ParamAttrs.addAttributes(0, $7); if ($5) { // If there are arguments... unsigned index = 1; @@ -2141,7 +2141,7 @@ FunctionHeaderH : OptCallingConv ResultTypes GlobalName '(' ArgList ')' GEN_ERROR("Reference to abstract argument: " + Ty->getDescription()); ParamTypeList.push_back(Ty); if (Ty != Type::VoidTy) - if (I->Attrs != NoAttributeSet) + if (I->Attrs != ParamAttr::None) ParamAttrs.addAttributes(index, I->Attrs); } } @@ -2486,7 +2486,7 @@ BBTerminatorInst : RET ResolvedVal { // Return with a result... // Pull out the types of all of the arguments... std::vector ParamTypes; ParamAttrsList ParamAttrs; - if ($8 != NoAttributeSet) + if ($8 != ParamAttr::None) ParamAttrs.addAttributes(0, $8); ValueRefList::iterator I = $6->begin(), E = $6->end(); unsigned index = 1; @@ -2495,7 +2495,7 @@ BBTerminatorInst : RET ResolvedVal { // Return with a result... if (Ty == Type::VoidTy) GEN_ERROR("Short call syntax cannot be used with varargs"); ParamTypes.push_back(Ty); - if (I->Attrs != NoAttributeSet) + if (I->Attrs != ParamAttr::None) ParamAttrs.addAttributes(index, I->Attrs); } @@ -2792,7 +2792,7 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef { // Pull out the types of all of the arguments... std::vector ParamTypes; ParamAttrsList ParamAttrs; - if ($8 != NoAttributeSet) + if ($8 != ParamAttr::None) ParamAttrs.addAttributes(0, $8); unsigned index = 1; ValueRefList::iterator I = $6->begin(), E = $6->end(); @@ -2801,7 +2801,7 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef { if (Ty == Type::VoidTy) GEN_ERROR("Short call syntax cannot be used with varargs"); ParamTypes.push_back(Ty); - if (I->Attrs != NoAttributeSet) + if (I->Attrs != ParamAttr::None) ParamAttrs.addAttributes(index, I->Attrs); } diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp index cd194c96cf33..9683d486ecaa 100644 --- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp @@ -828,9 +828,9 @@ void SelectionDAGLowering::visitRet(ReturnInst &I) { const FunctionType *FTy = I.getParent()->getParent()->getFunctionType(); const ParamAttrsList *Attrs = FTy->getParamAttrs(); ISD::NodeType ExtendKind = ISD::ANY_EXTEND; - if (Attrs && Attrs->paramHasAttr(0, SExtAttribute)) + if (Attrs && Attrs->paramHasAttr(0, ParamAttr::SExt)) ExtendKind = ISD::SIGN_EXTEND; - if (Attrs && Attrs->paramHasAttr(0, ZExtAttribute)) + if (Attrs && Attrs->paramHasAttr(0, ParamAttr::ZExt)) ExtendKind = ISD::ZERO_EXTEND; RetOp = DAG.getNode(ExtendKind, TmpVT, RetOp); } @@ -2768,16 +2768,16 @@ void SelectionDAGLowering::LowerCallTo(Instruction &I, Value *Arg = I.getOperand(i); SDOperand ArgNode = getValue(Arg); Entry.Node = ArgNode; Entry.Ty = Arg->getType(); - Entry.isSExt = Attrs && Attrs->paramHasAttr(i, SExtAttribute); - Entry.isZExt = Attrs && Attrs->paramHasAttr(i, ZExtAttribute); - Entry.isInReg = Attrs && Attrs->paramHasAttr(i, InRegAttribute); - Entry.isSRet = Attrs && Attrs->paramHasAttr(i, StructRetAttribute); + Entry.isSExt = Attrs && Attrs->paramHasAttr(i, ParamAttr::SExt); + Entry.isZExt = Attrs && Attrs->paramHasAttr(i, ParamAttr::ZExt); + Entry.isInReg = Attrs && Attrs->paramHasAttr(i, ParamAttr::InReg); + Entry.isSRet = Attrs && Attrs->paramHasAttr(i, ParamAttr::StructRet); Args.push_back(Entry); } std::pair Result = TLI.LowerCallTo(getRoot(), I.getType(), - Attrs && Attrs->paramHasAttr(0, SExtAttribute), + Attrs && Attrs->paramHasAttr(0, ParamAttr::SExt), FTy->isVarArg(), CallingConv, IsTailCall, Callee, Args, DAG); if (I.getType() != Type::VoidTy) @@ -3617,13 +3617,13 @@ TargetLowering::LowerArguments(Function &F, SelectionDAG &DAG) { // FIXME: Distinguish between a formal with no [sz]ext attribute from one // that is zero extended! - if (Attrs && Attrs->paramHasAttr(j, ZExtAttribute)) + if (Attrs && Attrs->paramHasAttr(j, ParamAttr::ZExt)) Flags &= ~(ISD::ParamFlags::SExt); - if (Attrs && Attrs->paramHasAttr(j, SExtAttribute)) + if (Attrs && Attrs->paramHasAttr(j, ParamAttr::SExt)) Flags |= ISD::ParamFlags::SExt; - if (Attrs && Attrs->paramHasAttr(j, InRegAttribute)) + if (Attrs && Attrs->paramHasAttr(j, ParamAttr::InReg)) Flags |= ISD::ParamFlags::InReg; - if (Attrs && Attrs->paramHasAttr(j, StructRetAttribute)) + if (Attrs && Attrs->paramHasAttr(j, ParamAttr::StructRet)) Flags |= ISD::ParamFlags::StructReturn; Flags |= (OriginalAlignment << ISD::ParamFlags::OrigAlignmentOffs); @@ -3697,10 +3697,10 @@ TargetLowering::LowerArguments(Function &F, SelectionDAG &DAG) { case Promote: { SDOperand Op(Result, i++); if (MVT::isInteger(VT)) { - if (Attrs && Attrs->paramHasAttr(Idx, SExtAttribute)) + if (Attrs && Attrs->paramHasAttr(Idx, ParamAttr::SExt)) Op = DAG.getNode(ISD::AssertSext, Op.getValueType(), Op, DAG.getValueType(VT)); - else if (Attrs && Attrs->paramHasAttr(Idx, ZExtAttribute)) + else if (Attrs && Attrs->paramHasAttr(Idx, ParamAttr::ZExt)) Op = DAG.getNode(ISD::AssertZext, Op.getValueType(), Op, DAG.getValueType(VT)); Op = DAG.getNode(ISD::TRUNCATE, VT, Op); diff --git a/llvm/lib/Linker/LinkItems.cpp b/llvm/lib/Linker/LinkItems.cpp index 6f9f9b2205d9..09af56c6a8b1 100644 --- a/llvm/lib/Linker/LinkItems.cpp +++ b/llvm/lib/Linker/LinkItems.cpp @@ -91,8 +91,12 @@ bool Linker::LinkInLibrary(const std::string& Lib, bool& is_native) { return error("Cannot link archive '" + Pathname.toString() + "'"); break; - case sys::ELF_FileType: - case sys::Mach_O_FileType: + case sys::ELF_Relocatable_FileType: + case sys::ELF_SharedObject_FileType: + case sys::Mach_O_Object_FileType: + case sys::Mach_O_FixedVirtualMemorySharedLib_FileType: + case sys::Mach_O_DynamicallyLinkedSharedLib_FileType: + case sys::Mach_O_DynamicallyLinkedSharedLibStub_FileType: case sys::COFF_FileType: is_native = true; break; @@ -181,8 +185,12 @@ bool Linker::LinkInFile(const sys::Path &File, bool &is_native) { break; } - case sys::ELF_FileType: - case sys::Mach_O_FileType: + case sys::ELF_Relocatable_FileType: + case sys::ELF_SharedObject_FileType: + case sys::Mach_O_Object_FileType: + case sys::Mach_O_FixedVirtualMemorySharedLib_FileType: + case sys::Mach_O_DynamicallyLinkedSharedLib_FileType: + case sys::Mach_O_DynamicallyLinkedSharedLibStub_FileType: case sys::COFF_FileType: is_native = true; break; diff --git a/llvm/lib/Target/CBackend/CBackend.cpp b/llvm/lib/Target/CBackend/CBackend.cpp index af502cea9dae..f4852bf49090 100644 --- a/llvm/lib/Target/CBackend/CBackend.cpp +++ b/llvm/lib/Target/CBackend/CBackend.cpp @@ -356,7 +356,7 @@ void CWriter::printStructReturnPointerFunctionType(std::ostream &Out, if (PrintedType) FunctionInnards << ", "; printType(FunctionInnards, *I, - /*isSigned=*/Attrs && Attrs->paramHasAttr(Idx, SExtAttribute), ""); + /*isSigned=*/Attrs && Attrs->paramHasAttr(Idx, ParamAttr::SExt), ""); PrintedType = true; } if (FTy->isVarArg()) { @@ -368,7 +368,7 @@ void CWriter::printStructReturnPointerFunctionType(std::ostream &Out, FunctionInnards << ')'; std::string tstr = FunctionInnards.str(); printType(Out, RetTy, - /*isSigned=*/Attrs && Attrs->paramHasAttr(0, SExtAttribute), tstr); + /*isSigned=*/Attrs && Attrs->paramHasAttr(0, ParamAttr::SExt), tstr); } std::ostream & @@ -430,7 +430,7 @@ std::ostream &CWriter::printType(std::ostream &Out, const Type *Ty, if (I != FTy->param_begin()) FunctionInnards << ", "; printType(FunctionInnards, *I, - /*isSigned=*/Attrs && Attrs->paramHasAttr(Idx, SExtAttribute), ""); + /*isSigned=*/Attrs && Attrs->paramHasAttr(Idx, ParamAttr::SExt), ""); ++Idx; } if (FTy->isVarArg()) { @@ -442,7 +442,7 @@ std::ostream &CWriter::printType(std::ostream &Out, const Type *Ty, FunctionInnards << ')'; std::string tstr = FunctionInnards.str(); printType(Out, FTy->getReturnType(), - /*isSigned=*/Attrs && Attrs->paramHasAttr(0, SExtAttribute), tstr); + /*isSigned=*/Attrs && Attrs->paramHasAttr(0, ParamAttr::SExt), tstr); return Out; } case Type::StructTyID: { @@ -1832,7 +1832,7 @@ void CWriter::printFunctionSignature(const Function *F, bool Prototype) { else ArgName = ""; printType(FunctionInnards, I->getType(), - /*isSigned=*/Attrs && Attrs->paramHasAttr(Idx, SExtAttribute), + /*isSigned=*/Attrs && Attrs->paramHasAttr(Idx, ParamAttr::SExt), ArgName); PrintedArg = true; ++Idx; @@ -1853,7 +1853,7 @@ void CWriter::printFunctionSignature(const Function *F, bool Prototype) { for (; I != E; ++I) { if (PrintedArg) FunctionInnards << ", "; printType(FunctionInnards, *I, - /*isSigned=*/Attrs && Attrs->paramHasAttr(Idx, SExtAttribute)); + /*isSigned=*/Attrs && Attrs->paramHasAttr(Idx, ParamAttr::SExt)); PrintedArg = true; ++Idx; } @@ -1881,7 +1881,7 @@ void CWriter::printFunctionSignature(const Function *F, bool Prototype) { // Print out the return type and the signature built above. printType(Out, RetTy, - /*isSigned=*/ Attrs && Attrs->paramHasAttr(0, SExtAttribute), + /*isSigned=*/ Attrs && Attrs->paramHasAttr(0, ParamAttr::SExt), FunctionInnards.str()); } @@ -2586,7 +2586,7 @@ void CWriter::visitCallInst(CallInst &I) { (*AI)->getType() != FTy->getParamType(ArgNo)) { Out << '('; printType(Out, FTy->getParamType(ArgNo), - /*isSigned=*/Attrs && Attrs->paramHasAttr(Idx, SExtAttribute)); + /*isSigned=*/Attrs && Attrs->paramHasAttr(Idx, ParamAttr::SExt)); Out << ')'; } writeOperand(*AI); diff --git a/llvm/lib/Target/MSIL/MSILWriter.cpp b/llvm/lib/Target/MSIL/MSILWriter.cpp index 3aa05e4db8a0..610ab0336526 100644 --- a/llvm/lib/Target/MSIL/MSILWriter.cpp +++ b/llvm/lib/Target/MSIL/MSILWriter.cpp @@ -1133,7 +1133,7 @@ void MSILWriter::printStaticInitializerList() { void MSILWriter::printFunction(const Function& F) { const FunctionType* FTy = F.getFunctionType(); const ParamAttrsList *Attrs = FTy->getParamAttrs(); - bool isSigned = Attrs && Attrs->paramHasAttr(0, SExtAttribute); + bool isSigned = Attrs && Attrs->paramHasAttr(0, ParamAttr::SExt); Out << "\n.method static "; Out << (F.hasInternalLinkage() ? "private " : "public "); if (F.isVarArg()) Out << "vararg "; @@ -1144,7 +1144,7 @@ void MSILWriter::printFunction(const Function& F) { unsigned ArgIdx = 1; for (Function::const_arg_iterator I = F.arg_begin(), E = F.arg_end(); I!=E; ++I, ++ArgIdx) { - isSigned = Attrs && Attrs->paramHasAttr(ArgIdx, SExtAttribute); + isSigned = Attrs && Attrs->paramHasAttr(ArgIdx, ParamAttr::SExt); if (I!=F.arg_begin()) Out << ", "; Out << getTypeName(I->getType(),isSigned) << getValueName(I); } diff --git a/llvm/lib/VMCore/AsmWriter.cpp b/llvm/lib/VMCore/AsmWriter.cpp index ad6b7e3b306c..f9bac802ff69 100644 --- a/llvm/lib/VMCore/AsmWriter.cpp +++ b/llvm/lib/VMCore/AsmWriter.cpp @@ -291,7 +291,7 @@ static void calcTypeName(const Type *Ty, if (I != FTy->param_begin()) Result += ", "; calcTypeName(*I, TypeStack, TypeNames, Result); - if (Attrs && Attrs->getParamAttrs(Idx) != NoAttributeSet) { + if (Attrs && Attrs->getParamAttrs(Idx) != ParamAttr::None) { Result += + " "; Result += Attrs->getParamAttrsTextByIndex(Idx); } @@ -302,7 +302,7 @@ static void calcTypeName(const Type *Ty, Result += "..."; } Result += ")"; - if (Attrs && Attrs->getParamAttrs(0) != NoAttributeSet) { + if (Attrs && Attrs->getParamAttrs(0) != ParamAttr::None) { Result += " "; Result += Attrs->getParamAttrsTextByIndex(0); } @@ -737,7 +737,7 @@ std::ostream &AssemblyWriter::printTypeAtLeastOneLevel(const Type *Ty) { if (I != FTy->param_begin()) Out << ", "; printType(*I); - if (Attrs && Attrs->getParamAttrs(Idx) != NoAttributeSet) { + if (Attrs && Attrs->getParamAttrs(Idx) != ParamAttr::None) { Out << " " << Attrs->getParamAttrsTextByIndex(Idx); } Idx++; @@ -747,7 +747,7 @@ std::ostream &AssemblyWriter::printTypeAtLeastOneLevel(const Type *Ty) { Out << "..."; } Out << ')'; - if (Attrs && Attrs->getParamAttrs(0) != NoAttributeSet) + if (Attrs && Attrs->getParamAttrs(0) != ParamAttr::None) Out << ' ' << Attrs->getParamAttrsTextByIndex(0); } else if (const StructType *STy = dyn_cast(Ty)) { if (STy->isPacked()) @@ -974,7 +974,7 @@ void AssemblyWriter::printFunction(const Function *F) { // Insert commas as we go... the first arg doesn't get a comma if (I != F->arg_begin()) Out << ", "; printArgument(I, (Attrs ? Attrs->getParamAttrs(Idx) - : uint16_t(NoAttributeSet))); + : uint16_t(ParamAttr::None))); Idx++; } @@ -984,7 +984,7 @@ void AssemblyWriter::printFunction(const Function *F) { Out << "..."; // Output varargs portion of signature! } Out << ')'; - if (Attrs && Attrs->getParamAttrs(0) != NoAttributeSet) + if (Attrs && Attrs->getParamAttrs(0) != ParamAttr::None) Out << ' ' << Attrs->getParamAttrsTextByIndex(0); if (F->hasSection()) Out << " section \"" << F->getSection() << '"'; @@ -1013,7 +1013,7 @@ void AssemblyWriter::printArgument(const Argument *Arg, uint16_t Attrs) { // Output type... printType(Arg->getType()); - if (Attrs != NoAttributeSet) + if (Attrs != ParamAttr::None) Out << ' ' << ParamAttrsList::getParamAttrsText(Attrs); // Output name, if available... @@ -1188,11 +1188,11 @@ void AssemblyWriter::printInstruction(const Instruction &I) { if (op > 1) Out << ','; writeOperand(I.getOperand(op), true); - if (PAL && PAL->getParamAttrs(op) != NoAttributeSet) + if (PAL && PAL->getParamAttrs(op) != ParamAttr::None) Out << " " << PAL->getParamAttrsTextByIndex(op); } Out << " )"; - if (PAL && PAL->getParamAttrs(0) != NoAttributeSet) + if (PAL && PAL->getParamAttrs(0) != ParamAttr::None) Out << ' ' << PAL->getParamAttrsTextByIndex(0); } else if (const InvokeInst *II = dyn_cast(&I)) { const PointerType *PTy = cast(Operand->getType()); @@ -1228,12 +1228,12 @@ void AssemblyWriter::printInstruction(const Instruction &I) { if (op > 3) Out << ','; writeOperand(I.getOperand(op), true); - if (PAL && PAL->getParamAttrs(op-2) != NoAttributeSet) + if (PAL && PAL->getParamAttrs(op-2) != ParamAttr::None) Out << " " << PAL->getParamAttrsTextByIndex(op-2); } Out << " )"; - if (PAL && PAL->getParamAttrs(0) != NoAttributeSet) + if (PAL && PAL->getParamAttrs(0) != ParamAttr::None) Out << " " << PAL->getParamAttrsTextByIndex(0); Out << "\n\t\t\tto"; writeOperand(II->getNormalDest(), true); diff --git a/llvm/lib/VMCore/Function.cpp b/llvm/lib/VMCore/Function.cpp index c6bf331ccb27..e2a015fabbbd 100644 --- a/llvm/lib/VMCore/Function.cpp +++ b/llvm/lib/VMCore/Function.cpp @@ -81,24 +81,24 @@ ParamAttrsList::getParamAttrs(uint16_t Index) const { for (unsigned i = 0; i < limit; ++i) if (attrs[i].index == Index) return attrs[i].attrs; - return NoAttributeSet; + return ParamAttr::None; } std::string ParamAttrsList::getParamAttrsText(uint16_t Attrs) { std::string Result; - if (Attrs & ZExtAttribute) + if (Attrs & ParamAttr::ZExt) Result += "zext "; - if (Attrs & SExtAttribute) + if (Attrs & ParamAttr::SExt) Result += "sext "; - if (Attrs & NoReturnAttribute) + if (Attrs & ParamAttr::NoReturn) Result += "noreturn "; - if (Attrs & NoUnwindAttribute) + if (Attrs & ParamAttr::NoUnwind) Result += "nounwind "; - if (Attrs & InRegAttribute) + if (Attrs & ParamAttr::InReg) Result += "inreg "; - if (Attrs & StructRetAttribute) + if (Attrs & ParamAttr::StructRet) Result += "sret "; return Result; } @@ -125,7 +125,7 @@ ParamAttrsList::removeAttributes(uint16_t Index, uint16_t Attrs) { for (unsigned i = 0; i < attrs.size(); ++i) if (attrs[i].index == Index) { attrs[i].attrs &= ~Attrs; - if (attrs[i].attrs == NoAttributeSet) + if (attrs[i].attrs == ParamAttr::None) attrs.erase(&attrs[i]); return; } diff --git a/llvm/lib/VMCore/Type.cpp b/llvm/lib/VMCore/Type.cpp index ace800dfb2b6..10063126e54d 100644 --- a/llvm/lib/VMCore/Type.cpp +++ b/llvm/lib/VMCore/Type.cpp @@ -285,7 +285,7 @@ static std::string getTypeDescription(const Type *Ty, E = FTy->param_end(); I != E; ++I) { if (I != FTy->param_begin()) Result += ", "; - if (Attrs && Attrs->getParamAttrs(Idx) != NoAttributeSet) + if (Attrs && Attrs->getParamAttrs(Idx) != ParamAttr::None) Result += Attrs->getParamAttrsTextByIndex(Idx); Idx++; Result += getTypeDescription(*I, TypeStack); @@ -295,7 +295,7 @@ static std::string getTypeDescription(const Type *Ty, Result += "..."; } Result += ")"; - if (Attrs && Attrs->getParamAttrs(0) != NoAttributeSet) { + if (Attrs && Attrs->getParamAttrs(0) != ParamAttr::None) { Result += " " + Attrs->getParamAttrsTextByIndex(0); } break; @@ -1121,7 +1121,7 @@ FunctionType::~FunctionType() { bool FunctionType::isStructReturn() const { if (ParamAttrs) - return ParamAttrs->paramHasAttr(1, StructRetAttribute); + return ParamAttrs->paramHasAttr(1, ParamAttr::StructRet); return false; } diff --git a/llvm/tools/llvm-upgrade/UpgradeParser.cpp.cvs b/llvm/tools/llvm-upgrade/UpgradeParser.cpp.cvs index 2eebb7108b33..ae4bd09f6bc2 100644 --- a/llvm/tools/llvm-upgrade/UpgradeParser.cpp.cvs +++ b/llvm/tools/llvm-upgrade/UpgradeParser.cpp.cvs @@ -748,7 +748,7 @@ static bool FuncTysDifferOnlyBySRet(const FunctionType *F1, PAL2 = *F2->getParamAttrs(); if (PAL1.getParamAttrs(0) != PAL2.getParamAttrs(0)) return false; - unsigned SRetMask = ~unsigned(StructRetAttribute); + unsigned SRetMask = ~unsigned(ParamAttr::StructRet); for (unsigned i = 0; i < F1->getNumParams(); ++i) { if (F1->getParamType(i) != F2->getParamType(i) || unsigned(PAL1.getParamAttrs(i+1)) & SRetMask != @@ -793,7 +793,7 @@ static Value* handleSRetFuncTypeMerge(Value *V, const Type* Ty) { const FunctionType *FT2 = dyn_cast(PF2->getElementType()); if (FT1 && FT2 && FuncTysDifferOnlyBySRet(FT1, FT2)) { const ParamAttrsList *PAL2 = FT2->getParamAttrs(); - if (PAL2 && PAL2->paramHasAttr(1, StructRetAttribute)) + if (PAL2 && PAL2->paramHasAttr(1, ParamAttr::StructRet)) return V; else if (Constant *C = dyn_cast(V)) return ConstantExpr::getBitCast(C, PF1); @@ -5389,8 +5389,8 @@ yyreduce: ParamAttrsList *ParamAttrs = 0; if ((yyvsp[-7].UIntVal) == OldCallingConv::CSRet) { ParamAttrs = new ParamAttrsList(); - ParamAttrs->addAttributes(0, NoAttributeSet); // result - ParamAttrs->addAttributes(1, StructRetAttribute); // first arg + ParamAttrs->addAttributes(0, ParamAttr::None); // result + ParamAttrs->addAttributes(1, ParamAttr::StructRet); // first arg } const FunctionType *FT = @@ -5867,8 +5867,8 @@ yyreduce: ParamAttrsList *ParamAttrs = 0; if ((yyvsp[-11].UIntVal) == OldCallingConv::CSRet) { ParamAttrs = new ParamAttrsList(); - ParamAttrs->addAttributes(0, NoAttributeSet); // Function result - ParamAttrs->addAttributes(1, StructRetAttribute); // first param + ParamAttrs->addAttributes(0, ParamAttr::None); // Function result + ParamAttrs->addAttributes(1, ParamAttr::StructRet); // first param } bool isVarArg = ParamTypes.size() && ParamTypes.back() == Type::VoidTy; if (isVarArg) ParamTypes.pop_back(); @@ -6369,8 +6369,8 @@ yyreduce: ParamAttrsList *ParamAttrs = 0; if ((yyvsp[-5].UIntVal) == OldCallingConv::CSRet) { ParamAttrs = new ParamAttrsList(); - ParamAttrs->addAttributes(0, NoAttributeSet); // function result - ParamAttrs->addAttributes(1, StructRetAttribute); // first parameter + ParamAttrs->addAttributes(0, ParamAttr::None); // function result + ParamAttrs->addAttributes(1, ParamAttr::StructRet); // first parameter } FTy = FunctionType::get(RetTy, ParamTypes, isVarArg, ParamAttrs); diff --git a/llvm/tools/llvm-upgrade/UpgradeParser.y b/llvm/tools/llvm-upgrade/UpgradeParser.y index dfc86c615d8c..1751912a2e6b 100644 --- a/llvm/tools/llvm-upgrade/UpgradeParser.y +++ b/llvm/tools/llvm-upgrade/UpgradeParser.y @@ -388,7 +388,7 @@ static bool FuncTysDifferOnlyBySRet(const FunctionType *F1, PAL2 = *F2->getParamAttrs(); if (PAL1.getParamAttrs(0) != PAL2.getParamAttrs(0)) return false; - unsigned SRetMask = ~unsigned(StructRetAttribute); + unsigned SRetMask = ~unsigned(ParamAttr::StructRet); for (unsigned i = 0; i < F1->getNumParams(); ++i) { if (F1->getParamType(i) != F2->getParamType(i) || unsigned(PAL1.getParamAttrs(i+1)) & SRetMask != @@ -433,7 +433,7 @@ static Value* handleSRetFuncTypeMerge(Value *V, const Type* Ty) { const FunctionType *FT2 = dyn_cast(PF2->getElementType()); if (FT1 && FT2 && FuncTysDifferOnlyBySRet(FT1, FT2)) { const ParamAttrsList *PAL2 = FT2->getParamAttrs(); - if (PAL2 && PAL2->paramHasAttr(1, StructRetAttribute)) + if (PAL2 && PAL2->paramHasAttr(1, ParamAttr::StructRet)) return V; else if (Constant *C = dyn_cast(V)) return ConstantExpr::getBitCast(C, PF1); @@ -2904,8 +2904,8 @@ FunctionHeaderH ParamAttrsList *ParamAttrs = 0; if ($1 == OldCallingConv::CSRet) { ParamAttrs = new ParamAttrsList(); - ParamAttrs->addAttributes(0, NoAttributeSet); // result - ParamAttrs->addAttributes(1, StructRetAttribute); // first arg + ParamAttrs->addAttributes(0, ParamAttr::None); // result + ParamAttrs->addAttributes(1, ParamAttr::StructRet); // first arg } const FunctionType *FT = @@ -3293,8 +3293,8 @@ BBTerminatorInst ParamAttrsList *ParamAttrs = 0; if ($2 == OldCallingConv::CSRet) { ParamAttrs = new ParamAttrsList(); - ParamAttrs->addAttributes(0, NoAttributeSet); // Function result - ParamAttrs->addAttributes(1, StructRetAttribute); // first param + ParamAttrs->addAttributes(0, ParamAttr::None); // Function result + ParamAttrs->addAttributes(1, ParamAttr::StructRet); // first param } bool isVarArg = ParamTypes.size() && ParamTypes.back() == Type::VoidTy; if (isVarArg) ParamTypes.pop_back(); @@ -3698,8 +3698,8 @@ InstVal ParamAttrsList *ParamAttrs = 0; if ($2 == OldCallingConv::CSRet) { ParamAttrs = new ParamAttrsList(); - ParamAttrs->addAttributes(0, NoAttributeSet); // function result - ParamAttrs->addAttributes(1, StructRetAttribute); // first parameter + ParamAttrs->addAttributes(0, ParamAttr::None); // function result + ParamAttrs->addAttributes(1, ParamAttr::StructRet); // first parameter } FTy = FunctionType::get(RetTy, ParamTypes, isVarArg, ParamAttrs); diff --git a/llvm/tools/llvm-upgrade/UpgradeParser.y.cvs b/llvm/tools/llvm-upgrade/UpgradeParser.y.cvs index dfc86c615d8c..1751912a2e6b 100644 --- a/llvm/tools/llvm-upgrade/UpgradeParser.y.cvs +++ b/llvm/tools/llvm-upgrade/UpgradeParser.y.cvs @@ -388,7 +388,7 @@ static bool FuncTysDifferOnlyBySRet(const FunctionType *F1, PAL2 = *F2->getParamAttrs(); if (PAL1.getParamAttrs(0) != PAL2.getParamAttrs(0)) return false; - unsigned SRetMask = ~unsigned(StructRetAttribute); + unsigned SRetMask = ~unsigned(ParamAttr::StructRet); for (unsigned i = 0; i < F1->getNumParams(); ++i) { if (F1->getParamType(i) != F2->getParamType(i) || unsigned(PAL1.getParamAttrs(i+1)) & SRetMask != @@ -433,7 +433,7 @@ static Value* handleSRetFuncTypeMerge(Value *V, const Type* Ty) { const FunctionType *FT2 = dyn_cast(PF2->getElementType()); if (FT1 && FT2 && FuncTysDifferOnlyBySRet(FT1, FT2)) { const ParamAttrsList *PAL2 = FT2->getParamAttrs(); - if (PAL2 && PAL2->paramHasAttr(1, StructRetAttribute)) + if (PAL2 && PAL2->paramHasAttr(1, ParamAttr::StructRet)) return V; else if (Constant *C = dyn_cast(V)) return ConstantExpr::getBitCast(C, PF1); @@ -2904,8 +2904,8 @@ FunctionHeaderH ParamAttrsList *ParamAttrs = 0; if ($1 == OldCallingConv::CSRet) { ParamAttrs = new ParamAttrsList(); - ParamAttrs->addAttributes(0, NoAttributeSet); // result - ParamAttrs->addAttributes(1, StructRetAttribute); // first arg + ParamAttrs->addAttributes(0, ParamAttr::None); // result + ParamAttrs->addAttributes(1, ParamAttr::StructRet); // first arg } const FunctionType *FT = @@ -3293,8 +3293,8 @@ BBTerminatorInst ParamAttrsList *ParamAttrs = 0; if ($2 == OldCallingConv::CSRet) { ParamAttrs = new ParamAttrsList(); - ParamAttrs->addAttributes(0, NoAttributeSet); // Function result - ParamAttrs->addAttributes(1, StructRetAttribute); // first param + ParamAttrs->addAttributes(0, ParamAttr::None); // Function result + ParamAttrs->addAttributes(1, ParamAttr::StructRet); // first param } bool isVarArg = ParamTypes.size() && ParamTypes.back() == Type::VoidTy; if (isVarArg) ParamTypes.pop_back(); @@ -3698,8 +3698,8 @@ InstVal ParamAttrsList *ParamAttrs = 0; if ($2 == OldCallingConv::CSRet) { ParamAttrs = new ParamAttrsList(); - ParamAttrs->addAttributes(0, NoAttributeSet); // function result - ParamAttrs->addAttributes(1, StructRetAttribute); // first parameter + ParamAttrs->addAttributes(0, ParamAttr::None); // function result + ParamAttrs->addAttributes(1, ParamAttr::StructRet); // first parameter } FTy = FunctionType::get(RetTy, ParamTypes, isVarArg, ParamAttrs);