Changes in directory llvm/tools/llvm-upgrade:
UpgradeParser.y updated: 1.49 -> 1.50 UpgradeParser.y.cvs updated: 1.47 -> 1.48 --- Log message: Drop CSRET CC --- Diffs of the changes: (+22 -126) UpgradeParser.y | 74 +++++++--------------------------------------------- UpgradeParser.y.cvs | 74 +++++++--------------------------------------------- 2 files changed, 22 insertions(+), 126 deletions(-) Index: llvm/tools/llvm-upgrade/UpgradeParser.y diff -u llvm/tools/llvm-upgrade/UpgradeParser.y:1.49 llvm/tools/llvm-upgrade/UpgradeParser.y:1.50 --- llvm/tools/llvm-upgrade/UpgradeParser.y:1.49 Sat Jan 27 18:51:40 2007 +++ llvm/tools/llvm-upgrade/UpgradeParser.y Sun Jan 28 07:36:18 2007 @@ -570,7 +570,6 @@ } } -/// @brief This just makes any name given to it unique, up to MAX_UINT times. static std::string makeNameUnique(const std::string& Name) { static unsigned UniqueNameCounter = 1; std::string Result(Name); @@ -578,57 +577,6 @@ return Result; } -/// This is the implementation portion of TypeHasInteger. It traverses the -/// type given, avoiding recursive types, and returns true as soon as it finds -/// an integer type. If no integer type is found, it returns false. -static bool TypeHasIntegerI(const Type *Ty, std::vector<const Type*> Stack) { - // Handle some easy cases - if (Ty->isPrimitiveType() || (Ty->getTypeID() == Type::OpaqueTyID)) - return false; - if (Ty->isInteger()) - return true; - if (const SequentialType *STy = dyn_cast<SequentialType>(Ty)) - return STy->getElementType()->isInteger(); - - // Avoid type structure recursion - for (std::vector<const Type*>::iterator I = Stack.begin(), E = Stack.end(); - I != E; ++I) - if (Ty == *I) - return false; - - // Push us on the type stack - Stack.push_back(Ty); - - if (const FunctionType *FTy = dyn_cast<FunctionType>(Ty)) { - if (TypeHasIntegerI(FTy->getReturnType(), Stack)) - return true; - FunctionType::param_iterator I = FTy->param_begin(); - FunctionType::param_iterator E = FTy->param_end(); - for (; I != E; ++I) - if (TypeHasIntegerI(*I, Stack)) - return true; - return false; - } else if (const StructType *STy = dyn_cast<StructType>(Ty)) { - StructType::element_iterator I = STy->element_begin(); - StructType::element_iterator E = STy->element_end(); - for (; I != E; ++I) { - if (TypeHasIntegerI(*I, Stack)) - return true; - } - return false; - } - // There shouldn't be anything else, but its definitely not integer - assert(0 && "What type is this?"); - return false; -} - -/// This is the interface to TypeHasIntegerI. It just provides the type stack, -/// to avoid recursion, and then calls TypeHasIntegerI. -static inline bool TypeHasInteger(const Type *Ty) { - std::vector<const Type*> TyStack; - return TypeHasIntegerI(Ty, TyStack); -} - // setValueName - Set the specified value to the name given. The name may be // null potentially, in which case this is a noop. The string passed in is // assumed to be a malloc'd string buffer, and is free'd by this function. @@ -657,16 +605,16 @@ } } if (Existing) { - // An existing value of the same name was found. This might have happened - // because of the integer type planes collapsing in LLVM 2.0. - if (Existing->getType() == V->getType() && - !TypeHasInteger(Existing->getType())) { - // If the type does not contain any integers in them then this can't be - // a type plane collapsing issue. It truly is a redefinition and we - // should error out as the assembly is invalid. - error("Redefinition of value named '" + Name + "' of type '" + - V->getType()->getDescription() + "'"); - return; + if (Existing->getType() == V->getType()) { + // The type of the Existing value and the new one are the same. This + // is probably a type plane collapsing error. If the types involved + // are both integer, just rename it. Otherwise it + // is a redefinition error. + if (!Existing->getType()->isInteger()) { + error("Redefinition of value named '" + Name + "' in the '" + + V->getType()->getDescription() + "' type plane"); + return; + } } // In LLVM 2.0 we don't allow names to be re-used for any values in a // function, regardless of Type. Previously re-use of names was okay as @@ -1628,7 +1576,7 @@ OptCallingConv : /*empty*/ { $$ = CallingConv::C; } | CCC_TOK { $$ = CallingConv::C; } - | CSRETCC_TOK { $$ = CallingConv::CSRet; } + | CSRETCC_TOK { $$ = CallingConv::C; } | FASTCC_TOK { $$ = CallingConv::Fast; } | COLDCC_TOK { $$ = CallingConv::Cold; } | X86_STDCALLCC_TOK { $$ = CallingConv::X86_StdCall; } Index: llvm/tools/llvm-upgrade/UpgradeParser.y.cvs diff -u llvm/tools/llvm-upgrade/UpgradeParser.y.cvs:1.47 llvm/tools/llvm-upgrade/UpgradeParser.y.cvs:1.48 --- llvm/tools/llvm-upgrade/UpgradeParser.y.cvs:1.47 Sat Jan 27 18:52:05 2007 +++ llvm/tools/llvm-upgrade/UpgradeParser.y.cvs Sun Jan 28 07:36:18 2007 @@ -570,7 +570,6 @@ } } -/// @brief This just makes any name given to it unique, up to MAX_UINT times. static std::string makeNameUnique(const std::string& Name) { static unsigned UniqueNameCounter = 1; std::string Result(Name); @@ -578,57 +577,6 @@ return Result; } -/// This is the implementation portion of TypeHasInteger. It traverses the -/// type given, avoiding recursive types, and returns true as soon as it finds -/// an integer type. If no integer type is found, it returns false. -static bool TypeHasIntegerI(const Type *Ty, std::vector<const Type*> Stack) { - // Handle some easy cases - if (Ty->isPrimitiveType() || (Ty->getTypeID() == Type::OpaqueTyID)) - return false; - if (Ty->isInteger()) - return true; - if (const SequentialType *STy = dyn_cast<SequentialType>(Ty)) - return STy->getElementType()->isInteger(); - - // Avoid type structure recursion - for (std::vector<const Type*>::iterator I = Stack.begin(), E = Stack.end(); - I != E; ++I) - if (Ty == *I) - return false; - - // Push us on the type stack - Stack.push_back(Ty); - - if (const FunctionType *FTy = dyn_cast<FunctionType>(Ty)) { - if (TypeHasIntegerI(FTy->getReturnType(), Stack)) - return true; - FunctionType::param_iterator I = FTy->param_begin(); - FunctionType::param_iterator E = FTy->param_end(); - for (; I != E; ++I) - if (TypeHasIntegerI(*I, Stack)) - return true; - return false; - } else if (const StructType *STy = dyn_cast<StructType>(Ty)) { - StructType::element_iterator I = STy->element_begin(); - StructType::element_iterator E = STy->element_end(); - for (; I != E; ++I) { - if (TypeHasIntegerI(*I, Stack)) - return true; - } - return false; - } - // There shouldn't be anything else, but its definitely not integer - assert(0 && "What type is this?"); - return false; -} - -/// This is the interface to TypeHasIntegerI. It just provides the type stack, -/// to avoid recursion, and then calls TypeHasIntegerI. -static inline bool TypeHasInteger(const Type *Ty) { - std::vector<const Type*> TyStack; - return TypeHasIntegerI(Ty, TyStack); -} - // setValueName - Set the specified value to the name given. The name may be // null potentially, in which case this is a noop. The string passed in is // assumed to be a malloc'd string buffer, and is free'd by this function. @@ -657,16 +605,16 @@ } } if (Existing) { - // An existing value of the same name was found. This might have happened - // because of the integer type planes collapsing in LLVM 2.0. - if (Existing->getType() == V->getType() && - !TypeHasInteger(Existing->getType())) { - // If the type does not contain any integers in them then this can't be - // a type plane collapsing issue. It truly is a redefinition and we - // should error out as the assembly is invalid. - error("Redefinition of value named '" + Name + "' of type '" + - V->getType()->getDescription() + "'"); - return; + if (Existing->getType() == V->getType()) { + // The type of the Existing value and the new one are the same. This + // is probably a type plane collapsing error. If the types involved + // are both integer, just rename it. Otherwise it + // is a redefinition error. + if (!Existing->getType()->isInteger()) { + error("Redefinition of value named '" + Name + "' in the '" + + V->getType()->getDescription() + "' type plane"); + return; + } } // In LLVM 2.0 we don't allow names to be re-used for any values in a // function, regardless of Type. Previously re-use of names was okay as @@ -1628,7 +1576,7 @@ OptCallingConv : /*empty*/ { $$ = CallingConv::C; } | CCC_TOK { $$ = CallingConv::C; } - | CSRETCC_TOK { $$ = CallingConv::CSRet; } + | CSRETCC_TOK { $$ = CallingConv::C; } | FASTCC_TOK { $$ = CallingConv::Fast; } | COLDCC_TOK { $$ = CallingConv::Cold; } | X86_STDCALLCC_TOK { $$ = CallingConv::X86_StdCall; } _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits