From rspencer at reidspencer.com Mon Jan 1 17:12:00 2007 From: rspencer at reidspencer.com (Reid Spencer) Date: Mon, 01 Jan 2007 23:12:00 +0000 Subject: [llvm-commits] Something Wrong With Nightly Test Results? Message-ID: <1167693120.25999.168.camel@bashful.x10sys.com> Anyone else noticing that the 2007-01-01 nightly test results are identical to the 2006-12-31 results and don't match the results actually generated in the nightly tester's build dir nor the results in the log files in the web dir nor the results in the sentdata.text file. I'm thinking a year rollover bug exists but I don't have time to investigate it right now. I believe the test ran correctly and submitted new results but the server side is somehow not displaying those new results. Reid. From jlaskey at apple.com Mon Jan 1 18:32:29 2007 From: jlaskey at apple.com (Jim Laskey) Date: Mon, 1 Jan 2007 20:32:29 -0400 Subject: [llvm-commits] Something Wrong With Nightly Test Results? In-Reply-To: <1167693120.25999.168.camel@bashful.x10sys.com> References: <1167693120.25999.168.camel@bashful.x10sys.com> Message-ID: <6069822A-845C-4CFA-A99D-840A930AA54A@apple.com> I looked at the posted data for 2007-01-01 and it does look like a new run. -- Jim On 1-Jan-07, at 07:12 PM, Reid Spencer wrote: > Anyone else noticing that the 2007-01-01 nightly test results are > identical to the 2006-12-31 results and don't match the results > actually > generated in the nightly tester's build dir nor the results in the log > files in the web dir nor the results in the sentdata.text file. > > I'm thinking a year rollover bug exists but I don't have time to > investigate it right now. I believe the test ran correctly and > submitted > new results but the server side is somehow not displaying those new > results. > > Reid. > > > _______________________________________________ > llvm-commits mailing list > llvm-commits at cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits -------------- next part -------------- A non-text attachment was scrubbed... Name: smime.p7s Type: application/pkcs7-signature Size: 2417 bytes Desc: not available Url : http://lists.cs.uiuc.edu/pipermail/llvm-commits/attachments/20070101/057277c2/attachment.bin From reid at x10sys.com Mon Jan 1 20:08:43 2007 From: reid at x10sys.com (Reid Spencer) Date: Mon, 1 Jan 2007 20:08:43 -0600 Subject: [llvm-commits] CVS: llvm/include/llvm/InstrTypes.h Message-ID: <200701020208.l0228hQW004362@zion.cs.uiuc.edu> Changes in directory llvm/include/llvm: InstrTypes.h updated: 1.58 -> 1.59 --- Log message: Add some convenience functions for getting the source and destination types from any Cast instruction. --- Diffs of the changes: (+5 -0) InstrTypes.h | 5 +++++ 1 files changed, 5 insertions(+) Index: llvm/include/llvm/InstrTypes.h diff -u llvm/include/llvm/InstrTypes.h:1.58 llvm/include/llvm/InstrTypes.h:1.59 --- llvm/include/llvm/InstrTypes.h:1.58 Sat Dec 30 23:23:18 2006 +++ llvm/include/llvm/InstrTypes.h Mon Jan 1 20:08:27 2007 @@ -454,6 +454,11 @@ return Instruction::CastOps(Instruction::getOpcode()); } + /// @brief Return the source type, as a convenience + const Type* getSrcTy() const { return getOperand(0)->getType(); } + /// @brief Return the destination type, as a convenience + const Type* getDestTy() const { return getType(); } + /// @brief Methods for support type inquiry through isa, cast, and dyn_cast: static inline bool classof(const CastInst *) { return true; } static inline bool classof(const Instruction *I) { From reid at x10sys.com Mon Jan 1 22:19:47 2007 From: reid at x10sys.com (Reid Spencer) Date: Mon, 1 Jan 2007 22:19:47 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/CodeGen/Alpha/2005-07-12-TwoMallocCalls.ll Message-ID: <200701020419.l024Jl6Q006295@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/CodeGen/Alpha: 2005-07-12-TwoMallocCalls.ll updated: 1.3 -> 1.4 --- Log message: Fix this test case to be legal. There is no ubyte %tmp ever defined! --- Diffs of the changes: (+2 -0) 2005-07-12-TwoMallocCalls.ll | 2 ++ 1 files changed, 2 insertions(+) Index: llvm/test/Regression/CodeGen/Alpha/2005-07-12-TwoMallocCalls.ll diff -u llvm/test/Regression/CodeGen/Alpha/2005-07-12-TwoMallocCalls.ll:1.3 llvm/test/Regression/CodeGen/Alpha/2005-07-12-TwoMallocCalls.ll:1.4 --- llvm/test/Regression/CodeGen/Alpha/2005-07-12-TwoMallocCalls.ll:1.3 Sat Dec 2 14:36:54 2006 +++ llvm/test/Regression/CodeGen/Alpha/2005-07-12-TwoMallocCalls.ll Mon Jan 1 22:19:32 2007 @@ -1,6 +1,8 @@ ; There should be exactly two calls here (memset and malloc), no more. ; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha | grep jsr | wc -l | grep 2 +%typedef.bc_struct = type i8 + implementation ; Functions: declare void %llvm.memset.i64(sbyte*, ubyte, ulong, uint) From reid at x10sys.com Mon Jan 1 22:30:55 2007 From: reid at x10sys.com (Reid Spencer) Date: Mon, 1 Jan 2007 22:30:55 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/CodeGen/Alpha/2005-07-12-TwoMallocCalls.ll Message-ID: <200701020430.l024UtWr006495@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/CodeGen/Alpha: 2005-07-12-TwoMallocCalls.ll updated: 1.4 -> 1.5 --- Log message: Reverse last patch, committed by accident. --- Diffs of the changes: (+0 -2) 2005-07-12-TwoMallocCalls.ll | 2 -- 1 files changed, 2 deletions(-) Index: llvm/test/Regression/CodeGen/Alpha/2005-07-12-TwoMallocCalls.ll diff -u llvm/test/Regression/CodeGen/Alpha/2005-07-12-TwoMallocCalls.ll:1.4 llvm/test/Regression/CodeGen/Alpha/2005-07-12-TwoMallocCalls.ll:1.5 --- llvm/test/Regression/CodeGen/Alpha/2005-07-12-TwoMallocCalls.ll:1.4 Mon Jan 1 22:19:32 2007 +++ llvm/test/Regression/CodeGen/Alpha/2005-07-12-TwoMallocCalls.ll Mon Jan 1 22:30:40 2007 @@ -1,8 +1,6 @@ ; There should be exactly two calls here (memset and malloc), no more. ; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha | grep jsr | wc -l | grep 2 -%typedef.bc_struct = type i8 - implementation ; Functions: declare void %llvm.memset.i64(sbyte*, ubyte, ulong, uint) From reid at x10sys.com Mon Jan 1 23:44:48 2007 From: reid at x10sys.com (Reid Spencer) Date: Mon, 1 Jan 2007 23:44:48 -0600 Subject: [llvm-commits] CVS: llvm/tools/llvm-upgrade/ParserInternals.h UpgradeLexer.l UpgradeParser.y Message-ID: <200701020544.l025imcG007605@zion.cs.uiuc.edu> Changes in directory llvm/tools/llvm-upgrade: ParserInternals.h updated: 1.10 -> 1.11 UpgradeLexer.l updated: 1.11 -> 1.12 UpgradeParser.y updated: 1.28 -> 1.29 --- Log message: For PR1070: http://llvm.org/PR1070 : Revise the upgrade parser to keep track of types more faithfully and use this information to resolve name conflicts resulting from collapsed type planes. The type planes have collapsed because the integer types are now signless so that uint and int became i32. Where two planes existed for uint and int, only i32 exists. Any variable names depending on the type planes to pmake the identifier unique would cause a conflict. This patch resolves that conflict for many but not all cases. Situations involving the integer types and pointers to them are handled by this patch. However, there are corner cases that are not handled well, such as: %t1 = type { uint, int } %t2 = type { int, uint } void %myfunc(%t1* one, %t2* two) { %var = load %t1* one %var = load %t2* two } In the scenario above, %t1 and %t2 are really the same type: { i32, i32 } Consequently attempting to name %var twice will yield a redefinition error when assembled. While this patch is sufficien to allow the llvm/test suite to pass, More work needs to be to complete the handling of these corner cases. --- Diffs of the changes: (+563 -313) ParserInternals.h | 173 +++++++++++-- UpgradeLexer.l | 4 UpgradeParser.y | 699 ++++++++++++++++++++++++++++++++---------------------- 3 files changed, 563 insertions(+), 313 deletions(-) Index: llvm/tools/llvm-upgrade/ParserInternals.h diff -u llvm/tools/llvm-upgrade/ParserInternals.h:1.10 llvm/tools/llvm-upgrade/ParserInternals.h:1.11 --- llvm/tools/llvm-upgrade/ParserInternals.h:1.10 Sun Dec 31 00:02:26 2006 +++ llvm/tools/llvm-upgrade/ParserInternals.h Mon Jan 1 23:44:33 2007 @@ -15,9 +15,11 @@ #ifndef PARSER_INTERNALS_H #define PARSER_INTERNALS_H +#include #include #include #include +#include // Global variables exported from the lexer... @@ -26,11 +28,15 @@ extern int Upgradelineno; extern std::istream* LexInput; +struct TypeInfo; +typedef std::vector TypeList; void UpgradeAssembly( const std::string & infile, std::istream& in, std::ostream &out, bool debug, bool addAttrs); +TypeInfo* ResolveType(TypeInfo*& Ty); + // Globals exported by the parser... extern char* Upgradetext; extern int Upgradeleng; @@ -47,6 +53,17 @@ OpaqueTy, VoidTy, LabelTy, FunctionTy, UnresolvedTy, NumericTy }; +/// This type is used to keep track of the signedness of values. Instead +/// of creating llvm::Value directly, the parser will create ValueInfo which +/// associates a Value* with a Signedness indication. +struct ValueInfo { + std::string* val; + TypeInfo* type; + bool constant; + bool isConstant() const { return constant; } + inline void destroy(); +}; + /// This type is used to keep track of the signedness of the obsolete /// integer types. Instead of creating an llvm::Type directly, the Lexer will /// create instances of TypeInfo which retains the signedness indication so @@ -55,20 +72,89 @@ /// to "int32" and the "second" field will be set to "isUnsigned". If the /// type is not obsolete then "second" will be set to "isSignless". struct TypeInfo { - std::string* newTy; - Types oldTy; - Types elemTy; + TypeInfo() + : newTy(0), oldTy(UnresolvedTy), elemTy(0), resultTy(0), elements(0), + nelems(0) { + } + + TypeInfo(const char * newType, Types oldType) + : newTy(0), oldTy(oldType), elemTy(0), resultTy(0), elements(0), nelems(0) { + newTy = new std::string(newType); + } + + TypeInfo(std::string *newType, Types oldType, TypeInfo* eTy = 0, + TypeInfo *rTy = 0) + : newTy(newType), oldTy(oldType), elemTy(eTy), resultTy(rTy), elements(0), + nelems(0) { + } + + TypeInfo(std::string *newType, Types oldType, TypeInfo *eTy, uint64_t elems) + : newTy(newType), oldTy(oldType), elemTy(eTy), resultTy(0), elements(0), + nelems(elems) { + } + + TypeInfo(std::string *newType, Types oldType, TypeList* TL) + : newTy(newType), oldTy(oldType), elemTy(0), resultTy(0), elements(TL), + nelems(0) { + } + + TypeInfo(std::string *newType, TypeInfo* resTy, TypeList* TL) + : newTy(newType), oldTy(FunctionTy), elemTy(0), resultTy(resTy), + elements(TL), nelems(0) { + } + + TypeInfo(const TypeInfo& that) + : newTy(0), oldTy(that.oldTy), elemTy(0), resultTy(0), elements(0), + nelems(0) { + *this = that; + } + + TypeInfo& operator=(const TypeInfo& that) { + oldTy = that.oldTy; + nelems = that.nelems; + if (that.newTy) + newTy = new std::string(*that.newTy); + if (that.elemTy) + elemTy = that.elemTy->clone(); + if (that.resultTy) + resultTy = that.resultTy->clone(); + if (that.elements) { + elements = new std::vector(that.elements->size()); + *elements = *that.elements; + } + return *this; + } - void destroy() const { delete newTy; } + ~TypeInfo() { + delete newTy; delete elemTy; delete resultTy; delete elements; + } - TypeInfo clone() const { - TypeInfo result = *this; - result.newTy = new std::string(*newTy); - return result; + TypeInfo* clone() const { + return new TypeInfo(*this); } - Types getElementType() const { return elemTy; } + Types getElementTy() const { + if (elemTy) { + return elemTy->oldTy; + } + return UnresolvedTy; + } + + const std::string& getNewTy() const { return *newTy; } + void setOldTy(Types Ty) { oldTy = Ty; } + + TypeInfo* getResultType() const { return resultTy; } + TypeInfo* getElementType() const { return elemTy; } + TypeInfo* getPointerType() const { + std::string* ty = new std::string(*newTy + "*"); + return new TypeInfo(ty, PointerTy, this->clone(), (TypeInfo*)0); + } + + bool isUnresolved() const { return oldTy == UnresolvedTy; } + bool isNumeric() const { return oldTy == NumericTy; } + bool isVoid() const { return oldTy == VoidTy; } + bool isBool() const { return oldTy == BoolTy; } bool isSigned() const { return oldTy == SByteTy || oldTy == ShortTy || oldTy == IntTy || oldTy == LongTy; @@ -79,9 +165,6 @@ oldTy == UIntTy || oldTy == ULongTy; } - bool isBool() const { - return oldTy == BoolTy; - } bool isSignless() const { return !isSigned() && !isUnsigned(); } bool isInteger() const { return isSigned() || isUnsigned(); } @@ -89,8 +172,14 @@ bool isFloatingPoint() const { return oldTy == DoubleTy || oldTy == FloatTy; } bool isPacked() const { return oldTy == PackedTy; } bool isPointer() const { return oldTy == PointerTy; } + bool isStruct() const { return oldTy == StructTy || oldTy == PackedStructTy; } + bool isArray() const { return oldTy == ArrayTy; } bool isOther() const { return !isPacked() && !isPointer() && !isFloatingPoint() && !isIntegral(); } + bool isFunction() const { return oldTy == FunctionTy; } + bool isComposite() const { + return isStruct() || isPointer() || isArray() || isPacked(); + } bool isAttributeCandidate() const { return isIntegral() && getBitWidth() < 32; @@ -98,6 +187,7 @@ unsigned getBitWidth() const { switch (oldTy) { + default: case LabelTy: case VoidTy : return 0; case BoolTy : return 1; @@ -106,32 +196,61 @@ case IntTy: case UIntTy: case FloatTy: return 32; case LongTy: case ULongTy: case DoubleTy : return 64; case PointerTy: return SizeOfPointer; // global var - default: - return 128; /// Struct/Packed/Array --> doesn't matter - + case PackedTy: + case ArrayTy: + return nelems * elemTy->getBitWidth(); + case StructTy: + case PackedStructTy: { + uint64_t size = 0; + for (unsigned i = 0; i < elements->size(); i++) { + ResolveType((*elements)[i]); + size += (*elements)[i]->getBitWidth(); + } + return size; + } } } -}; -/// This type is used to keep track of the signedness of values. Instead -/// of creating llvm::Value directly, the parser will create ValueInfo which -/// associates a Value* with a Signedness indication. -struct ValueInfo { - std::string* val; - TypeInfo type; - bool constant; - bool isConstant() const { return constant; } - void destroy() { delete val; type.destroy(); } + TypeInfo* getIndexedType(const ValueInfo& VI) { + if (isStruct()) { + if (VI.isConstant() && VI.type->isInteger()) { + size_t pos = VI.val->find(' ') + 1; + if (pos < VI.val->size()) { + uint64_t idx = atoi(VI.val->substr(pos).c_str()); + return (*elements)[idx]; + } else { + yyerror("Invalid value for constant integer"); + return 0; + } + } else { + yyerror("Structure requires constant index"); + return 0; + } + } + if (isArray() || isPacked() || isPointer()) + return elemTy; + yyerror("Invalid type for getIndexedType"); + return 0; + } + +private: + std::string* newTy; + Types oldTy; + TypeInfo *elemTy; + TypeInfo *resultTy; + TypeList *elements; + uint64_t nelems; }; /// This type is used to keep track of the signedness of constants. struct ConstInfo { std::string *cnst; - TypeInfo type; - void destroy() { delete cnst; type.destroy(); } + TypeInfo *type; + void destroy() { delete cnst; delete type; } }; typedef std::vector ValueList; +inline void ValueInfo::destroy() { delete val; delete type; } #endif Index: llvm/tools/llvm-upgrade/UpgradeLexer.l diff -u llvm/tools/llvm-upgrade/UpgradeLexer.l:1.11 llvm/tools/llvm-upgrade/UpgradeLexer.l:1.12 --- llvm/tools/llvm-upgrade/UpgradeLexer.l:1.11 Sat Dec 30 23:45:57 2006 +++ llvm/tools/llvm-upgrade/UpgradeLexer.l Mon Jan 1 23:44:33 2007 @@ -48,9 +48,7 @@ return sym #define RET_TY(sym,OldTY,NewTY,sign) \ - Upgradelval.Type.newTy = new std::string(NewTY); \ - Upgradelval.Type.oldTy = OldTY; \ - Upgradelval.Type.elemTy = VoidTy; \ + Upgradelval.Type = new TypeInfo(NewTY, OldTY); \ return sym #define YY_NEVER_INTERACTIVE 1 Index: llvm/tools/llvm-upgrade/UpgradeParser.y diff -u llvm/tools/llvm-upgrade/UpgradeParser.y:1.28 llvm/tools/llvm-upgrade/UpgradeParser.y:1.29 --- llvm/tools/llvm-upgrade/UpgradeParser.y:1.28 Sun Dec 31 19:20:16 2006 +++ llvm/tools/llvm-upgrade/UpgradeParser.y Mon Jan 1 23:44:33 2007 @@ -13,12 +13,10 @@ %{ #include "ParserInternals.h" -#include #include #include #include #include -#include #define YYERROR_VERBOSE 1 #define YYINCLUDED_STDLIB_H @@ -78,71 +76,72 @@ } } -static void ResolveType(TypeInfo& Ty) { - if (Ty.oldTy == UnresolvedTy) { - TypeMap::iterator I = NamedTypes.find(*Ty.newTy); +TypeInfo* ResolveType(TypeInfo*& Ty) { + if (Ty->isUnresolved()) { + TypeMap::iterator I = NamedTypes.find(Ty->getNewTy()); if (I != NamedTypes.end()) { - Ty.oldTy = I->second.oldTy; - Ty.elemTy = I->second.elemTy; + Ty = I->second.clone(); + return Ty; } else { - std::string msg("Can't resolve type: "); - msg += *Ty.newTy; + std::string msg("Cannot resolve type: "); + msg += Ty->getNewTy(); yyerror(msg.c_str()); } - } else if (Ty.oldTy == NumericTy) { - unsigned ref = atoi(&((Ty.newTy->c_str())[1])); // Skip the '\\' + } else if (Ty->isNumeric()) { + unsigned ref = atoi(&((Ty->getNewTy().c_str())[1])); // Skip the '\\' if (ref < EnumeratedTypes.size()) { - Ty.oldTy = EnumeratedTypes[ref].oldTy; - Ty.elemTy = EnumeratedTypes[ref].elemTy; + Ty = EnumeratedTypes[ref].clone(); + return Ty; } else { std::string msg("Can't resolve type: "); - msg += *Ty.newTy; + msg += Ty->getNewTy(); yyerror(msg.c_str()); } } // otherwise its already resolved. + return Ty; } static const char* getCastOpcode( - std::string& Source, const TypeInfo& SrcTy, const TypeInfo& DstTy) + std::string& Source, const TypeInfo* SrcTy, const TypeInfo* DstTy) { - unsigned SrcBits = SrcTy.getBitWidth(); - unsigned DstBits = DstTy.getBitWidth(); + unsigned SrcBits = SrcTy->getBitWidth(); + unsigned DstBits = DstTy->getBitWidth(); const char* opcode = "bitcast"; // Run through the possibilities ... - if (DstTy.isIntegral()) { // Casting to integral - if (SrcTy.isIntegral()) { // Casting from integral + if (DstTy->isIntegral()) { // Casting to integral + if (SrcTy->isIntegral()) { // Casting from integral if (DstBits < SrcBits) opcode = "trunc"; else if (DstBits > SrcBits) { // its an extension - if (SrcTy.isSigned()) + if (SrcTy->isSigned()) opcode ="sext"; // signed -> SEXT else opcode = "zext"; // unsigned -> ZEXT } else { opcode = "bitcast"; // Same size, No-op cast } - } else if (SrcTy.isFloatingPoint()) { // Casting from floating pt - if (DstTy.isSigned()) + } else if (SrcTy->isFloatingPoint()) { // Casting from floating pt + if (DstTy->isSigned()) opcode = "fptosi"; // FP -> sint else opcode = "fptoui"; // FP -> uint - } else if (SrcTy.isPacked()) { - assert(DstBits == SrcTy.getBitWidth() && + } else if (SrcTy->isPacked()) { + assert(DstBits == SrcTy->getBitWidth() && "Casting packed to integer of different width"); opcode = "bitcast"; // same size, no-op cast } else { - assert(SrcTy.isPointer() && + assert(SrcTy->isPointer() && "Casting from a value that is not first-class type"); opcode = "ptrtoint"; // ptr -> int } - } else if (DstTy.isFloatingPoint()) { // Casting to floating pt - if (SrcTy.isIntegral()) { // Casting from integral - if (SrcTy.isSigned()) + } else if (DstTy->isFloatingPoint()) { // Casting to floating pt + if (SrcTy->isIntegral()) { // Casting from integral + if (SrcTy->isSigned()) opcode = "sitofp"; // sint -> FP else opcode = "uitofp"; // uint -> FP - } else if (SrcTy.isFloatingPoint()) { // Casting from floating pt + } else if (SrcTy->isFloatingPoint()) { // Casting from floating pt if (DstBits < SrcBits) { opcode = "fptrunc"; // FP -> smaller FP } else if (DstBits > SrcBits) { @@ -150,27 +149,27 @@ } else { opcode ="bitcast"; // same size, no-op cast } - } else if (SrcTy.isPacked()) { - assert(DstBits == SrcTy.getBitWidth() && + } else if (SrcTy->isPacked()) { + assert(DstBits == SrcTy->getBitWidth() && "Casting packed to floating point of different width"); opcode = "bitcast"; // same size, no-op cast } else { assert(0 && "Casting pointer or non-first class to float"); } - } else if (DstTy.isPacked()) { - if (SrcTy.isPacked()) { - assert(DstTy.getBitWidth() == SrcTy.getBitWidth() && + } else if (DstTy->isPacked()) { + if (SrcTy->isPacked()) { + assert(DstTy->getBitWidth() == SrcTy->getBitWidth() && "Casting packed to packed of different widths"); opcode = "bitcast"; // packed -> packed - } else if (DstTy.getBitWidth() == SrcBits) { + } else if (DstTy->getBitWidth() == SrcBits) { opcode = "bitcast"; // float/int -> packed } else { assert(!"Illegal cast to packed (wrong type or size)"); } - } else if (DstTy.isPointer()) { - if (SrcTy.isPointer()) { + } else if (DstTy->isPointer()) { + if (SrcTy->isPointer()) { opcode = "bitcast"; // ptr -> ptr - } else if (SrcTy.isIntegral()) { + } else if (SrcTy->isIntegral()) { opcode = "inttoptr"; // int -> ptr } else { assert(!"Casting invalid type to pointer"); @@ -181,12 +180,12 @@ return opcode; } -static std::string getCastUpgrade( - const std::string& Src, TypeInfo& SrcTy, TypeInfo& DstTy, bool isConst) +static std::string getCastUpgrade(const std::string& Src, TypeInfo* SrcTy, + TypeInfo* DstTy, bool isConst) { std::string Result; std::string Source = Src; - if (SrcTy.isFloatingPoint() && DstTy.isPointer()) { + if (SrcTy->isFloatingPoint() && DstTy->isPointer()) { // fp -> ptr cast is no longer supported but we must upgrade this // by doing a double cast: fp -> int -> ptr if (isConst) @@ -197,16 +196,16 @@ Source = "i64 %cast_upgrade" + llvm::utostr(unique); } // Update the SrcTy for the getCastOpcode call below - SrcTy.destroy(); - SrcTy.newTy = new std::string("i64"); - SrcTy.oldTy = ULongTy; - } else if (DstTy.oldTy == BoolTy && SrcTy.oldTy != BoolTy) { - // cast ptr %x to bool was previously defined as setne ptr %x, null - // The ptrtoint semantic is to truncate, not compare so we must retain - // the original intent by replace the cast with a setne - const char* comparator = SrcTy.isPointer() ? ", null" : - (SrcTy.isFloatingPoint() ? ", 0.0" : ", 0"); - const char* compareOp = SrcTy.isFloatingPoint() ? "fcmp one " : "icmp ne "; + delete SrcTy; + SrcTy = new TypeInfo("i64", ULongTy); + } else if (DstTy->isBool()) { + // cast type %x to bool was previously defined as setne type %x, null + // The cast semantic is now to truncate, not compare so we must retain + // the original intent by replacing the cast with a setne + const char* comparator = SrcTy->isPointer() ? ", null" : + (SrcTy->isFloatingPoint() ? ", 0.0" : + (SrcTy->isBool() ? ", false" : ", 0")); + const char* compareOp = SrcTy->isFloatingPoint() ? "fcmp one " : "icmp ne "; if (isConst) { Result = "(" + Source + comparator + ")"; Result = compareOp + Result; @@ -218,33 +217,32 @@ ResolveType(DstTy); std::string Opcode(getCastOpcode(Source, SrcTy, DstTy)); if (isConst) - Result += Opcode + "( " + Source + " to " + *DstTy.newTy + ")"; + Result += Opcode + "( " + Source + " to " + DstTy->getNewTy() + ")"; else - Result += Opcode + " " + Source + " to " + *DstTy.newTy; + Result += Opcode + " " + Source + " to " + DstTy->getNewTy(); return Result; } -const char* getDivRemOpcode(const std::string& opcode, const TypeInfo& TI) { +const char* getDivRemOpcode(const std::string& opcode, TypeInfo* TI) { const char* op = opcode.c_str(); - TypeInfo Ty = TI; - ResolveType(Ty); - if (Ty.isPacked()) - Ty.oldTy = Ty.getElementType(); + const TypeInfo* Ty = ResolveType(TI); + if (Ty->isPacked()) + Ty = Ty->getElementType(); if (opcode == "div") - if (Ty.isFloatingPoint()) + if (Ty->isFloatingPoint()) op = "fdiv"; - else if (Ty.isUnsigned()) + else if (Ty->isUnsigned()) op = "udiv"; - else if (Ty.isSigned()) + else if (Ty->isSigned()) op = "sdiv"; else yyerror("Invalid type for div instruction"); else if (opcode == "rem") - if (Ty.isFloatingPoint()) + if (Ty->isFloatingPoint()) op = "frem"; - else if (Ty.isUnsigned()) + else if (Ty->isUnsigned()) op = "urem"; - else if (Ty.isSigned()) + else if (Ty->isSigned()) op = "srem"; else yyerror("Invalid type for rem instruction"); @@ -252,7 +250,7 @@ } std::string -getCompareOp(const std::string& setcc, const TypeInfo& TI) { +getCompareOp(const std::string& setcc, const TypeInfo* TI) { assert(setcc.length() == 5); char cc1 = setcc[3]; char cc2 = setcc[4]; @@ -261,20 +259,20 @@ std::string result("xcmp xxx"); result[6] = cc1; result[7] = cc2; - if (TI.isFloatingPoint()) { + if (TI->isFloatingPoint()) { result[0] = 'f'; result[5] = 'o'; if (cc1 == 'n') result[5] = 'u'; // NE maps to unordered else result[5] = 'o'; // everything else maps to ordered - } else if (TI.isIntegral() || TI.isPointer()) { + } else if (TI->isIntegral() || TI->isPointer()) { result[0] = 'i'; if ((cc1 == 'e' && cc2 == 'q') || (cc1 == 'n' && cc2 == 'e')) result.erase(5,1); - else if (TI.isSigned()) + else if (TI->isSigned()) result[5] = 's'; - else if (TI.isUnsigned() || TI.isPointer() || TI.isBool()) + else if (TI->isUnsigned() || TI->isPointer() || TI->isBool()) result[5] = 'u'; else yyerror("Invalid integral type for setcc"); @@ -282,16 +280,87 @@ return result; } +static TypeInfo* getFunctionReturnType(TypeInfo* PFTy) { + ResolveType(PFTy); + if (PFTy->isPointer()) { + TypeInfo* ElemTy = PFTy->getElementType(); + ResolveType(ElemTy); + if (ElemTy->isFunction()) + return ElemTy->getResultType()->clone(); + } else if (PFTy->isFunction()) { + return PFTy->getResultType()->clone(); + } + return PFTy->clone(); +} + +static TypeInfo* getGEPIndexedType(TypeInfo* PTy, ValueList* idxs) { + ResolveType(PTy); + assert(PTy->isPointer() && "GEP Operand is not a pointer?"); + TypeInfo* Result = PTy->getElementType(); // just skip first index + ResolveType(Result); + for (unsigned i = 1; i < idxs->size(); ++i) { + if (Result->isComposite()) { + Result = Result->getIndexedType((*idxs)[i]); + ResolveType(Result); + } else + yyerror("Invalid type for index"); + } + return Result->getPointerType(); +} + +static std::string makeUniqueName(const std::string *Name, bool isSigned) { + const char *suffix = ".u"; + if (isSigned) + suffix = ".s"; + if ((*Name)[Name->size()-1] == '"') { + std::string Result(*Name); + Result.insert(Name->size()-1, suffix); + return Result; + } + return *Name + suffix; +} + +// This function handles appending .u or .s to integer value names that +// were previously unsigned or signed, respectively. This avoids name +// collisions since the unsigned and signed type planes have collapsed +// into a single signless type plane. +static std::string getUniqueName(const std::string *Name, TypeInfo* Ty) { + // If its not a symbolic name, don't modify it, probably a constant val. + if ((*Name)[0] != '%' && (*Name)[0] != '"') + return *Name; + // If its a numeric reference, just leave it alone. + if (isdigit((*Name)[1])) + return *Name; + + // Resolve the type + ResolveType(Ty); + + // Default the result to the current name + std::string Result = *Name; + + if (Ty->isInteger()) { + // If its an integer type, make the name unique + Result = makeUniqueName(Name, Ty->isSigned()); + } else if (Ty->isPointer()) { + while (Ty->isPointer()) + Ty = Ty->getElementType(); + if (Ty->isInteger()) + Result = makeUniqueName(Name, Ty->isSigned()); + } + return Result; +} + %} // %file-prefix="UpgradeParser" %union { std::string* String; - TypeInfo Type; + TypeInfo* Type; ValueInfo Value; ConstInfo Const; ValueList* ValList; + TypeList* TypeVec; } %token VOID BOOL SBYTE UBYTE SHORT USHORT INT UINT LONG ULONG @@ -322,19 +391,20 @@ %type OptAssign OptLinkage OptCallingConv OptAlign OptCAlign %type SectionString OptSection GlobalVarAttributes GlobalVarAttribute -%type ArgTypeListI ConstExpr DefinitionList +%type ConstExpr DefinitionList %type ConstPool TargetDefinition LibrariesDefinition LibList OptName %type ArgVal ArgListH ArgList FunctionHeaderH BEGIN FunctionHeader END -%type Function FunctionProto BasicBlock TypeListI -%type InstructionList BBTerminatorInst JumpTable Inst PHIList -%type OptTailCall InstVal OptVolatile Unwind -%type MemoryInst SymbolicValueRef OptSideEffect GlobalType +%type Function FunctionProto BasicBlock +%type InstructionList BBTerminatorInst JumpTable Inst +%type OptTailCall OptVolatile Unwind +%type SymbolicValueRef OptSideEffect GlobalType %type FnDeclareLinkage BasicBlockList BigOrLittle AsmBlock %type Name ConstValueRef ConstVector External %type ShiftOps SetCondOps LogicalOps ArithmeticOps CastOps %type IPredicates FPredicates %type ValueRefList ValueRefListE IndexList +%type TypeListI ArgTypeListI %type IntType SIntType UIntType FPType TypesV Types %type PrimType UpRTypesV UpRTypes @@ -342,7 +412,7 @@ %type IntVal EInt64Val %type ConstVal -%type ValueRef ResolvedVal +%type ValueRef ResolvedVal InstVal PHIList MemoryInst %start Module @@ -456,68 +526,79 @@ PrimType : LONG | ULONG | FLOAT | DOUBLE | LABEL; UpRTypes : OPAQUE { - $$.newTy = $1; - $$.oldTy = OpaqueTy; + $$ = new TypeInfo($1, OpaqueTy); } | SymbolicValueRef { - $$.newTy = $1; - $$.oldTy = UnresolvedTy; + $$ = new TypeInfo($1, UnresolvedTy); } | PrimType { $$ = $1; } | '\\' EUINT64VAL { // Type UpReference $2->insert(0, "\\"); - $$.newTy = $2; - $$.oldTy = NumericTy; + $$ = new TypeInfo($2, NumericTy); } | UpRTypesV '(' ArgTypeListI ')' { // Function derived type? - *$1.newTy += "( " + *$3 + " )"; - delete $3; - $$.newTy = $1.newTy; - $$.oldTy = FunctionTy; + std::string newTy( $1->getNewTy() + "("); + for (unsigned i = 0; i < $3->size(); ++i) { + if (i != 0) + newTy += ", "; + if ((*$3)[i]->isVoid()) + newTy += "..."; + else + newTy += (*$3)[i]->getNewTy(); + } + newTy += ")"; + $$ = new TypeInfo(new std::string(newTy), $1, $3); + EnumeratedTypes.push_back(*$$); } | '[' EUINT64VAL 'x' UpRTypes ']' { // Sized array type? $2->insert(0,"[ "); - *$2 += " x " + *$4.newTy + " ]"; - delete $4.newTy; - $$.newTy = $2; - $$.oldTy = ArrayTy; - $$.elemTy = $4.oldTy; + *$2 += " x " + $4->getNewTy() + " ]"; + uint64_t elems = atoi($2->c_str()); + $$ = new TypeInfo($2, ArrayTy, $4, elems); + EnumeratedTypes.push_back(*$$); } | '<' EUINT64VAL 'x' UpRTypes '>' { // Packed array type? $2->insert(0,"< "); - *$2 += " x " + *$4.newTy + " >"; - delete $4.newTy; - $$.newTy = $2; - $$.oldTy = PackedTy; - $$.elemTy = $4.oldTy; + *$2 += " x " + $4->getNewTy() + " >"; + uint64_t elems = atoi($2->c_str()); + $$ = new TypeInfo($2, PackedTy, $4, elems); + EnumeratedTypes.push_back(*$$); } | '{' TypeListI '}' { // Structure type? - $2->insert(0, "{ "); - *$2 += " }"; - $$.newTy = $2; - $$.oldTy = StructTy; + std::string newTy("{"); + for (unsigned i = 0; i < $2->size(); ++i) { + if (i != 0) + newTy += ", "; + newTy += (*$2)[i]->getNewTy(); + } + newTy += "}"; + $$ = new TypeInfo(new std::string(newTy), StructTy, $2); + EnumeratedTypes.push_back(*$$); } | '{' '}' { // Empty structure type? - $$.newTy = new std::string("{}"); - $$.oldTy = StructTy; + $$ = new TypeInfo(new std::string("{}"), StructTy, new TypeList()); + EnumeratedTypes.push_back(*$$); } | '<' '{' TypeListI '}' '>' { // Packed Structure type? - $3->insert(0, "<{ "); - *$3 += " }>"; - $$.newTy = $3; - $$.oldTy = StructTy; + std::string newTy("<{"); + for (unsigned i = 0; i < $3->size(); ++i) { + if (i != 0) + newTy += ", "; + newTy += (*$3)[i]->getNewTy(); + } + newTy += "}>"; + $$ = new TypeInfo(new std::string(newTy), PackedStructTy, $3); + EnumeratedTypes.push_back(*$$); } | '<' '{' '}' '>' { // Empty packed structure type? - $$.newTy = new std::string("<{}>"); - $$.oldTy = StructTy; + $$ = new TypeInfo(new std::string("<{}>"), PackedStructTy, new TypeList()); + EnumeratedTypes.push_back(*$$); } | UpRTypes '*' { // Pointer type? - *$1.newTy += '*'; - $$.elemTy = $1.oldTy; - $1.oldTy = PointerTy; - $$ = $1; + $$ = $1->getPointerType(); + EnumeratedTypes.push_back(*$$); }; // TypeList - Used for struct declarations and as a basis for function type @@ -525,27 +606,29 @@ // TypeListI : UpRTypes { - $$ = $1.newTy; + $$ = new TypeList(); + $$->push_back($1); } | TypeListI ',' UpRTypes { - *$1 += ", " + *$3.newTy; - delete $3.newTy; $$ = $1; + $$->push_back($3); }; // ArgTypeList - List of types for a function type declaration... ArgTypeListI : TypeListI | TypeListI ',' DOTDOTDOT { - *$1 += ", ..."; - delete $3; $$ = $1; + $$->push_back(new TypeInfo("void",VoidTy)); + delete $3; } | DOTDOTDOT { - $$ = $1; + $$ = new TypeList(); + $$->push_back(new TypeInfo("void",VoidTy)); + delete $1; } | /*empty*/ { - $$ = new std::string(); + $$ = new TypeList(); }; // ConstVal - The various declarations that go into the constant pool. This @@ -556,95 +639,96 @@ // ConstVal: Types '[' ConstVector ']' { // Nonempty unsized arr $$.type = $1; - $$.cnst = new std::string(*$1.newTy); + $$.cnst = new std::string($1->getNewTy()); *$$.cnst += " [ " + *$3 + " ]"; delete $3; } | Types '[' ']' { $$.type = $1; - $$.cnst = new std::string(*$1.newTy); + $$.cnst = new std::string($1->getNewTy()); *$$.cnst += "[ ]"; } | Types 'c' STRINGCONSTANT { $$.type = $1; - $$.cnst = new std::string(*$1.newTy); + $$.cnst = new std::string($1->getNewTy()); *$$.cnst += " c" + *$3; delete $3; } | Types '<' ConstVector '>' { // Nonempty unsized arr $$.type = $1; - $$.cnst = new std::string(*$1.newTy); + $$.cnst = new std::string($1->getNewTy()); *$$.cnst += " < " + *$3 + " >"; delete $3; } | Types '{' ConstVector '}' { $$.type = $1; - $$.cnst = new std::string(*$1.newTy); + $$.cnst = new std::string($1->getNewTy()); *$$.cnst += " { " + *$3 + " }"; delete $3; } | Types '{' '}' { $$.type = $1; - $$.cnst = new std::string(*$1.newTy); + $$.cnst = new std::string($1->getNewTy()); *$$.cnst += " {}"; } | Types NULL_TOK { $$.type = $1; - $$.cnst = new std::string(*$1.newTy); + $$.cnst = new std::string($1->getNewTy()); *$$.cnst += " " + *$2; delete $2; } | Types UNDEF { $$.type = $1; - $$.cnst = new std::string(*$1.newTy); + $$.cnst = new std::string($1->getNewTy()); *$$.cnst += " " + *$2; delete $2; } | Types SymbolicValueRef { + std::string Name = getUniqueName($2,$1); $$.type = $1; - $$.cnst = new std::string(*$1.newTy); - *$$.cnst += " " + *$2; + $$.cnst = new std::string($1->getNewTy()); + *$$.cnst += " " + Name; delete $2; } | Types ConstExpr { $$.type = $1; - $$.cnst = new std::string(*$1.newTy); + $$.cnst = new std::string($1->getNewTy()); *$$.cnst += " " + *$2; delete $2; } | Types ZEROINITIALIZER { $$.type = $1; - $$.cnst = new std::string(*$1.newTy); + $$.cnst = new std::string($1->getNewTy()); *$$.cnst += " " + *$2; delete $2; } | SIntType EInt64Val { // integral constants $$.type = $1; - $$.cnst = new std::string(*$1.newTy); + $$.cnst = new std::string($1->getNewTy()); *$$.cnst += " " + *$2; delete $2; } | UIntType EUINT64VAL { // integral constants $$.type = $1; - $$.cnst = new std::string(*$1.newTy); + $$.cnst = new std::string($1->getNewTy()); *$$.cnst += " " + *$2; delete $2; } | BOOL TRUETOK { // Boolean constants $$.type = $1; - $$.cnst = new std::string(*$1.newTy); + $$.cnst = new std::string($1->getNewTy()); *$$.cnst += " " + *$2; delete $2; } | BOOL FALSETOK { // Boolean constants $$.type = $1; - $$.cnst = new std::string(*$1.newTy); + $$.cnst = new std::string($1->getNewTy()); *$$.cnst += " " + *$2; delete $2; } | FPType FPVAL { // Float & Double constants $$.type = $1; - $$.cnst = new std::string(*$1.newTy); + $$.cnst = new std::string($1->getNewTy()); *$$.cnst += " " + *$2; delete $2; }; @@ -652,17 +736,16 @@ ConstExpr: CastOps '(' ConstVal TO Types ')' { std::string source = *$3.cnst; - TypeInfo DstTy = $5; - ResolveType(DstTy); + TypeInfo* DstTy = ResolveType($5); if (*$1 == "cast") { // Call getCastUpgrade to upgrade the old cast - $$ = new std::string(getCastUpgrade(source, $3.type, $5, true)); + $$ = new std::string(getCastUpgrade(source, $3.type, DstTy, true)); } else { // Nothing to upgrade, just create the cast constant expr $$ = new std::string(*$1); - *$$ += "( " + source + " to " + *$5.newTy + ")"; + *$$ += "( " + source + " to " + $5->getNewTy() + ")"; } - delete $1; $3.destroy(); delete $4; $5.destroy(); + delete $1; $3.destroy(); delete $4; delete $5; } | GETELEMENTPTR '(' ConstVal IndexList ')' { *$1 += "(" + *$3.cnst; @@ -711,7 +794,7 @@ | ShiftOps '(' ConstVal ',' ConstVal ')' { const char* shiftop = $1->c_str(); if (*$1 == "shr") - shiftop = ($3.type.isUnsigned()) ? "lshr" : "ashr"; + shiftop = ($3.type->isUnsigned()) ? "lshr" : "ashr"; $$ = new std::string(shiftop); *$$ += "(" + *$3.cnst + "," + *$5.cnst + ")"; delete $1; $3.destroy(); $5.destroy(); @@ -783,15 +866,13 @@ // ConstPool - Constants with optional names assigned to them. ConstPool : ConstPool OptAssign TYPE TypesV { - EnumeratedTypes.push_back($4); + EnumeratedTypes.push_back(*$4); if (!$2->empty()) { - NamedTypes[*$2].newTy = new std::string(*$4.newTy); - NamedTypes[*$2].oldTy = $4.oldTy; - NamedTypes[*$2].elemTy = $4.elemTy; + NamedTypes[*$2] = *$4; *O << *$2 << " = "; } - *O << "type " << *$4.newTy << '\n'; - delete $2; delete $3; $4.destroy(); + *O << "type " << $4->getNewTy() << '\n'; + delete $2; delete $3; $$ = 0; } | ConstPool FunctionProto { // Function prototypes can be in const pool @@ -806,38 +887,42 @@ } | ConstPool OptAssign OptLinkage GlobalType ConstVal GlobalVarAttributes { if (!$2->empty()) { - *O << *$2 << " = "; - Globals[*$2] = $5.type.clone(); + std::string Name = getUniqueName($2,$5.type); + *O << Name << " = "; + Globals[Name] = *$5.type; } *O << *$3 << ' ' << *$4 << ' ' << *$5.cnst << ' ' << *$6 << '\n'; - delete $2; delete $3; delete $4; $5.destroy(); delete $6; + delete $2; delete $3; delete $4; delete $6; $$ = 0; } | ConstPool OptAssign External GlobalType Types GlobalVarAttributes { if (!$2->empty()) { - *O << *$2 << " = "; - Globals[*$2] = $5.clone(); + std::string Name = getUniqueName($2,$5); + *O << Name << " = "; + Globals[Name] = *$5; } - *O << *$3 << ' ' << *$4 << ' ' << *$5.newTy << ' ' << *$6 << '\n'; - delete $2; delete $3; delete $4; $5.destroy(); delete $6; + *O << *$3 << ' ' << *$4 << ' ' << $5->getNewTy() << ' ' << *$6 << '\n'; + delete $2; delete $3; delete $4; delete $6; $$ = 0; } | ConstPool OptAssign DLLIMPORT GlobalType Types GlobalVarAttributes { if (!$2->empty()) { - *O << *$2 << " = "; - Globals[*$2] = $5.clone(); + std::string Name = getUniqueName($2,$5); + *O << Name << " = "; + Globals[Name] = *$5; } - *O << *$3 << ' ' << *$4 << ' ' << *$5.newTy << ' ' << *$6 << '\n'; - delete $2; delete $3; delete $4; $5.destroy(); delete $6; + *O << *$3 << ' ' << *$4 << ' ' << $5->getNewTy() << ' ' << *$6 << '\n'; + delete $2; delete $3; delete $4; delete $6; $$ = 0; } | ConstPool OptAssign EXTERN_WEAK GlobalType Types GlobalVarAttributes { if (!$2->empty()) { - *O << *$2 << " = "; - Globals[*$2] = $5.clone(); + std::string Name = getUniqueName($2,$5); + *O << Name << " = "; + Globals[Name] = *$5; } - *O << *$3 << ' ' << *$4 << ' ' << *$5.newTy << ' ' << *$6 << '\n'; - delete $2; delete $3; delete $4; $5.destroy(); delete $6; + *O << *$3 << ' ' << *$4 << ' ' << $5->getNewTy() << ' ' << *$6 << '\n'; + delete $2; delete $3; delete $4; delete $6; $$ = 0; } | ConstPool TARGET TargetDefinition { @@ -909,9 +994,11 @@ OptName : Name | /*empty*/ { $$ = new std::string(); }; ArgVal : Types OptName { - $$ = $1.newTy; - if (!$2->empty()) - *$$ += " " + *$2; + $$ = new std::string($1->getNewTy()); + if (!$2->empty()) { + std::string Name = getUniqueName($2, $1); + *$$ += " " + Name; + } delete $2; }; @@ -941,14 +1028,13 @@ if (!$1->empty()) { *$1 += " "; } - *$1 += *$2.newTy + " " + *$3 + "(" + *$5 + ")"; + *$1 += $2->getNewTy() + " " + *$3 + "(" + *$5 + ")"; if (!$7->empty()) { *$1 += " " + *$7; } if (!$8->empty()) { *$1 += " " + *$8; } - $2.destroy(); delete $3; delete $5; delete $7; @@ -978,6 +1064,7 @@ if ($2) *O << *$2; *O << *$3 << "\n\n"; + delete $1; delete $2; delete $3; $$ = 0; }; @@ -1029,14 +1116,12 @@ : SymbolicValueRef { $$.val = $1; $$.constant = false; - $$.type.newTy = 0; - $$.type.oldTy = UnresolvedTy; + $$.type = new TypeInfo(); } | ConstValueRef { $$.val = $1; $$.constant = true; - $$.type.newTy = 0; - $$.type.oldTy = UnresolvedTy; + $$.type = new TypeInfo(); } ; @@ -1044,9 +1129,12 @@ // type immediately preceeds the value reference, and allows complex constant // pool references (for things like: 'ret [2 x int] [ int 12, int 42]') ResolvedVal : Types ValueRef { + std::string Name = getUniqueName($2.val, $1); $$ = $2; + delete $$.val; + delete $$.type; + $$.val = new std::string($1->getNewTy() + " " + Name); $$.type = $1; - $$.val->insert(0, *$1.newTy + " "); }; BasicBlockList : BasicBlockList BasicBlock { @@ -1086,42 +1174,48 @@ $$ = 0; } | RET VOID { // Return with no result... - *O << " " << *$1 << ' ' << *$2.newTy << '\n'; - delete $1; $2.destroy(); + *O << " " << *$1 << ' ' << $2->getNewTy() << '\n'; + delete $1; delete $2; $$ = 0; } | BR LABEL ValueRef { // Unconditional Branch... - *O << " " << *$1 << ' ' << *$2.newTy << ' ' << *$3.val << '\n'; - delete $1; $2.destroy(); $3.destroy(); + *O << " " << *$1 << ' ' << $2->getNewTy() << ' ' << *$3.val << '\n'; + delete $1; delete $2; $3.destroy(); $$ = 0; } // Conditional Branch... | BR BOOL ValueRef ',' LABEL ValueRef ',' LABEL ValueRef { - *O << " " << *$1 << ' ' << *$2.newTy << ' ' << *$3.val << ", " - << *$5.newTy << ' ' << *$6.val << ", " << *$8.newTy << ' ' + std::string Name = getUniqueName($3.val, $2); + *O << " " << *$1 << ' ' << $2->getNewTy() << ' ' << Name << ", " + << $5->getNewTy() << ' ' << *$6.val << ", " << $8->getNewTy() << ' ' << *$9.val << '\n'; - delete $1; $2.destroy(); $3.destroy(); $5.destroy(); $6.destroy(); - $8.destroy(); $9.destroy(); + delete $1; delete $2; $3.destroy(); delete $5; $6.destroy(); + delete $8; $9.destroy(); $$ = 0; } | SWITCH IntType ValueRef ',' LABEL ValueRef '[' JumpTable ']' { - *O << " " << *$1 << ' ' << *$2.newTy << ' ' << *$3.val << ", " - << *$5.newTy << ' ' << *$6.val << " [" << *$8 << " ]\n"; - delete $1; $2.destroy(); $3.destroy(); $5.destroy(); $6.destroy(); + std::string Name = getUniqueName($3.val, $2); + *O << " " << *$1 << ' ' << $2->getNewTy() << ' ' << Name << ", " + << $5->getNewTy() << ' ' << *$6.val << " [" << *$8 << " ]\n"; + delete $1; delete $2; $3.destroy(); delete $5; $6.destroy(); delete $8; $$ = 0; } | SWITCH IntType ValueRef ',' LABEL ValueRef '[' ']' { - *O << " " << *$1 << ' ' << *$2.newTy << ' ' << *$3.val << ", " - << *$5.newTy << ' ' << *$6.val << "[]\n"; - delete $1; $2.destroy(); $3.destroy(); $5.destroy(); $6.destroy(); + std::string Name = getUniqueName($3.val, $2); + *O << " " << *$1 << ' ' << $2->getNewTy() << ' ' << Name << ", " + << $5->getNewTy() << ' ' << *$6.val << "[]\n"; + delete $1; delete $2; $3.destroy(); delete $5; $6.destroy(); $$ = 0; } | OptAssign INVOKE OptCallingConv TypesV ValueRef '(' ValueRefListE ')' TO LABEL ValueRef Unwind LABEL ValueRef { + TypeInfo* ResTy = getFunctionReturnType($4); *O << " "; - if (!$1->empty()) - *O << *$1 << " = "; - *O << *$2 << ' ' << *$3 << ' ' << *$4.newTy << ' ' << *$5.val << " ("; + if (!$1->empty()) { + std::string Name = getUniqueName($1, ResTy); + *O << Name << " = "; + } + *O << *$2 << ' ' << *$3 << ' ' << $4->getNewTy() << ' ' << *$5.val << " ("; for (unsigned i = 0; i < $7->size(); ++i) { ValueInfo& VI = (*$7)[i]; *O << *VI.val; @@ -1129,10 +1223,10 @@ *O << ", "; VI.destroy(); } - *O << ") " << *$9 << ' ' << *$10.newTy << ' ' << *$11.val << ' ' - << *$12 << ' ' << *$13.newTy << ' ' << *$14.val << '\n'; - delete $1; delete $2; delete $3; $4.destroy(); $5.destroy(); delete $7; - delete $9; $10.destroy(); $11.destroy(); delete $12; $13.destroy(); + *O << ") " << *$9 << ' ' << $10->getNewTy() << ' ' << *$11.val << ' ' + << *$12 << ' ' << $13->getNewTy() << ' ' << *$14.val << '\n'; + delete $1; delete $2; delete $3; delete $4; $5.destroy(); delete $7; + delete $9; delete $10; $11.destroy(); delete $12; delete $13; $14.destroy(); $$ = 0; } @@ -1148,14 +1242,15 @@ }; JumpTable : JumpTable IntType ConstValueRef ',' LABEL ValueRef { - *$1 += " " + *$2.newTy + " " + *$3 + ", " + *$5.newTy + " " + *$6.val; - $2.destroy(); delete $3; $5.destroy(); $6.destroy(); + *$1 += " " + $2->getNewTy() + " " + *$3 + ", " + $5->getNewTy() + " " + + *$6.val; + delete $2; delete $3; delete $5; $6.destroy(); $$ = $1; } | IntType ConstValueRef ',' LABEL ValueRef { - $2->insert(0, *$1.newTy + " " ); - *$2 += ", " + *$4.newTy + " " + *$5.val; - $1.destroy(); $4.destroy(); $5.destroy(); + $2->insert(0, $1->getNewTy() + " " ); + *$2 += ", " + $4->getNewTy() + " " + *$5.val; + delete $1; delete $4; $5.destroy(); $$ = $2; }; @@ -1167,38 +1262,41 @@ $1->insert(0, "; "); // don't actually delete it, just comment it out delete deleteUselessCastName; } else { - *$1 += " = "; + // Get a unique name for the name of this value, based on its type. + *$1 = getUniqueName($1, $2.type) + " = "; } } - *$1 += *$2; - delete $2; + *$1 += *$2.val; + $2.destroy(); deleteUselessCastFlag = false; $$ = $1; }; PHIList : Types '[' ValueRef ',' ValueRef ']' { // Used for PHI nodes - $3.val->insert(0, *$1.newTy + "["); - *$3.val += "," + *$5.val + "]"; - $1.destroy(); $5.destroy(); - $$ = new std::string(*$3.val); - $3.destroy(); + std::string Name = getUniqueName($3.val, $1); + Name.insert(0, $1->getNewTy() + "["); + Name += "," + *$5.val + "]"; + $$.val = new std::string(Name); + $$.type = $1; + $3.destroy(); $5.destroy(); } | PHIList ',' '[' ValueRef ',' ValueRef ']' { - *$1 += ", [" + *$4.val + "," + *$6.val + "]"; + std::string Name = getUniqueName($4.val, $1.type); + *$1.val += ", [" + Name + "," + *$6.val + "]"; $4.destroy(); $6.destroy(); $$ = $1; }; ValueRefList - : ResolvedVal { + : ResolvedVal { $$ = new ValueList(); $$->push_back($1); } | ValueRefList ',' ResolvedVal { - $1->push_back($3); $$ = $1; + $$->push_back($3); }; // ValueRefListE - Just like ValueRefList, except that it may also be empty! @@ -1218,61 +1316,77 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef { const char* op = getDivRemOpcode(*$1, $2); - $$ = new std::string(op); - *$$ += " " + *$2.newTy + " " + *$3.val + ", " + *$5.val; - delete $1; $2.destroy(); $3.destroy(); $5.destroy(); + std::string Name1 = getUniqueName($3.val, $2); + std::string Name2 = getUniqueName($5.val, $2); + $$.val = new std::string(op); + *$$.val += " " + $2->getNewTy() + " " + Name1 + ", " + Name2; + $$.type = $2; + delete $1; $3.destroy(); $5.destroy(); } | LogicalOps Types ValueRef ',' ValueRef { - *$1 += " " + *$2.newTy + " " + *$3.val + ", " + *$5.val; - $2.destroy(); $3.destroy(); $5.destroy(); - $$ = $1; + std::string Name1 = getUniqueName($3.val, $2); + std::string Name2 = getUniqueName($5.val, $2); + *$1 += " " + $2->getNewTy() + " " + Name1 + ", " + Name2; + $$.val = $1; + $$.type = $2; + $3.destroy(); $5.destroy(); } | SetCondOps Types ValueRef ',' ValueRef { + std::string Name1 = getUniqueName($3.val, $2); + std::string Name2 = getUniqueName($5.val, $2); *$1 = getCompareOp(*$1, $2); - *$1 += " " + *$2.newTy + " " + *$3.val + ", " + *$5.val; - $2.destroy(); $3.destroy(); $5.destroy(); - $$ = $1; + *$1 += " " + $2->getNewTy() + " " + Name1 + ", " + Name2; + $$.val = $1; + $$.type = new TypeInfo("bool",BoolTy); + $3.destroy(); $5.destroy(); } | ICMP IPredicates Types ValueRef ',' ValueRef { - *$1 += " " + *$2 + " " + *$3.newTy + " " + *$4.val + "," + *$6.val; + std::string Name1 = getUniqueName($4.val, $3); + std::string Name2 = getUniqueName($6.val, $3); + *$1 += " " + *$2 + " " + $3->getNewTy() + " " + Name1 + "," + Name2; + $$.val = $1; + $$.type = new TypeInfo("bool",BoolTy); delete $2; $4.destroy(); $6.destroy(); - $$ = $1; } | FCMP FPredicates Types ValueRef ',' ValueRef { - *$1 += " " + *$2 + " " + *$3.newTy + " " + *$4.val + "," + *$6.val; + std::string Name1 = getUniqueName($4.val, $3); + std::string Name2 = getUniqueName($6.val, $3); + *$1 += " " + *$2 + " " + $3->getNewTy() + " " + Name1 + "," + Name2; + $$.val = $1; + $$.type = new TypeInfo("bool",BoolTy); delete $2; $4.destroy(); $6.destroy(); - $$ = $1; } | NOT ResolvedVal { - *$1 += " " + *$2.val; - $2.destroy(); - $$ = $1; + $$ = $2; + $$.val->insert(0, *$1 + " "); + delete $1; } | ShiftOps ResolvedVal ',' ResolvedVal { const char* shiftop = $1->c_str(); if (*$1 == "shr") - shiftop = ($2.type.isUnsigned()) ? "lshr" : "ashr"; - $$ = new std::string(shiftop); - *$$ += " " + *$2.val + ", " + *$4.val; - delete $1; $2.destroy(); $4.destroy(); + shiftop = ($2.type->isUnsigned()) ? "lshr" : "ashr"; + $$.val = new std::string(shiftop); + *$$.val += " " + *$2.val + ", " + *$4.val; + $$.type = $2.type; + delete $1; delete $2.val; $4.destroy(); } | CastOps ResolvedVal TO Types { std::string source = *$2.val; - TypeInfo SrcTy = $2.type; - TypeInfo DstTy = $4; - ResolveType(DstTy); - $$ = new std::string(); + TypeInfo* SrcTy = $2.type; + TypeInfo* DstTy = ResolveType($4); + $$.val = new std::string(); if (*$1 == "cast") { - *$$ += getCastUpgrade(source, SrcTy, DstTy, false); + *$$.val += getCastUpgrade(source, SrcTy, DstTy, false); } else { - *$$ += *$1 + " " + source + " to " + *DstTy.newTy; + *$$.val += *$1 + " " + source + " to " + DstTy->getNewTy(); } + $$.type = $4; // Check to see if this is a useless cast of a value to the same name // and the same type. Such casts will probably cause redefinition errors // when assembled and perform no code gen action so just remove them. if (*$1 == "cast" || *$1 == "bitcast") - if ($2.type.isInteger() && $4.isInteger() && - $2.type.getBitWidth() == $4.getBitWidth()) { + if ($2.type->isInteger() && DstTy->isInteger() && + $2.type->getBitWidth() == DstTy->getBitWidth()) { deleteUselessCastFlag = true; // Flag the "Inst" rule deleteUselessCastName = new std::string(*$2.val); // save the name size_t pos = deleteUselessCastName->find_first_of("%\"",0); @@ -1282,44 +1396,51 @@ } } delete $1; $2.destroy(); - delete $3; $4.destroy(); + delete $3; } | SELECT ResolvedVal ',' ResolvedVal ',' ResolvedVal { *$1 += " " + *$2.val + ", " + *$4.val + ", " + *$6.val; - $2.destroy(); $4.destroy(); $6.destroy(); - $$ = $1; + $$.val = $1; + $$.type = $4.type; + $2.destroy(); delete $4.val; $6.destroy(); } | VAARG ResolvedVal ',' Types { - *$1 += " " + *$2.val + ", " + *$4.newTy; - $2.destroy(); $4.destroy(); - $$ = $1; + *$1 += " " + *$2.val + ", " + $4->getNewTy(); + $$.val = $1; + $$.type = $4; + $2.destroy(); } | EXTRACTELEMENT ResolvedVal ',' ResolvedVal { *$1 += " " + *$2.val + ", " + *$4.val; - $2.destroy(); $4.destroy(); - $$ = $1; + $$.val = $1; + ResolveType($2.type); + $$.type = $2.type->getElementType()->clone(); + delete $2.val; $4.destroy(); } | INSERTELEMENT ResolvedVal ',' ResolvedVal ',' ResolvedVal { *$1 += " " + *$2.val + ", " + *$4.val + ", " + *$6.val; - $2.destroy(); $4.destroy(); $6.destroy(); - $$ = $1; + $$.val = $1; + $$.type = $2.type; + delete $2.val; $4.destroy(); $6.destroy(); } | SHUFFLEVECTOR ResolvedVal ',' ResolvedVal ',' ResolvedVal { *$1 += " " + *$2.val + ", " + *$4.val + ", " + *$6.val; - $2.destroy(); $4.destroy(); $6.destroy(); - $$ = $1; + $$.val = $1; + $$.type = $2.type; + delete $2.val; $4.destroy(); $6.destroy(); } | PHI_TOK PHIList { - *$1 += " " + *$2; - delete $2; - $$ = $1; + *$1 += " " + *$2.val; + $$.val = $1; + $$.type = $2.type; + delete $2.val; } | OptTailCall OptCallingConv TypesV ValueRef '(' ValueRefListE ')' { if (!$2->empty()) *$1 += " " + *$2; if (!$1->empty()) *$1 += " "; - *$1 += *$3.newTy + " " + *$4.val + "("; + *$1 += $3->getNewTy() + " " + *$4.val + "("; for (unsigned i = 0; i < $6->size(); ++i) { ValueInfo& VI = (*$6)[i]; *$1 += *VI.val; @@ -1328,8 +1449,9 @@ VI.destroy(); } *$1 += ")"; - delete $2; $3.destroy(); $4.destroy(); delete $6; - $$ = $1; + $$.val = $1; + $$.type = getFunctionReturnType($3); + delete $2; delete $3; $4.destroy(); delete $6; } | MemoryInst ; @@ -1346,74 +1468,85 @@ ; MemoryInst : MALLOC Types OptCAlign { - *$1 += " " + *$2.newTy; + *$1 += " " + $2->getNewTy(); if (!$3->empty()) *$1 += " " + *$3; - $2.destroy(); delete $3; - $$ = $1; + $$.val = $1; + $$.type = $2->getPointerType(); + delete $2; delete $3; } | MALLOC Types ',' UINT ValueRef OptCAlign { - *$1 += " " + *$2.newTy + ", " + *$4.newTy + " " + *$5.val; + std::string Name = getUniqueName($5.val, $4); + *$1 += " " + $2->getNewTy() + ", " + $4->getNewTy() + " " + Name; if (!$6->empty()) *$1 += " " + *$6; - $2.destroy(); $4.destroy(); $5.destroy(); delete $6; - $$ = $1; + $$.val = $1; + $$.type = $2->getPointerType(); + delete $2; delete $4; $5.destroy(); delete $6; } | ALLOCA Types OptCAlign { - *$1 += " " + *$2.newTy; + *$1 += " " + $2->getNewTy(); if (!$3->empty()) *$1 += " " + *$3; - $2.destroy(); delete $3; - $$ = $1; + $$.val = $1; + $$.type = $2->getPointerType(); + delete $2; delete $3; } | ALLOCA Types ',' UINT ValueRef OptCAlign { - *$1 += " " + *$2.newTy + ", " + *$4.newTy + " " + *$5.val; + std::string Name = getUniqueName($5.val, $4); + *$1 += " " + $2->getNewTy() + ", " + $4->getNewTy() + " " + Name; if (!$6->empty()) *$1 += " " + *$6; - $2.destroy(); $4.destroy(); $5.destroy(); delete $6; - $$ = $1; + $$.val = $1; + $$.type = $2->getPointerType(); + delete $2; delete $4; $5.destroy(); delete $6; } | FREE ResolvedVal { *$1 += " " + *$2.val; + $$.val = $1; + $$.type = new TypeInfo("void", VoidTy); $2.destroy(); - $$ = $1; } | OptVolatile LOAD Types ValueRef { + std::string Name = getUniqueName($4.val, $3); if (!$1->empty()) *$1 += " "; - *$1 += *$2 + " " + *$3.newTy + " " + *$4.val; - delete $2; $3.destroy(); $4.destroy(); - $$ = $1; + *$1 += *$2 + " " + $3->getNewTy() + " " + Name; + $$.val = $1; + $$.type = $3->getElementType()->clone(); + delete $2; delete $3; $4.destroy(); } | OptVolatile STORE ResolvedVal ',' Types ValueRef { + std::string Name = getUniqueName($6.val, $5); if (!$1->empty()) *$1 += " "; - *$1 += *$2 + " " + *$3.val + ", " + *$5.newTy + " " + *$6.val; - delete $2; $3.destroy(); $5.destroy(); $6.destroy(); - $$ = $1; + *$1 += *$2 + " " + *$3.val + ", " + $5->getNewTy() + " " + Name; + $$.val = $1; + $$.type = new TypeInfo("void", VoidTy); + delete $2; $3.destroy(); delete $5; $6.destroy(); } | GETELEMENTPTR Types ValueRef IndexList { + std::string Name = getUniqueName($3.val, $2); // Upgrade the indices for (unsigned i = 0; i < $4->size(); ++i) { ValueInfo& VI = (*$4)[i]; - if (VI.type.isUnsigned() && !VI.isConstant() && - VI.type.getBitWidth() < 64) { + if (VI.type->isUnsigned() && !VI.isConstant() && + VI.type->getBitWidth() < 64) { std::string* old = VI.val; *O << " %gep_upgrade" << unique << " = zext " << *old << " to i64\n"; VI.val = new std::string("i64 %gep_upgrade" + llvm::utostr(unique++)); - VI.type.oldTy = ULongTy; - delete old; + VI.type->setOldTy(ULongTy); } } - *$1 += " " + *$2.newTy + " " + *$3.val; + *$1 += " " + $2->getNewTy() + " " + Name; for (unsigned i = 0; i < $4->size(); ++i) { ValueInfo& VI = (*$4)[i]; *$1 += ", " + *VI.val; - VI.destroy(); } - $2.destroy(); $3.destroy(); delete $4; - $$ = $1; + $$.val = $1; + $$.type = getGEPIndexedType($2,$4); + $3.destroy(); delete $4; }; %% From reid at x10sys.com Mon Jan 1 23:45:26 2007 From: reid at x10sys.com (Reid Spencer) Date: Mon, 1 Jan 2007 23:45:26 -0600 Subject: [llvm-commits] CVS: llvm/tools/llvm-upgrade/UpgradeLexer.cpp UpgradeLexer.cpp.cvs UpgradeLexer.l.cvs UpgradeParser.cpp UpgradeParser.cpp.cvs UpgradeParser.h UpgradeParser.h.cvs UpgradeParser.y.cvs Message-ID: <200701020545.l025jQZZ007641@zion.cs.uiuc.edu> Changes in directory llvm/tools/llvm-upgrade: UpgradeLexer.cpp updated: 1.12 -> 1.13 UpgradeLexer.cpp.cvs updated: 1.11 -> 1.12 UpgradeLexer.l.cvs updated: 1.11 -> 1.12 UpgradeParser.cpp updated: 1.30 -> 1.31 UpgradeParser.cpp.cvs updated: 1.28 -> 1.29 UpgradeParser.h updated: 1.23 -> 1.24 UpgradeParser.h.cvs updated: 1.21 -> 1.22 UpgradeParser.y.cvs updated: 1.27 -> 1.28 --- Log message: Regenerate. --- Diffs of the changes: (+1969 -1576) UpgradeLexer.cpp | 332 +++++++-------- UpgradeLexer.cpp.cvs | 332 +++++++-------- UpgradeLexer.l.cvs | 4 UpgradeParser.cpp | 1082 ++++++++++++++++++++++++++++---------------------- UpgradeParser.cpp.cvs | 1082 ++++++++++++++++++++++++++++---------------------- UpgradeParser.h | 7 UpgradeParser.h.cvs | 7 UpgradeParser.y.cvs | 699 +++++++++++++++++++------------- 8 files changed, 1969 insertions(+), 1576 deletions(-) Index: llvm/tools/llvm-upgrade/UpgradeLexer.cpp diff -u llvm/tools/llvm-upgrade/UpgradeLexer.cpp:1.12 llvm/tools/llvm-upgrade/UpgradeLexer.cpp:1.13 --- llvm/tools/llvm-upgrade/UpgradeLexer.cpp:1.12 Sun Dec 31 00:02:26 2006 +++ llvm/tools/llvm-upgrade/UpgradeLexer.cpp Mon Jan 1 23:45:11 2007 @@ -20,7 +20,7 @@ /* A lexical scanner generated by flex*/ /* Scanner skeleton version: - * $Header: /var/cvs/llvm/llvm/tools/llvm-upgrade/UpgradeLexer.cpp,v 1.12 2006/12/31 06:02:26 reid Exp $ + * $Header: /var/cvs/llvm/llvm/tools/llvm-upgrade/UpgradeLexer.cpp,v 1.13 2007/01/02 05:45:11 reid Exp $ */ #define FLEX_SCANNER @@ -962,9 +962,7 @@ return sym #define RET_TY(sym,OldTY,NewTY,sign) \ - Upgradelval.Type.newTy = new std::string(NewTY); \ - Upgradelval.Type.oldTy = OldTY; \ - Upgradelval.Type.elemTy = VoidTy; \ + Upgradelval.Type = new TypeInfo(NewTY, OldTY); \ return sym #define YY_NEVER_INTERACTIVE 1 @@ -984,7 +982,7 @@ /* HexIntConstant - Hexadecimal constant generated by the CFE to avoid forcing * it to deal with 64 bit numbers. */ -#line 988 "UpgradeLexer.cpp" +#line 986 "UpgradeLexer.cpp" /* Macros after this point can all be overridden by user definitions in * section 1. @@ -1135,10 +1133,10 @@ register char *yy_cp = NULL, *yy_bp = NULL; register int yy_act; -#line 99 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 97 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" -#line 1142 "UpgradeLexer.cpp" +#line 1140 "UpgradeLexer.cpp" if ( yy_init ) { @@ -1231,776 +1229,776 @@ { /* beginning of action switch */ case 1: YY_RULE_SETUP -#line 101 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 99 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { /* Ignore comments for now */ } YY_BREAK case 2: YY_RULE_SETUP -#line 103 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 101 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( BEGINTOK); } YY_BREAK case 3: YY_RULE_SETUP -#line 104 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 102 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( ENDTOK); } YY_BREAK case 4: YY_RULE_SETUP -#line 105 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 103 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( TRUETOK); } YY_BREAK case 5: YY_RULE_SETUP -#line 106 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 104 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( FALSETOK); } YY_BREAK case 6: YY_RULE_SETUP -#line 107 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 105 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( DECLARE); } YY_BREAK case 7: YY_RULE_SETUP -#line 108 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 106 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( GLOBAL); } YY_BREAK case 8: YY_RULE_SETUP -#line 109 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 107 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( CONSTANT); } YY_BREAK case 9: YY_RULE_SETUP -#line 110 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 108 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( INTERNAL); } YY_BREAK case 10: YY_RULE_SETUP -#line 111 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 109 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( LINKONCE); } YY_BREAK case 11: YY_RULE_SETUP -#line 112 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 110 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( WEAK); } YY_BREAK case 12: YY_RULE_SETUP -#line 113 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 111 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( APPENDING); } YY_BREAK case 13: YY_RULE_SETUP -#line 114 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 112 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( DLLIMPORT); } YY_BREAK case 14: YY_RULE_SETUP -#line 115 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 113 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( DLLEXPORT); } YY_BREAK case 15: YY_RULE_SETUP -#line 116 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 114 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( EXTERN_WEAK); } YY_BREAK case 16: YY_RULE_SETUP -#line 117 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 115 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( EXTERNAL); } YY_BREAK case 17: YY_RULE_SETUP -#line 118 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 116 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( UNINITIALIZED); } // alias for external YY_BREAK case 18: YY_RULE_SETUP -#line 119 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 117 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( IMPLEMENTATION); } YY_BREAK case 19: YY_RULE_SETUP -#line 120 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 118 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( ZEROINITIALIZER); } YY_BREAK case 20: YY_RULE_SETUP -#line 121 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 119 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( DOTDOTDOT); } YY_BREAK case 21: YY_RULE_SETUP -#line 122 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 120 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( UNDEF); } YY_BREAK case 22: YY_RULE_SETUP -#line 123 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 121 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( NULL_TOK); } YY_BREAK case 23: YY_RULE_SETUP -#line 124 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 122 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( TO); } YY_BREAK case 24: YY_RULE_SETUP -#line 125 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 123 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( TAIL); } YY_BREAK case 25: YY_RULE_SETUP -#line 126 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 124 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( TARGET); } YY_BREAK case 26: YY_RULE_SETUP -#line 127 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 125 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( TRIPLE); } YY_BREAK case 27: YY_RULE_SETUP -#line 128 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 126 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( DEPLIBS); } YY_BREAK case 28: YY_RULE_SETUP -#line 129 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 127 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( ENDIAN); } YY_BREAK case 29: YY_RULE_SETUP -#line 130 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 128 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( POINTERSIZE); } YY_BREAK case 30: YY_RULE_SETUP -#line 131 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 129 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( DATALAYOUT); } YY_BREAK case 31: YY_RULE_SETUP -#line 132 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 130 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( LITTLE); } YY_BREAK case 32: YY_RULE_SETUP -#line 133 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 131 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( BIG); } YY_BREAK case 33: YY_RULE_SETUP -#line 134 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 132 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( VOLATILE); } YY_BREAK case 34: YY_RULE_SETUP -#line 135 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 133 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( ALIGN); } YY_BREAK case 35: YY_RULE_SETUP -#line 136 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 134 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SECTION); } YY_BREAK case 36: YY_RULE_SETUP -#line 137 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 135 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( MODULE); } YY_BREAK case 37: YY_RULE_SETUP -#line 138 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 136 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( ASM_TOK); } YY_BREAK case 38: YY_RULE_SETUP -#line 139 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 137 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SIDEEFFECT); } YY_BREAK case 39: YY_RULE_SETUP -#line 141 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 139 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( CC_TOK); } YY_BREAK case 40: YY_RULE_SETUP -#line 142 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 140 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( CCC_TOK); } YY_BREAK case 41: YY_RULE_SETUP -#line 143 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 141 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( CSRETCC_TOK); } YY_BREAK case 42: YY_RULE_SETUP -#line 144 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 142 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( FASTCC_TOK); } YY_BREAK case 43: YY_RULE_SETUP -#line 145 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 143 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( COLDCC_TOK); } YY_BREAK case 44: YY_RULE_SETUP -#line 146 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 144 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( X86_STDCALLCC_TOK); } YY_BREAK case 45: YY_RULE_SETUP -#line 147 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 145 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( X86_FASTCALLCC_TOK); } YY_BREAK case 46: YY_RULE_SETUP -#line 149 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 147 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(VOID,VoidTy,"void",false); } YY_BREAK case 47: YY_RULE_SETUP -#line 150 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 148 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(BOOL,BoolTy,"bool",false); } YY_BREAK case 48: YY_RULE_SETUP -#line 151 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 149 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(SBYTE,SByteTy,"i8",true); } YY_BREAK case 49: YY_RULE_SETUP -#line 152 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 150 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(UBYTE,UByteTy,"i8",false); } YY_BREAK case 50: YY_RULE_SETUP -#line 153 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 151 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(SHORT,ShortTy,"i16",true); } YY_BREAK case 51: YY_RULE_SETUP -#line 154 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 152 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(USHORT,UShortTy,"i16",false); } YY_BREAK case 52: YY_RULE_SETUP -#line 155 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 153 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(INT,IntTy,"i32",true); } YY_BREAK case 53: YY_RULE_SETUP -#line 156 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 154 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(UINT,UIntTy,"i32",false); } YY_BREAK case 54: YY_RULE_SETUP -#line 157 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 155 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(LONG,LongTy,"i64",true); } YY_BREAK case 55: YY_RULE_SETUP -#line 158 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 156 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(ULONG,ULongTy,"i64",false); } YY_BREAK case 56: YY_RULE_SETUP -#line 159 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 157 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(UBYTE,UByteTy,"i8",false); } YY_BREAK case 57: YY_RULE_SETUP -#line 160 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 158 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(USHORT,UShortTy,"i16",false); } YY_BREAK case 58: YY_RULE_SETUP -#line 161 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 159 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(UINT,UIntTy,"i32",false); } YY_BREAK case 59: YY_RULE_SETUP -#line 162 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 160 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(ULONG,ULongTy,"i64",false); } YY_BREAK case 60: YY_RULE_SETUP -#line 163 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 161 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(FLOAT,FloatTy,"float",false); } YY_BREAK case 61: YY_RULE_SETUP -#line 164 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 162 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(DOUBLE,DoubleTy,"double",false); } YY_BREAK case 62: YY_RULE_SETUP -#line 165 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 163 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(LABEL,LabelTy,"label",false); } YY_BREAK case 63: YY_RULE_SETUP -#line 166 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 164 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(OPAQUE); } YY_BREAK case 64: YY_RULE_SETUP -#line 167 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 165 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(TYPE); } YY_BREAK case 65: YY_RULE_SETUP -#line 169 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 167 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( ADD); } YY_BREAK case 66: YY_RULE_SETUP -#line 170 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 168 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SUB); } YY_BREAK case 67: YY_RULE_SETUP -#line 171 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 169 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( MUL); } YY_BREAK case 68: YY_RULE_SETUP -#line 172 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 170 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( DIV); } YY_BREAK case 69: YY_RULE_SETUP -#line 173 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 171 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( UDIV); } YY_BREAK case 70: YY_RULE_SETUP -#line 174 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 172 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SDIV); } YY_BREAK case 71: YY_RULE_SETUP -#line 175 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 173 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( FDIV); } YY_BREAK case 72: YY_RULE_SETUP -#line 176 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 174 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( REM); } YY_BREAK case 73: YY_RULE_SETUP -#line 177 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 175 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( UREM); } YY_BREAK case 74: YY_RULE_SETUP -#line 178 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 176 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SREM); } YY_BREAK case 75: YY_RULE_SETUP -#line 179 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 177 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( FREM); } YY_BREAK case 76: YY_RULE_SETUP -#line 180 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 178 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( AND); } YY_BREAK case 77: YY_RULE_SETUP -#line 181 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 179 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( OR); } YY_BREAK case 78: YY_RULE_SETUP -#line 182 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 180 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( XOR); } YY_BREAK case 79: YY_RULE_SETUP -#line 183 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 181 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SETNE); } YY_BREAK case 80: YY_RULE_SETUP -#line 184 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 182 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SETEQ); } YY_BREAK case 81: YY_RULE_SETUP -#line 185 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 183 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SETLT); } YY_BREAK case 82: YY_RULE_SETUP -#line 186 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 184 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SETGT); } YY_BREAK case 83: YY_RULE_SETUP -#line 187 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 185 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SETLE); } YY_BREAK case 84: YY_RULE_SETUP -#line 188 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 186 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SETGE); } YY_BREAK case 85: YY_RULE_SETUP -#line 189 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 187 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(ICMP); } YY_BREAK case 86: YY_RULE_SETUP -#line 190 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 188 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(FCMP); } YY_BREAK case 87: YY_RULE_SETUP -#line 191 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 189 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(EQ); } YY_BREAK case 88: YY_RULE_SETUP -#line 192 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 190 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(NE); } YY_BREAK case 89: YY_RULE_SETUP -#line 193 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 191 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(SLT); } YY_BREAK case 90: YY_RULE_SETUP -#line 194 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 192 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(SGT); } YY_BREAK case 91: YY_RULE_SETUP -#line 195 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 193 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(SLE); } YY_BREAK case 92: YY_RULE_SETUP -#line 196 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 194 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(SGE); } YY_BREAK case 93: YY_RULE_SETUP -#line 197 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 195 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(OEQ); } YY_BREAK case 94: YY_RULE_SETUP -#line 198 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 196 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(ONE); } YY_BREAK case 95: YY_RULE_SETUP -#line 199 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 197 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(OLT); } YY_BREAK case 96: YY_RULE_SETUP -#line 200 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 198 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(OGT); } YY_BREAK case 97: YY_RULE_SETUP -#line 201 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 199 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(OLE); } YY_BREAK case 98: YY_RULE_SETUP -#line 202 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 200 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(OGE); } YY_BREAK case 99: YY_RULE_SETUP -#line 203 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 201 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(ORD); } YY_BREAK case 100: YY_RULE_SETUP -#line 204 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 202 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(UNO); } YY_BREAK case 101: YY_RULE_SETUP -#line 205 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 203 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(UEQ); } YY_BREAK case 102: YY_RULE_SETUP -#line 206 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 204 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(UNE); } YY_BREAK case 103: YY_RULE_SETUP -#line 207 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 205 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(ULT); } YY_BREAK case 104: YY_RULE_SETUP -#line 208 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 206 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(UGT); } YY_BREAK case 105: YY_RULE_SETUP -#line 209 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 207 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(ULE); } YY_BREAK case 106: YY_RULE_SETUP -#line 210 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 208 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(UGE); } YY_BREAK case 107: YY_RULE_SETUP -#line 212 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 210 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( PHI_TOK); } YY_BREAK case 108: YY_RULE_SETUP -#line 213 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 211 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( CALL); } YY_BREAK case 109: YY_RULE_SETUP -#line 214 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 212 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( CAST); } YY_BREAK case 110: YY_RULE_SETUP -#line 215 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 213 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( TRUNC); } YY_BREAK case 111: YY_RULE_SETUP -#line 216 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 214 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( ZEXT); } YY_BREAK case 112: YY_RULE_SETUP -#line 217 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 215 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SEXT); } YY_BREAK case 113: YY_RULE_SETUP -#line 218 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 216 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( FPTRUNC); } YY_BREAK case 114: YY_RULE_SETUP -#line 219 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 217 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( FPEXT); } YY_BREAK case 115: YY_RULE_SETUP -#line 220 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 218 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( FPTOUI); } YY_BREAK case 116: YY_RULE_SETUP -#line 221 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 219 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( FPTOSI); } YY_BREAK case 117: YY_RULE_SETUP -#line 222 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 220 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( UITOFP); } YY_BREAK case 118: YY_RULE_SETUP -#line 223 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 221 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SITOFP); } YY_BREAK case 119: YY_RULE_SETUP -#line 224 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 222 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( PTRTOINT); } YY_BREAK case 120: YY_RULE_SETUP -#line 225 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 223 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( INTTOPTR); } YY_BREAK case 121: YY_RULE_SETUP -#line 226 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 224 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( BITCAST); } YY_BREAK case 122: YY_RULE_SETUP -#line 227 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 225 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SELECT); } YY_BREAK case 123: YY_RULE_SETUP -#line 228 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 226 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SHL); } YY_BREAK case 124: YY_RULE_SETUP -#line 229 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 227 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SHR); } YY_BREAK case 125: YY_RULE_SETUP -#line 230 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 228 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( ASHR); } YY_BREAK case 126: YY_RULE_SETUP -#line 231 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 229 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( LSHR); } YY_BREAK case 127: YY_RULE_SETUP -#line 232 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 230 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( VAARG); } YY_BREAK case 128: YY_RULE_SETUP -#line 233 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 231 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( RET); } YY_BREAK case 129: YY_RULE_SETUP -#line 234 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 232 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( BR); } YY_BREAK case 130: YY_RULE_SETUP -#line 235 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 233 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SWITCH); } YY_BREAK case 131: YY_RULE_SETUP -#line 236 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 234 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( INVOKE); } YY_BREAK case 132: YY_RULE_SETUP -#line 237 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 235 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( UNWIND); } YY_BREAK case 133: YY_RULE_SETUP -#line 238 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 236 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( EXCEPT); } // alias for unwind YY_BREAK case 134: YY_RULE_SETUP -#line 239 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 237 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( UNREACHABLE); } YY_BREAK case 135: YY_RULE_SETUP -#line 241 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 239 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( MALLOC); } YY_BREAK case 136: YY_RULE_SETUP -#line 242 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 240 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( ALLOCA); } YY_BREAK case 137: YY_RULE_SETUP -#line 243 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 241 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( FREE); } YY_BREAK case 138: YY_RULE_SETUP -#line 244 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 242 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( LOAD); } YY_BREAK case 139: YY_RULE_SETUP -#line 245 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 243 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( STORE); } YY_BREAK case 140: YY_RULE_SETUP -#line 246 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 244 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( GETELEMENTPTR); } YY_BREAK case 141: YY_RULE_SETUP -#line 248 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 246 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( EXTRACTELEMENT); } YY_BREAK case 142: YY_RULE_SETUP -#line 249 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 247 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( INSERTELEMENT); } YY_BREAK case 143: YY_RULE_SETUP -#line 250 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 248 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SHUFFLEVECTOR); } YY_BREAK case 144: YY_RULE_SETUP -#line 253 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 251 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( VAR_ID); } YY_BREAK case 145: YY_RULE_SETUP -#line 254 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 252 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( LABELSTR); } YY_BREAK case 146: YY_RULE_SETUP -#line 255 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 253 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( LABELSTR); } YY_BREAK case 147: YY_RULE_SETUP -#line 256 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 254 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( STRINGCONSTANT ); } YY_BREAK case 148: YY_RULE_SETUP -#line 257 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 255 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( EUINT64VAL ); } YY_BREAK case 149: YY_RULE_SETUP -#line 258 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 256 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( ESINT64VAL ); } YY_BREAK case 150: YY_RULE_SETUP -#line 259 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 257 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( yytext[0] == 's' ? ESINT64VAL : EUINT64VAL ); } YY_BREAK case 151: YY_RULE_SETUP -#line 260 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 258 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( UINTVAL); } YY_BREAK case 152: YY_RULE_SETUP -#line 261 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 259 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SINTVAL); } YY_BREAK case 153: YY_RULE_SETUP -#line 262 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 260 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( FPVAL); } YY_BREAK case 154: YY_RULE_SETUP -#line 263 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 261 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( FPVAL); } YY_BREAK case YY_STATE_EOF(INITIAL): -#line 264 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 262 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { /* Make sure to free the internal buffers for flex when we are * done reading our input! @@ -2011,20 +2009,20 @@ YY_BREAK case 155: YY_RULE_SETUP -#line 272 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 270 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { /* Ignore whitespace */ } YY_BREAK case 156: YY_RULE_SETUP -#line 273 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 271 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { return yytext[0]; } YY_BREAK case 157: YY_RULE_SETUP -#line 275 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 273 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" YY_FATAL_ERROR( "flex scanner jammed" ); YY_BREAK -#line 2028 "UpgradeLexer.cpp" +#line 2026 "UpgradeLexer.cpp" case YY_END_OF_BUFFER: { @@ -2902,5 +2900,5 @@ return 0; } #endif -#line 275 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 273 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" Index: llvm/tools/llvm-upgrade/UpgradeLexer.cpp.cvs diff -u llvm/tools/llvm-upgrade/UpgradeLexer.cpp.cvs:1.11 llvm/tools/llvm-upgrade/UpgradeLexer.cpp.cvs:1.12 --- llvm/tools/llvm-upgrade/UpgradeLexer.cpp.cvs:1.11 Sun Dec 31 00:02:26 2006 +++ llvm/tools/llvm-upgrade/UpgradeLexer.cpp.cvs Mon Jan 1 23:45:11 2007 @@ -20,7 +20,7 @@ /* A lexical scanner generated by flex*/ /* Scanner skeleton version: - * $Header: /var/cvs/llvm/llvm/tools/llvm-upgrade/UpgradeLexer.cpp.cvs,v 1.11 2006/12/31 06:02:26 reid Exp $ + * $Header: /var/cvs/llvm/llvm/tools/llvm-upgrade/UpgradeLexer.cpp.cvs,v 1.12 2007/01/02 05:45:11 reid Exp $ */ #define FLEX_SCANNER @@ -962,9 +962,7 @@ return sym #define RET_TY(sym,OldTY,NewTY,sign) \ - Upgradelval.Type.newTy = new std::string(NewTY); \ - Upgradelval.Type.oldTy = OldTY; \ - Upgradelval.Type.elemTy = VoidTy; \ + Upgradelval.Type = new TypeInfo(NewTY, OldTY); \ return sym #define YY_NEVER_INTERACTIVE 1 @@ -984,7 +982,7 @@ /* HexIntConstant - Hexadecimal constant generated by the CFE to avoid forcing * it to deal with 64 bit numbers. */ -#line 988 "UpgradeLexer.cpp" +#line 986 "UpgradeLexer.cpp" /* Macros after this point can all be overridden by user definitions in * section 1. @@ -1135,10 +1133,10 @@ register char *yy_cp = NULL, *yy_bp = NULL; register int yy_act; -#line 99 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 97 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" -#line 1142 "UpgradeLexer.cpp" +#line 1140 "UpgradeLexer.cpp" if ( yy_init ) { @@ -1231,776 +1229,776 @@ { /* beginning of action switch */ case 1: YY_RULE_SETUP -#line 101 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 99 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { /* Ignore comments for now */ } YY_BREAK case 2: YY_RULE_SETUP -#line 103 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 101 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( BEGINTOK); } YY_BREAK case 3: YY_RULE_SETUP -#line 104 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 102 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( ENDTOK); } YY_BREAK case 4: YY_RULE_SETUP -#line 105 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 103 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( TRUETOK); } YY_BREAK case 5: YY_RULE_SETUP -#line 106 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 104 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( FALSETOK); } YY_BREAK case 6: YY_RULE_SETUP -#line 107 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 105 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( DECLARE); } YY_BREAK case 7: YY_RULE_SETUP -#line 108 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 106 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( GLOBAL); } YY_BREAK case 8: YY_RULE_SETUP -#line 109 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 107 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( CONSTANT); } YY_BREAK case 9: YY_RULE_SETUP -#line 110 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 108 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( INTERNAL); } YY_BREAK case 10: YY_RULE_SETUP -#line 111 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 109 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( LINKONCE); } YY_BREAK case 11: YY_RULE_SETUP -#line 112 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 110 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( WEAK); } YY_BREAK case 12: YY_RULE_SETUP -#line 113 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 111 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( APPENDING); } YY_BREAK case 13: YY_RULE_SETUP -#line 114 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 112 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( DLLIMPORT); } YY_BREAK case 14: YY_RULE_SETUP -#line 115 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 113 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( DLLEXPORT); } YY_BREAK case 15: YY_RULE_SETUP -#line 116 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 114 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( EXTERN_WEAK); } YY_BREAK case 16: YY_RULE_SETUP -#line 117 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 115 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( EXTERNAL); } YY_BREAK case 17: YY_RULE_SETUP -#line 118 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 116 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( UNINITIALIZED); } // alias for external YY_BREAK case 18: YY_RULE_SETUP -#line 119 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 117 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( IMPLEMENTATION); } YY_BREAK case 19: YY_RULE_SETUP -#line 120 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 118 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( ZEROINITIALIZER); } YY_BREAK case 20: YY_RULE_SETUP -#line 121 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 119 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( DOTDOTDOT); } YY_BREAK case 21: YY_RULE_SETUP -#line 122 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 120 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( UNDEF); } YY_BREAK case 22: YY_RULE_SETUP -#line 123 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 121 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( NULL_TOK); } YY_BREAK case 23: YY_RULE_SETUP -#line 124 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 122 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( TO); } YY_BREAK case 24: YY_RULE_SETUP -#line 125 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 123 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( TAIL); } YY_BREAK case 25: YY_RULE_SETUP -#line 126 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 124 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( TARGET); } YY_BREAK case 26: YY_RULE_SETUP -#line 127 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 125 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( TRIPLE); } YY_BREAK case 27: YY_RULE_SETUP -#line 128 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 126 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( DEPLIBS); } YY_BREAK case 28: YY_RULE_SETUP -#line 129 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 127 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( ENDIAN); } YY_BREAK case 29: YY_RULE_SETUP -#line 130 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 128 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( POINTERSIZE); } YY_BREAK case 30: YY_RULE_SETUP -#line 131 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 129 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( DATALAYOUT); } YY_BREAK case 31: YY_RULE_SETUP -#line 132 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 130 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( LITTLE); } YY_BREAK case 32: YY_RULE_SETUP -#line 133 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 131 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( BIG); } YY_BREAK case 33: YY_RULE_SETUP -#line 134 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 132 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( VOLATILE); } YY_BREAK case 34: YY_RULE_SETUP -#line 135 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 133 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( ALIGN); } YY_BREAK case 35: YY_RULE_SETUP -#line 136 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 134 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SECTION); } YY_BREAK case 36: YY_RULE_SETUP -#line 137 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 135 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( MODULE); } YY_BREAK case 37: YY_RULE_SETUP -#line 138 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 136 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( ASM_TOK); } YY_BREAK case 38: YY_RULE_SETUP -#line 139 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 137 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SIDEEFFECT); } YY_BREAK case 39: YY_RULE_SETUP -#line 141 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 139 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( CC_TOK); } YY_BREAK case 40: YY_RULE_SETUP -#line 142 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 140 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( CCC_TOK); } YY_BREAK case 41: YY_RULE_SETUP -#line 143 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 141 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( CSRETCC_TOK); } YY_BREAK case 42: YY_RULE_SETUP -#line 144 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 142 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( FASTCC_TOK); } YY_BREAK case 43: YY_RULE_SETUP -#line 145 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 143 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( COLDCC_TOK); } YY_BREAK case 44: YY_RULE_SETUP -#line 146 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 144 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( X86_STDCALLCC_TOK); } YY_BREAK case 45: YY_RULE_SETUP -#line 147 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 145 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( X86_FASTCALLCC_TOK); } YY_BREAK case 46: YY_RULE_SETUP -#line 149 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 147 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(VOID,VoidTy,"void",false); } YY_BREAK case 47: YY_RULE_SETUP -#line 150 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 148 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(BOOL,BoolTy,"bool",false); } YY_BREAK case 48: YY_RULE_SETUP -#line 151 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 149 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(SBYTE,SByteTy,"i8",true); } YY_BREAK case 49: YY_RULE_SETUP -#line 152 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 150 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(UBYTE,UByteTy,"i8",false); } YY_BREAK case 50: YY_RULE_SETUP -#line 153 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 151 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(SHORT,ShortTy,"i16",true); } YY_BREAK case 51: YY_RULE_SETUP -#line 154 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 152 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(USHORT,UShortTy,"i16",false); } YY_BREAK case 52: YY_RULE_SETUP -#line 155 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 153 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(INT,IntTy,"i32",true); } YY_BREAK case 53: YY_RULE_SETUP -#line 156 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 154 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(UINT,UIntTy,"i32",false); } YY_BREAK case 54: YY_RULE_SETUP -#line 157 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 155 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(LONG,LongTy,"i64",true); } YY_BREAK case 55: YY_RULE_SETUP -#line 158 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 156 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(ULONG,ULongTy,"i64",false); } YY_BREAK case 56: YY_RULE_SETUP -#line 159 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 157 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(UBYTE,UByteTy,"i8",false); } YY_BREAK case 57: YY_RULE_SETUP -#line 160 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 158 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(USHORT,UShortTy,"i16",false); } YY_BREAK case 58: YY_RULE_SETUP -#line 161 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 159 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(UINT,UIntTy,"i32",false); } YY_BREAK case 59: YY_RULE_SETUP -#line 162 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 160 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(ULONG,ULongTy,"i64",false); } YY_BREAK case 60: YY_RULE_SETUP -#line 163 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 161 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(FLOAT,FloatTy,"float",false); } YY_BREAK case 61: YY_RULE_SETUP -#line 164 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 162 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(DOUBLE,DoubleTy,"double",false); } YY_BREAK case 62: YY_RULE_SETUP -#line 165 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 163 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(LABEL,LabelTy,"label",false); } YY_BREAK case 63: YY_RULE_SETUP -#line 166 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 164 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(OPAQUE); } YY_BREAK case 64: YY_RULE_SETUP -#line 167 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 165 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(TYPE); } YY_BREAK case 65: YY_RULE_SETUP -#line 169 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 167 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( ADD); } YY_BREAK case 66: YY_RULE_SETUP -#line 170 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 168 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SUB); } YY_BREAK case 67: YY_RULE_SETUP -#line 171 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 169 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( MUL); } YY_BREAK case 68: YY_RULE_SETUP -#line 172 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 170 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( DIV); } YY_BREAK case 69: YY_RULE_SETUP -#line 173 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 171 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( UDIV); } YY_BREAK case 70: YY_RULE_SETUP -#line 174 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 172 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SDIV); } YY_BREAK case 71: YY_RULE_SETUP -#line 175 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 173 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( FDIV); } YY_BREAK case 72: YY_RULE_SETUP -#line 176 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 174 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( REM); } YY_BREAK case 73: YY_RULE_SETUP -#line 177 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 175 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( UREM); } YY_BREAK case 74: YY_RULE_SETUP -#line 178 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 176 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SREM); } YY_BREAK case 75: YY_RULE_SETUP -#line 179 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 177 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( FREM); } YY_BREAK case 76: YY_RULE_SETUP -#line 180 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 178 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( AND); } YY_BREAK case 77: YY_RULE_SETUP -#line 181 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 179 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( OR); } YY_BREAK case 78: YY_RULE_SETUP -#line 182 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 180 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( XOR); } YY_BREAK case 79: YY_RULE_SETUP -#line 183 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 181 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SETNE); } YY_BREAK case 80: YY_RULE_SETUP -#line 184 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 182 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SETEQ); } YY_BREAK case 81: YY_RULE_SETUP -#line 185 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 183 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SETLT); } YY_BREAK case 82: YY_RULE_SETUP -#line 186 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 184 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SETGT); } YY_BREAK case 83: YY_RULE_SETUP -#line 187 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 185 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SETLE); } YY_BREAK case 84: YY_RULE_SETUP -#line 188 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 186 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SETGE); } YY_BREAK case 85: YY_RULE_SETUP -#line 189 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 187 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(ICMP); } YY_BREAK case 86: YY_RULE_SETUP -#line 190 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 188 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(FCMP); } YY_BREAK case 87: YY_RULE_SETUP -#line 191 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 189 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(EQ); } YY_BREAK case 88: YY_RULE_SETUP -#line 192 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 190 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(NE); } YY_BREAK case 89: YY_RULE_SETUP -#line 193 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 191 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(SLT); } YY_BREAK case 90: YY_RULE_SETUP -#line 194 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 192 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(SGT); } YY_BREAK case 91: YY_RULE_SETUP -#line 195 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 193 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(SLE); } YY_BREAK case 92: YY_RULE_SETUP -#line 196 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 194 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(SGE); } YY_BREAK case 93: YY_RULE_SETUP -#line 197 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 195 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(OEQ); } YY_BREAK case 94: YY_RULE_SETUP -#line 198 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 196 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(ONE); } YY_BREAK case 95: YY_RULE_SETUP -#line 199 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 197 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(OLT); } YY_BREAK case 96: YY_RULE_SETUP -#line 200 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 198 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(OGT); } YY_BREAK case 97: YY_RULE_SETUP -#line 201 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 199 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(OLE); } YY_BREAK case 98: YY_RULE_SETUP -#line 202 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 200 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(OGE); } YY_BREAK case 99: YY_RULE_SETUP -#line 203 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 201 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(ORD); } YY_BREAK case 100: YY_RULE_SETUP -#line 204 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 202 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(UNO); } YY_BREAK case 101: YY_RULE_SETUP -#line 205 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 203 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(UEQ); } YY_BREAK case 102: YY_RULE_SETUP -#line 206 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 204 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(UNE); } YY_BREAK case 103: YY_RULE_SETUP -#line 207 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 205 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(ULT); } YY_BREAK case 104: YY_RULE_SETUP -#line 208 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 206 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(UGT); } YY_BREAK case 105: YY_RULE_SETUP -#line 209 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 207 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(ULE); } YY_BREAK case 106: YY_RULE_SETUP -#line 210 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 208 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(UGE); } YY_BREAK case 107: YY_RULE_SETUP -#line 212 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 210 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( PHI_TOK); } YY_BREAK case 108: YY_RULE_SETUP -#line 213 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 211 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( CALL); } YY_BREAK case 109: YY_RULE_SETUP -#line 214 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 212 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( CAST); } YY_BREAK case 110: YY_RULE_SETUP -#line 215 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 213 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( TRUNC); } YY_BREAK case 111: YY_RULE_SETUP -#line 216 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 214 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( ZEXT); } YY_BREAK case 112: YY_RULE_SETUP -#line 217 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 215 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SEXT); } YY_BREAK case 113: YY_RULE_SETUP -#line 218 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 216 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( FPTRUNC); } YY_BREAK case 114: YY_RULE_SETUP -#line 219 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 217 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( FPEXT); } YY_BREAK case 115: YY_RULE_SETUP -#line 220 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 218 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( FPTOUI); } YY_BREAK case 116: YY_RULE_SETUP -#line 221 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 219 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( FPTOSI); } YY_BREAK case 117: YY_RULE_SETUP -#line 222 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 220 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( UITOFP); } YY_BREAK case 118: YY_RULE_SETUP -#line 223 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 221 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SITOFP); } YY_BREAK case 119: YY_RULE_SETUP -#line 224 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 222 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( PTRTOINT); } YY_BREAK case 120: YY_RULE_SETUP -#line 225 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 223 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( INTTOPTR); } YY_BREAK case 121: YY_RULE_SETUP -#line 226 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 224 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( BITCAST); } YY_BREAK case 122: YY_RULE_SETUP -#line 227 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 225 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SELECT); } YY_BREAK case 123: YY_RULE_SETUP -#line 228 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 226 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SHL); } YY_BREAK case 124: YY_RULE_SETUP -#line 229 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 227 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SHR); } YY_BREAK case 125: YY_RULE_SETUP -#line 230 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 228 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( ASHR); } YY_BREAK case 126: YY_RULE_SETUP -#line 231 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 229 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( LSHR); } YY_BREAK case 127: YY_RULE_SETUP -#line 232 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 230 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( VAARG); } YY_BREAK case 128: YY_RULE_SETUP -#line 233 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 231 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( RET); } YY_BREAK case 129: YY_RULE_SETUP -#line 234 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 232 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( BR); } YY_BREAK case 130: YY_RULE_SETUP -#line 235 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 233 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SWITCH); } YY_BREAK case 131: YY_RULE_SETUP -#line 236 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 234 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( INVOKE); } YY_BREAK case 132: YY_RULE_SETUP -#line 237 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 235 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( UNWIND); } YY_BREAK case 133: YY_RULE_SETUP -#line 238 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 236 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( EXCEPT); } // alias for unwind YY_BREAK case 134: YY_RULE_SETUP -#line 239 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 237 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( UNREACHABLE); } YY_BREAK case 135: YY_RULE_SETUP -#line 241 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 239 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( MALLOC); } YY_BREAK case 136: YY_RULE_SETUP -#line 242 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 240 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( ALLOCA); } YY_BREAK case 137: YY_RULE_SETUP -#line 243 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 241 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( FREE); } YY_BREAK case 138: YY_RULE_SETUP -#line 244 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 242 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( LOAD); } YY_BREAK case 139: YY_RULE_SETUP -#line 245 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 243 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( STORE); } YY_BREAK case 140: YY_RULE_SETUP -#line 246 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 244 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( GETELEMENTPTR); } YY_BREAK case 141: YY_RULE_SETUP -#line 248 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 246 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( EXTRACTELEMENT); } YY_BREAK case 142: YY_RULE_SETUP -#line 249 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 247 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( INSERTELEMENT); } YY_BREAK case 143: YY_RULE_SETUP -#line 250 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 248 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SHUFFLEVECTOR); } YY_BREAK case 144: YY_RULE_SETUP -#line 253 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 251 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( VAR_ID); } YY_BREAK case 145: YY_RULE_SETUP -#line 254 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 252 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( LABELSTR); } YY_BREAK case 146: YY_RULE_SETUP -#line 255 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 253 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( LABELSTR); } YY_BREAK case 147: YY_RULE_SETUP -#line 256 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 254 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( STRINGCONSTANT ); } YY_BREAK case 148: YY_RULE_SETUP -#line 257 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 255 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( EUINT64VAL ); } YY_BREAK case 149: YY_RULE_SETUP -#line 258 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 256 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( ESINT64VAL ); } YY_BREAK case 150: YY_RULE_SETUP -#line 259 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 257 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( yytext[0] == 's' ? ESINT64VAL : EUINT64VAL ); } YY_BREAK case 151: YY_RULE_SETUP -#line 260 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 258 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( UINTVAL); } YY_BREAK case 152: YY_RULE_SETUP -#line 261 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 259 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SINTVAL); } YY_BREAK case 153: YY_RULE_SETUP -#line 262 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 260 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( FPVAL); } YY_BREAK case 154: YY_RULE_SETUP -#line 263 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 261 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( FPVAL); } YY_BREAK case YY_STATE_EOF(INITIAL): -#line 264 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 262 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { /* Make sure to free the internal buffers for flex when we are * done reading our input! @@ -2011,20 +2009,20 @@ YY_BREAK case 155: YY_RULE_SETUP -#line 272 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 270 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { /* Ignore whitespace */ } YY_BREAK case 156: YY_RULE_SETUP -#line 273 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 271 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" { return yytext[0]; } YY_BREAK case 157: YY_RULE_SETUP -#line 275 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 273 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" YY_FATAL_ERROR( "flex scanner jammed" ); YY_BREAK -#line 2028 "UpgradeLexer.cpp" +#line 2026 "UpgradeLexer.cpp" case YY_END_OF_BUFFER: { @@ -2902,5 +2900,5 @@ return 0; } #endif -#line 275 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 273 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" Index: llvm/tools/llvm-upgrade/UpgradeLexer.l.cvs diff -u llvm/tools/llvm-upgrade/UpgradeLexer.l.cvs:1.11 llvm/tools/llvm-upgrade/UpgradeLexer.l.cvs:1.12 --- llvm/tools/llvm-upgrade/UpgradeLexer.l.cvs:1.11 Sun Dec 31 00:02:26 2006 +++ llvm/tools/llvm-upgrade/UpgradeLexer.l.cvs Mon Jan 1 23:45:11 2007 @@ -48,9 +48,7 @@ return sym #define RET_TY(sym,OldTY,NewTY,sign) \ - Upgradelval.Type.newTy = new std::string(NewTY); \ - Upgradelval.Type.oldTy = OldTY; \ - Upgradelval.Type.elemTy = VoidTy; \ + Upgradelval.Type = new TypeInfo(NewTY, OldTY); \ return sym #define YY_NEVER_INTERACTIVE 1 Index: llvm/tools/llvm-upgrade/UpgradeParser.cpp diff -u llvm/tools/llvm-upgrade/UpgradeParser.cpp:1.30 llvm/tools/llvm-upgrade/UpgradeParser.cpp:1.31 --- llvm/tools/llvm-upgrade/UpgradeParser.cpp:1.30 Sun Dec 31 19:20:41 2006 +++ llvm/tools/llvm-upgrade/UpgradeParser.cpp Mon Jan 1 23:45:11 2007 @@ -371,12 +371,10 @@ #line 14 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" #include "ParserInternals.h" -#include #include #include #include #include -#include #define YYERROR_VERBOSE 1 #define YYINCLUDED_STDLIB_H @@ -436,71 +434,72 @@ } } -static void ResolveType(TypeInfo& Ty) { - if (Ty.oldTy == UnresolvedTy) { - TypeMap::iterator I = NamedTypes.find(*Ty.newTy); +TypeInfo* ResolveType(TypeInfo*& Ty) { + if (Ty->isUnresolved()) { + TypeMap::iterator I = NamedTypes.find(Ty->getNewTy()); if (I != NamedTypes.end()) { - Ty.oldTy = I->second.oldTy; - Ty.elemTy = I->second.elemTy; + Ty = I->second.clone(); + return Ty; } else { - std::string msg("Can't resolve type: "); - msg += *Ty.newTy; + std::string msg("Cannot resolve type: "); + msg += Ty->getNewTy(); yyerror(msg.c_str()); } - } else if (Ty.oldTy == NumericTy) { - unsigned ref = atoi(&((Ty.newTy->c_str())[1])); // Skip the '\\' + } else if (Ty->isNumeric()) { + unsigned ref = atoi(&((Ty->getNewTy().c_str())[1])); // Skip the '\\' if (ref < EnumeratedTypes.size()) { - Ty.oldTy = EnumeratedTypes[ref].oldTy; - Ty.elemTy = EnumeratedTypes[ref].elemTy; + Ty = EnumeratedTypes[ref].clone(); + return Ty; } else { std::string msg("Can't resolve type: "); - msg += *Ty.newTy; + msg += Ty->getNewTy(); yyerror(msg.c_str()); } } // otherwise its already resolved. + return Ty; } static const char* getCastOpcode( - std::string& Source, const TypeInfo& SrcTy, const TypeInfo& DstTy) + std::string& Source, const TypeInfo* SrcTy, const TypeInfo* DstTy) { - unsigned SrcBits = SrcTy.getBitWidth(); - unsigned DstBits = DstTy.getBitWidth(); + unsigned SrcBits = SrcTy->getBitWidth(); + unsigned DstBits = DstTy->getBitWidth(); const char* opcode = "bitcast"; // Run through the possibilities ... - if (DstTy.isIntegral()) { // Casting to integral - if (SrcTy.isIntegral()) { // Casting from integral + if (DstTy->isIntegral()) { // Casting to integral + if (SrcTy->isIntegral()) { // Casting from integral if (DstBits < SrcBits) opcode = "trunc"; else if (DstBits > SrcBits) { // its an extension - if (SrcTy.isSigned()) + if (SrcTy->isSigned()) opcode ="sext"; // signed -> SEXT else opcode = "zext"; // unsigned -> ZEXT } else { opcode = "bitcast"; // Same size, No-op cast } - } else if (SrcTy.isFloatingPoint()) { // Casting from floating pt - if (DstTy.isSigned()) + } else if (SrcTy->isFloatingPoint()) { // Casting from floating pt + if (DstTy->isSigned()) opcode = "fptosi"; // FP -> sint else opcode = "fptoui"; // FP -> uint - } else if (SrcTy.isPacked()) { - assert(DstBits == SrcTy.getBitWidth() && + } else if (SrcTy->isPacked()) { + assert(DstBits == SrcTy->getBitWidth() && "Casting packed to integer of different width"); opcode = "bitcast"; // same size, no-op cast } else { - assert(SrcTy.isPointer() && + assert(SrcTy->isPointer() && "Casting from a value that is not first-class type"); opcode = "ptrtoint"; // ptr -> int } - } else if (DstTy.isFloatingPoint()) { // Casting to floating pt - if (SrcTy.isIntegral()) { // Casting from integral - if (SrcTy.isSigned()) + } else if (DstTy->isFloatingPoint()) { // Casting to floating pt + if (SrcTy->isIntegral()) { // Casting from integral + if (SrcTy->isSigned()) opcode = "sitofp"; // sint -> FP else opcode = "uitofp"; // uint -> FP - } else if (SrcTy.isFloatingPoint()) { // Casting from floating pt + } else if (SrcTy->isFloatingPoint()) { // Casting from floating pt if (DstBits < SrcBits) { opcode = "fptrunc"; // FP -> smaller FP } else if (DstBits > SrcBits) { @@ -508,27 +507,27 @@ } else { opcode ="bitcast"; // same size, no-op cast } - } else if (SrcTy.isPacked()) { - assert(DstBits == SrcTy.getBitWidth() && + } else if (SrcTy->isPacked()) { + assert(DstBits == SrcTy->getBitWidth() && "Casting packed to floating point of different width"); opcode = "bitcast"; // same size, no-op cast } else { assert(0 && "Casting pointer or non-first class to float"); } - } else if (DstTy.isPacked()) { - if (SrcTy.isPacked()) { - assert(DstTy.getBitWidth() == SrcTy.getBitWidth() && + } else if (DstTy->isPacked()) { + if (SrcTy->isPacked()) { + assert(DstTy->getBitWidth() == SrcTy->getBitWidth() && "Casting packed to packed of different widths"); opcode = "bitcast"; // packed -> packed - } else if (DstTy.getBitWidth() == SrcBits) { + } else if (DstTy->getBitWidth() == SrcBits) { opcode = "bitcast"; // float/int -> packed } else { assert(!"Illegal cast to packed (wrong type or size)"); } - } else if (DstTy.isPointer()) { - if (SrcTy.isPointer()) { + } else if (DstTy->isPointer()) { + if (SrcTy->isPointer()) { opcode = "bitcast"; // ptr -> ptr - } else if (SrcTy.isIntegral()) { + } else if (SrcTy->isIntegral()) { opcode = "inttoptr"; // int -> ptr } else { assert(!"Casting invalid type to pointer"); @@ -539,12 +538,12 @@ return opcode; } -static std::string getCastUpgrade( - const std::string& Src, TypeInfo& SrcTy, TypeInfo& DstTy, bool isConst) +static std::string getCastUpgrade(const std::string& Src, TypeInfo* SrcTy, + TypeInfo* DstTy, bool isConst) { std::string Result; std::string Source = Src; - if (SrcTy.isFloatingPoint() && DstTy.isPointer()) { + if (SrcTy->isFloatingPoint() && DstTy->isPointer()) { // fp -> ptr cast is no longer supported but we must upgrade this // by doing a double cast: fp -> int -> ptr if (isConst) @@ -555,16 +554,16 @@ Source = "i64 %cast_upgrade" + llvm::utostr(unique); } // Update the SrcTy for the getCastOpcode call below - SrcTy.destroy(); - SrcTy.newTy = new std::string("i64"); - SrcTy.oldTy = ULongTy; - } else if (DstTy.oldTy == BoolTy && SrcTy.oldTy != BoolTy) { - // cast ptr %x to bool was previously defined as setne ptr %x, null - // The ptrtoint semantic is to truncate, not compare so we must retain - // the original intent by replace the cast with a setne - const char* comparator = SrcTy.isPointer() ? ", null" : - (SrcTy.isFloatingPoint() ? ", 0.0" : ", 0"); - const char* compareOp = SrcTy.isFloatingPoint() ? "fcmp one " : "icmp ne "; + delete SrcTy; + SrcTy = new TypeInfo("i64", ULongTy); + } else if (DstTy->isBool()) { + // cast type %x to bool was previously defined as setne type %x, null + // The cast semantic is now to truncate, not compare so we must retain + // the original intent by replacing the cast with a setne + const char* comparator = SrcTy->isPointer() ? ", null" : + (SrcTy->isFloatingPoint() ? ", 0.0" : + (SrcTy->isBool() ? ", false" : ", 0")); + const char* compareOp = SrcTy->isFloatingPoint() ? "fcmp one " : "icmp ne "; if (isConst) { Result = "(" + Source + comparator + ")"; Result = compareOp + Result; @@ -576,33 +575,32 @@ ResolveType(DstTy); std::string Opcode(getCastOpcode(Source, SrcTy, DstTy)); if (isConst) - Result += Opcode + "( " + Source + " to " + *DstTy.newTy + ")"; + Result += Opcode + "( " + Source + " to " + DstTy->getNewTy() + ")"; else - Result += Opcode + " " + Source + " to " + *DstTy.newTy; + Result += Opcode + " " + Source + " to " + DstTy->getNewTy(); return Result; } -const char* getDivRemOpcode(const std::string& opcode, const TypeInfo& TI) { +const char* getDivRemOpcode(const std::string& opcode, TypeInfo* TI) { const char* op = opcode.c_str(); - TypeInfo Ty = TI; - ResolveType(Ty); - if (Ty.isPacked()) - Ty.oldTy = Ty.getElementType(); + const TypeInfo* Ty = ResolveType(TI); + if (Ty->isPacked()) + Ty = Ty->getElementType(); if (opcode == "div") - if (Ty.isFloatingPoint()) + if (Ty->isFloatingPoint()) op = "fdiv"; - else if (Ty.isUnsigned()) + else if (Ty->isUnsigned()) op = "udiv"; - else if (Ty.isSigned()) + else if (Ty->isSigned()) op = "sdiv"; else yyerror("Invalid type for div instruction"); else if (opcode == "rem") - if (Ty.isFloatingPoint()) + if (Ty->isFloatingPoint()) op = "frem"; - else if (Ty.isUnsigned()) + else if (Ty->isUnsigned()) op = "urem"; - else if (Ty.isSigned()) + else if (Ty->isSigned()) op = "srem"; else yyerror("Invalid type for rem instruction"); @@ -610,7 +608,7 @@ } std::string -getCompareOp(const std::string& setcc, const TypeInfo& TI) { +getCompareOp(const std::string& setcc, const TypeInfo* TI) { assert(setcc.length() == 5); char cc1 = setcc[3]; char cc2 = setcc[4]; @@ -619,20 +617,20 @@ std::string result("xcmp xxx"); result[6] = cc1; result[7] = cc2; - if (TI.isFloatingPoint()) { + if (TI->isFloatingPoint()) { result[0] = 'f'; result[5] = 'o'; if (cc1 == 'n') result[5] = 'u'; // NE maps to unordered else result[5] = 'o'; // everything else maps to ordered - } else if (TI.isIntegral() || TI.isPointer()) { + } else if (TI->isIntegral() || TI->isPointer()) { result[0] = 'i'; if ((cc1 == 'e' && cc2 == 'q') || (cc1 == 'n' && cc2 == 'e')) result.erase(5,1); - else if (TI.isSigned()) + else if (TI->isSigned()) result[5] = 's'; - else if (TI.isUnsigned() || TI.isPointer() || TI.isBool()) + else if (TI->isUnsigned() || TI->isPointer() || TI->isBool()) result[5] = 'u'; else yyerror("Invalid integral type for setcc"); @@ -640,6 +638,76 @@ return result; } +static TypeInfo* getFunctionReturnType(TypeInfo* PFTy) { + ResolveType(PFTy); + if (PFTy->isPointer()) { + TypeInfo* ElemTy = PFTy->getElementType(); + ResolveType(ElemTy); + if (ElemTy->isFunction()) + return ElemTy->getResultType()->clone(); + } else if (PFTy->isFunction()) { + return PFTy->getResultType()->clone(); + } + return PFTy->clone(); +} + +static TypeInfo* getGEPIndexedType(TypeInfo* PTy, ValueList* idxs) { + ResolveType(PTy); + assert(PTy->isPointer() && "GEP Operand is not a pointer?"); + TypeInfo* Result = PTy->getElementType(); // just skip first index + ResolveType(Result); + for (unsigned i = 1; i < idxs->size(); ++i) { + if (Result->isComposite()) { + Result = Result->getIndexedType((*idxs)[i]); + ResolveType(Result); + } else + yyerror("Invalid type for index"); + } + return Result->getPointerType(); +} + +static std::string makeUniqueName(const std::string *Name, bool isSigned) { + const char *suffix = ".u"; + if (isSigned) + suffix = ".s"; + if ((*Name)[Name->size()-1] == '"') { + std::string Result(*Name); + Result.insert(Name->size()-1, suffix); + return Result; + } + return *Name + suffix; +} + +// This function handles appending .u or .s to integer value names that +// were previously unsigned or signed, respectively. This avoids name +// collisions since the unsigned and signed type planes have collapsed +// into a single signless type plane. +static std::string getUniqueName(const std::string *Name, TypeInfo* Ty) { + // If its not a symbolic name, don't modify it, probably a constant val. + if ((*Name)[0] != '%' && (*Name)[0] != '"') + return *Name; + // If its a numeric reference, just leave it alone. + if (isdigit((*Name)[1])) + return *Name; + + // Resolve the type + ResolveType(Ty); + + // Default the result to the current name + std::string Result = *Name; + + if (Ty->isInteger()) { + // If its an integer type, make the name unique + Result = makeUniqueName(Name, Ty->isSigned()); + } else if (Ty->isPointer()) { + while (Ty->isPointer()) + Ty = Ty->getElementType(); + if (Ty->isInteger()) + Result = makeUniqueName(Name, Ty->isSigned()); + } + return Result; +} + /* Enabling traces. */ @@ -661,16 +729,17 @@ #endif #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) -#line 289 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 357 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" typedef union YYSTYPE { std::string* String; - TypeInfo Type; + TypeInfo* Type; ValueInfo Value; ConstInfo Const; ValueList* ValList; + TypeList* TypeVec; } YYSTYPE; /* Line 196 of yacc.c. */ -#line 674 "UpgradeParser.tab.c" +#line 743 "UpgradeParser.tab.c" # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_TRIVIAL 1 @@ -682,7 +751,7 @@ /* Line 219 of yacc.c. */ -#line 686 "UpgradeParser.tab.c" +#line 755 "UpgradeParser.tab.c" #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__) # define YYSIZE_T __SIZE_TYPE__ @@ -1038,37 +1107,37 @@ /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const unsigned short int yyrline[] = { - 0, 352, 352, 352, 353, 353, 357, 357, 357, 357, - 357, 357, 357, 358, 358, 358, 358, 359, 359, 359, - 360, 360, 360, 360, 360, 360, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 362, 362, 362, 362, - 362, 362, 362, 362, 362, 362, 363, 363, 363, 363, - 363, 363, 364, 364, 364, 364, 365, 365, 365, 365, - 365, 365, 365, 366, 366, 366, 366, 366, 366, 371, - 371, 371, 371, 372, 372, 372, 372, 373, 373, 374, - 374, 377, 380, 385, 385, 385, 385, 385, 385, 386, - 387, 390, 390, 390, 390, 390, 391, 392, 397, 402, - 403, 406, 407, 415, 421, 422, 425, 426, 435, 436, - 449, 449, 450, 450, 451, 455, 455, 455, 455, 455, - 455, 455, 456, 456, 456, 456, 456, 458, 462, 466, - 469, 474, 480, 488, 496, 502, 506, 512, 516, 527, - 530, 538, 539, 544, 547, 557, 563, 568, 574, 580, - 586, 591, 597, 603, 609, 615, 621, 627, 633, 639, - 645, 653, 667, 679, 684, 690, 695, 701, 706, 711, - 719, 724, 729, 739, 744, 749, 749, 759, 764, 767, - 772, 776, 780, 782, 782, 785, 797, 802, 807, 816, - 825, 834, 843, 848, 853, 858, 860, 860, 863, 868, - 875, 880, 887, 894, 899, 900, 908, 908, 909, 909, - 911, 918, 922, 926, 929, 934, 937, 940, 959, 960, - 963, 974, 975, 977, 985, 986, 987, 991, 1004, 1005, - 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1009, 1010, 1015, - 1016, 1025, 1025, 1029, 1035, 1046, 1052, 1055, 1063, 1067, - 1072, 1075, 1081, 1081, 1083, 1088, 1093, 1098, 1106, 1113, - 1119, 1139, 1144, 1150, 1155, 1163, 1180, 1187, 1195, 1199, - 1206, 1207, 1211, 1216, 1219, 1225, 1230, 1236, 1241, 1246, - 1251, 1259, 1287, 1292, 1297, 1302, 1307, 1312, 1317, 1334, - 1339, 1340, 1344, 1345, 1348, 1355, 1362, 1369, 1376, 1381, - 1388, 1395 + 0, 422, 422, 422, 423, 423, 427, 427, 427, 427, + 427, 427, 427, 428, 428, 428, 428, 429, 429, 429, + 430, 430, 430, 430, 430, 430, 431, 431, 431, 431, + 431, 431, 431, 431, 431, 431, 432, 432, 432, 432, + 432, 432, 432, 432, 432, 432, 433, 433, 433, 433, + 433, 433, 434, 434, 434, 434, 435, 435, 435, 435, + 435, 435, 435, 436, 436, 436, 436, 436, 436, 441, + 441, 441, 441, 442, 442, 442, 442, 443, 443, 444, + 444, 447, 450, 455, 455, 455, 455, 455, 455, 456, + 457, 460, 460, 460, 460, 460, 461, 462, 467, 472, + 473, 476, 477, 485, 491, 492, 495, 496, 505, 506, + 519, 519, 520, 520, 521, 525, 525, 525, 525, 525, + 525, 525, 526, 526, 526, 526, 526, 528, 531, 534, + 537, 541, 555, 562, 569, 580, 584, 595, 599, 608, + 612, 619, 620, 625, 630, 640, 646, 651, 657, 663, + 669, 674, 680, 686, 693, 699, 705, 711, 717, 723, + 729, 737, 750, 762, 767, 773, 778, 784, 789, 794, + 802, 807, 812, 822, 827, 832, 832, 842, 847, 850, + 855, 859, 863, 865, 865, 868, 878, 883, 888, 898, + 908, 918, 928, 933, 938, 943, 945, 945, 948, 953, + 960, 965, 972, 979, 984, 985, 993, 993, 994, 994, + 996, 1005, 1009, 1013, 1016, 1021, 1024, 1027, 1045, 1046, + 1049, 1060, 1061, 1063, 1072, 1073, 1074, 1078, 1091, 1092, + 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1096, 1097, 1102, + 1103, 1112, 1112, 1116, 1121, 1131, 1140, 1143, 1151, 1155, + 1160, 1163, 1169, 1169, 1171, 1176, 1181, 1186, 1195, 1203, + 1210, 1233, 1238, 1244, 1250, 1258, 1276, 1284, 1293, 1297, + 1304, 1305, 1309, 1314, 1317, 1326, 1334, 1343, 1351, 1359, + 1364, 1373, 1401, 1407, 1413, 1420, 1426, 1432, 1438, 1456, + 1461, 1462, 1466, 1467, 1470, 1478, 1487, 1495, 1504, 1510, + 1519, 1528 }; #endif @@ -2417,26 +2486,26 @@ switch (yyn) { case 81: -#line 377 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 447 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = (yyvsp[-1].String); ;} break; case 82: -#line 380 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 450 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(""); ;} break; case 90: -#line 387 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 457 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(""); ;} break; case 97: -#line 392 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 462 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-1].String) += *(yyvsp[0].String); delete (yyvsp[0].String); @@ -2445,27 +2514,27 @@ break; case 98: -#line 397 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 467 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(""); ;} break; case 99: -#line 402 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 472 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 100: -#line 403 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 473 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-1].String) += " " + *(yyvsp[0].String); delete (yyvsp[0].String); (yyval.String) = (yyvsp[-1].String); ;} break; case 101: -#line 406 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 476 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 102: -#line 407 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 477 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyvsp[-1].String)->insert(0, ", "); *(yyvsp[-1].String) += " " + *(yyvsp[0].String); @@ -2475,7 +2544,7 @@ break; case 103: -#line 415 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 485 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-1].String) += " " + *(yyvsp[0].String); delete (yyvsp[0].String); @@ -2484,17 +2553,17 @@ break; case 104: -#line 421 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 491 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 106: -#line 425 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 495 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 107: -#line 426 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 496 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyvsp[-1].String)->insert(0, ", "); if (!(yyvsp[0].String)->empty()) @@ -2505,7 +2574,7 @@ break; case 109: -#line 436 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 506 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-1].String) += " " + *(yyvsp[0].String); delete (yyvsp[0].String); @@ -2514,334 +2583,347 @@ break; case 127: -#line 458 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 528 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - (yyval.Type).newTy = (yyvsp[0].String); - (yyval.Type).oldTy = OpaqueTy; + (yyval.Type) = new TypeInfo((yyvsp[0].String), OpaqueTy); ;} break; case 128: -#line 462 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 531 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - (yyval.Type).newTy = (yyvsp[0].String); - (yyval.Type).oldTy = UnresolvedTy; + (yyval.Type) = new TypeInfo((yyvsp[0].String), UnresolvedTy); ;} break; case 129: -#line 466 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 534 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Type) = (yyvsp[0].Type); ;} break; case 130: -#line 469 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 537 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Type UpReference (yyvsp[0].String)->insert(0, "\\"); - (yyval.Type).newTy = (yyvsp[0].String); - (yyval.Type).oldTy = NumericTy; + (yyval.Type) = new TypeInfo((yyvsp[0].String), NumericTy); ;} break; case 131: -#line 474 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 541 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Function derived type? - *(yyvsp[-3].Type).newTy += "( " + *(yyvsp[-1].String) + " )"; - delete (yyvsp[-1].String); - (yyval.Type).newTy = (yyvsp[-3].Type).newTy; - (yyval.Type).oldTy = FunctionTy; + std::string newTy( (yyvsp[-3].Type)->getNewTy() + "("); + for (unsigned i = 0; i < (yyvsp[-1].TypeVec)->size(); ++i) { + if (i != 0) + newTy += ", "; + if ((*(yyvsp[-1].TypeVec))[i]->isVoid()) + newTy += "..."; + else + newTy += (*(yyvsp[-1].TypeVec))[i]->getNewTy(); + } + newTy += ")"; + (yyval.Type) = new TypeInfo(new std::string(newTy), (yyvsp[-3].Type), (yyvsp[-1].TypeVec)); + EnumeratedTypes.push_back(*(yyval.Type)); ;} break; case 132: -#line 480 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 555 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Sized array type? (yyvsp[-3].String)->insert(0,"[ "); - *(yyvsp[-3].String) += " x " + *(yyvsp[-1].Type).newTy + " ]"; - delete (yyvsp[-1].Type).newTy; - (yyval.Type).newTy = (yyvsp[-3].String); - (yyval.Type).oldTy = ArrayTy; - (yyval.Type).elemTy = (yyvsp[-1].Type).oldTy; + *(yyvsp[-3].String) += " x " + (yyvsp[-1].Type)->getNewTy() + " ]"; + uint64_t elems = atoi((yyvsp[-3].String)->c_str()); + (yyval.Type) = new TypeInfo((yyvsp[-3].String), ArrayTy, (yyvsp[-1].Type), elems); + EnumeratedTypes.push_back(*(yyval.Type)); ;} break; case 133: -#line 488 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 562 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Packed array type? (yyvsp[-3].String)->insert(0,"< "); - *(yyvsp[-3].String) += " x " + *(yyvsp[-1].Type).newTy + " >"; - delete (yyvsp[-1].Type).newTy; - (yyval.Type).newTy = (yyvsp[-3].String); - (yyval.Type).oldTy = PackedTy; - (yyval.Type).elemTy = (yyvsp[-1].Type).oldTy; + *(yyvsp[-3].String) += " x " + (yyvsp[-1].Type)->getNewTy() + " >"; + uint64_t elems = atoi((yyvsp[-3].String)->c_str()); + (yyval.Type) = new TypeInfo((yyvsp[-3].String), PackedTy, (yyvsp[-1].Type), elems); + EnumeratedTypes.push_back(*(yyval.Type)); ;} break; case 134: -#line 496 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 569 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Structure type? - (yyvsp[-1].String)->insert(0, "{ "); - *(yyvsp[-1].String) += " }"; - (yyval.Type).newTy = (yyvsp[-1].String); - (yyval.Type).oldTy = StructTy; + std::string newTy("{"); + for (unsigned i = 0; i < (yyvsp[-1].TypeVec)->size(); ++i) { + if (i != 0) + newTy += ", "; + newTy += (*(yyvsp[-1].TypeVec))[i]->getNewTy(); + } + newTy += "}"; + (yyval.Type) = new TypeInfo(new std::string(newTy), StructTy, (yyvsp[-1].TypeVec)); + EnumeratedTypes.push_back(*(yyval.Type)); ;} break; case 135: -#line 502 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 580 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Empty structure type? - (yyval.Type).newTy = new std::string("{}"); - (yyval.Type).oldTy = StructTy; + (yyval.Type) = new TypeInfo(new std::string("{}"), StructTy, new TypeList()); + EnumeratedTypes.push_back(*(yyval.Type)); ;} break; case 136: -#line 506 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 584 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Packed Structure type? - (yyvsp[-2].String)->insert(0, "<{ "); - *(yyvsp[-2].String) += " }>"; - (yyval.Type).newTy = (yyvsp[-2].String); - (yyval.Type).oldTy = StructTy; + std::string newTy("<{"); + for (unsigned i = 0; i < (yyvsp[-2].TypeVec)->size(); ++i) { + if (i != 0) + newTy += ", "; + newTy += (*(yyvsp[-2].TypeVec))[i]->getNewTy(); + } + newTy += "}>"; + (yyval.Type) = new TypeInfo(new std::string(newTy), PackedStructTy, (yyvsp[-2].TypeVec)); + EnumeratedTypes.push_back(*(yyval.Type)); ;} break; case 137: -#line 512 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 595 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Empty packed structure type? - (yyval.Type).newTy = new std::string("<{}>"); - (yyval.Type).oldTy = StructTy; + (yyval.Type) = new TypeInfo(new std::string("<{}>"), PackedStructTy, new TypeList()); + EnumeratedTypes.push_back(*(yyval.Type)); ;} break; case 138: -#line 516 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 599 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Pointer type? - *(yyvsp[-1].Type).newTy += '*'; - (yyval.Type).elemTy = (yyvsp[-1].Type).oldTy; - (yyvsp[-1].Type).oldTy = PointerTy; - (yyval.Type) = (yyvsp[-1].Type); + (yyval.Type) = (yyvsp[-1].Type)->getPointerType(); + EnumeratedTypes.push_back(*(yyval.Type)); ;} break; case 139: -#line 527 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 608 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - (yyval.String) = (yyvsp[0].Type).newTy; + (yyval.TypeVec) = new TypeList(); + (yyval.TypeVec)->push_back((yyvsp[0].Type)); ;} break; case 140: -#line 530 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 612 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - *(yyvsp[-2].String) += ", " + *(yyvsp[0].Type).newTy; - delete (yyvsp[0].Type).newTy; - (yyval.String) = (yyvsp[-2].String); + (yyval.TypeVec) = (yyvsp[-2].TypeVec); + (yyval.TypeVec)->push_back((yyvsp[0].Type)); ;} break; case 142: -#line 539 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 620 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - *(yyvsp[-2].String) += ", ..."; + (yyval.TypeVec) = (yyvsp[-2].TypeVec); + (yyval.TypeVec)->push_back(new TypeInfo("void",VoidTy)); delete (yyvsp[0].String); - (yyval.String) = (yyvsp[-2].String); ;} break; case 143: -#line 544 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 625 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - (yyval.String) = (yyvsp[0].String); + (yyval.TypeVec) = new TypeList(); + (yyval.TypeVec)->push_back(new TypeInfo("void",VoidTy)); + delete (yyvsp[0].String); ;} break; case 144: -#line 547 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 630 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - (yyval.String) = new std::string(); + (yyval.TypeVec) = new TypeList(); ;} break; case 145: -#line 557 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 640 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Nonempty unsized arr (yyval.Const).type = (yyvsp[-3].Type); - (yyval.Const).cnst = new std::string(*(yyvsp[-3].Type).newTy); + (yyval.Const).cnst = new std::string((yyvsp[-3].Type)->getNewTy()); *(yyval.Const).cnst += " [ " + *(yyvsp[-1].String) + " ]"; delete (yyvsp[-1].String); ;} break; case 146: -#line 563 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 646 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Const).type = (yyvsp[-2].Type); - (yyval.Const).cnst = new std::string(*(yyvsp[-2].Type).newTy); + (yyval.Const).cnst = new std::string((yyvsp[-2].Type)->getNewTy()); *(yyval.Const).cnst += "[ ]"; ;} break; case 147: -#line 568 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 651 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Const).type = (yyvsp[-2].Type); - (yyval.Const).cnst = new std::string(*(yyvsp[-2].Type).newTy); + (yyval.Const).cnst = new std::string((yyvsp[-2].Type)->getNewTy()); *(yyval.Const).cnst += " c" + *(yyvsp[0].String); delete (yyvsp[0].String); ;} break; case 148: -#line 574 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 657 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Nonempty unsized arr (yyval.Const).type = (yyvsp[-3].Type); - (yyval.Const).cnst = new std::string(*(yyvsp[-3].Type).newTy); + (yyval.Const).cnst = new std::string((yyvsp[-3].Type)->getNewTy()); *(yyval.Const).cnst += " < " + *(yyvsp[-1].String) + " >"; delete (yyvsp[-1].String); ;} break; case 149: -#line 580 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 663 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Const).type = (yyvsp[-3].Type); - (yyval.Const).cnst = new std::string(*(yyvsp[-3].Type).newTy); + (yyval.Const).cnst = new std::string((yyvsp[-3].Type)->getNewTy()); *(yyval.Const).cnst += " { " + *(yyvsp[-1].String) + " }"; delete (yyvsp[-1].String); ;} break; case 150: -#line 586 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 669 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Const).type = (yyvsp[-2].Type); - (yyval.Const).cnst = new std::string(*(yyvsp[-2].Type).newTy); + (yyval.Const).cnst = new std::string((yyvsp[-2].Type)->getNewTy()); *(yyval.Const).cnst += " {}"; ;} break; case 151: -#line 591 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 674 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Const).type = (yyvsp[-1].Type); - (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy); + (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy()); *(yyval.Const).cnst += " " + *(yyvsp[0].String); delete (yyvsp[0].String); ;} break; case 152: -#line 597 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 680 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Const).type = (yyvsp[-1].Type); - (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy); + (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy()); *(yyval.Const).cnst += " " + *(yyvsp[0].String); delete (yyvsp[0].String); ;} break; case 153: -#line 603 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 686 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { + std::string Name = getUniqueName((yyvsp[0].String),(yyvsp[-1].Type)); (yyval.Const).type = (yyvsp[-1].Type); - (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy); - *(yyval.Const).cnst += " " + *(yyvsp[0].String); + (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy()); + *(yyval.Const).cnst += " " + Name; delete (yyvsp[0].String); ;} break; case 154: -#line 609 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 693 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Const).type = (yyvsp[-1].Type); - (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy); + (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy()); *(yyval.Const).cnst += " " + *(yyvsp[0].String); delete (yyvsp[0].String); ;} break; case 155: -#line 615 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 699 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Const).type = (yyvsp[-1].Type); - (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy); + (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy()); *(yyval.Const).cnst += " " + *(yyvsp[0].String); delete (yyvsp[0].String); ;} break; case 156: -#line 621 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 705 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // integral constants (yyval.Const).type = (yyvsp[-1].Type); - (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy); + (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy()); *(yyval.Const).cnst += " " + *(yyvsp[0].String); delete (yyvsp[0].String); ;} break; case 157: -#line 627 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 711 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // integral constants (yyval.Const).type = (yyvsp[-1].Type); - (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy); + (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy()); *(yyval.Const).cnst += " " + *(yyvsp[0].String); delete (yyvsp[0].String); ;} break; case 158: -#line 633 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 717 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Boolean constants (yyval.Const).type = (yyvsp[-1].Type); - (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy); + (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy()); *(yyval.Const).cnst += " " + *(yyvsp[0].String); delete (yyvsp[0].String); ;} break; case 159: -#line 639 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 723 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Boolean constants (yyval.Const).type = (yyvsp[-1].Type); - (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy); + (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy()); *(yyval.Const).cnst += " " + *(yyvsp[0].String); delete (yyvsp[0].String); ;} break; case 160: -#line 645 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 729 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Float & Double constants (yyval.Const).type = (yyvsp[-1].Type); - (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy); + (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy()); *(yyval.Const).cnst += " " + *(yyvsp[0].String); delete (yyvsp[0].String); ;} break; case 161: -#line 653 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 737 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { std::string source = *(yyvsp[-3].Const).cnst; - TypeInfo DstTy = (yyvsp[-1].Type); - ResolveType(DstTy); + TypeInfo* DstTy = ResolveType((yyvsp[-1].Type)); if (*(yyvsp[-5].String) == "cast") { // Call getCastUpgrade to upgrade the old cast - (yyval.String) = new std::string(getCastUpgrade(source, (yyvsp[-3].Const).type, (yyvsp[-1].Type), true)); + (yyval.String) = new std::string(getCastUpgrade(source, (yyvsp[-3].Const).type, DstTy, true)); } else { // Nothing to upgrade, just create the cast constant expr (yyval.String) = new std::string(*(yyvsp[-5].String)); - *(yyval.String) += "( " + source + " to " + *(yyvsp[-1].Type).newTy + ")"; + *(yyval.String) += "( " + source + " to " + (yyvsp[-1].Type)->getNewTy() + ")"; } - delete (yyvsp[-5].String); (yyvsp[-3].Const).destroy(); delete (yyvsp[-2].String); (yyvsp[-1].Type).destroy(); + delete (yyvsp[-5].String); (yyvsp[-3].Const).destroy(); delete (yyvsp[-2].String); delete (yyvsp[-1].Type); ;} break; case 162: -#line 667 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 750 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-4].String) += "(" + *(yyvsp[-2].Const).cnst; for (unsigned i = 0; i < (yyvsp[-1].ValList)->size(); ++i) { @@ -2857,7 +2939,7 @@ break; case 163: -#line 679 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 762 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-7].String) += "(" + *(yyvsp[-5].Const).cnst + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")"; (yyvsp[-5].Const).destroy(); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy(); @@ -2866,7 +2948,7 @@ break; case 164: -#line 684 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 767 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { const char* op = getDivRemOpcode(*(yyvsp[-5].String), (yyvsp[-3].Const).type); (yyval.String) = new std::string(op); @@ -2876,7 +2958,7 @@ break; case 165: -#line 690 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 773 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-5].String) += "(" + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")"; (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy(); @@ -2885,7 +2967,7 @@ break; case 166: -#line 695 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 778 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-5].String) = getCompareOp(*(yyvsp[-5].String), (yyvsp[-3].Const).type); *(yyvsp[-5].String) += "(" + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")"; @@ -2895,7 +2977,7 @@ break; case 167: -#line 701 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 784 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-6].String) += "(" + *(yyvsp[-5].String) + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")"; delete (yyvsp[-5].String); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy(); @@ -2904,7 +2986,7 @@ break; case 168: -#line 706 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 789 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-6].String) += "(" + *(yyvsp[-5].String) + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")"; delete (yyvsp[-5].String); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy(); @@ -2913,11 +2995,11 @@ break; case 169: -#line 711 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 794 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { const char* shiftop = (yyvsp[-5].String)->c_str(); if (*(yyvsp[-5].String) == "shr") - shiftop = ((yyvsp[-3].Const).type.isUnsigned()) ? "lshr" : "ashr"; + shiftop = ((yyvsp[-3].Const).type->isUnsigned()) ? "lshr" : "ashr"; (yyval.String) = new std::string(shiftop); *(yyval.String) += "(" + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")"; delete (yyvsp[-5].String); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy(); @@ -2925,7 +3007,7 @@ break; case 170: -#line 719 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 802 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-5].String) += "(" + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")"; (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy(); @@ -2934,7 +3016,7 @@ break; case 171: -#line 724 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 807 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-7].String) += "(" + *(yyvsp[-5].Const).cnst + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")"; (yyvsp[-5].Const).destroy(); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy(); @@ -2943,7 +3025,7 @@ break; case 172: -#line 729 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 812 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-7].String) += "(" + *(yyvsp[-5].Const).cnst + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")"; (yyvsp[-5].Const).destroy(); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy(); @@ -2952,7 +3034,7 @@ break; case 173: -#line 739 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 822 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-2].String) += ", " + *(yyvsp[0].Const).cnst; (yyvsp[0].Const).destroy(); @@ -2961,25 +3043,25 @@ break; case 174: -#line 744 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 827 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(*(yyvsp[0].Const).cnst); (yyvsp[0].Const).destroy(); ;} break; case 177: -#line 759 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 842 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { ;} break; case 178: -#line 764 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 847 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = 0; ;} break; case 179: -#line 767 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 850 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *O << *(yyvsp[0].String) << '\n'; delete (yyvsp[0].String); @@ -2988,7 +3070,7 @@ break; case 180: -#line 772 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 855 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *O << "module asm " << ' ' << *(yyvsp[0].String) << '\n'; (yyval.String) = 0; @@ -2996,7 +3078,7 @@ break; case 181: -#line 776 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 859 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *O << "implementation\n"; (yyval.String) = 0; @@ -3004,33 +3086,31 @@ break; case 182: -#line 780 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 863 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = 0; ;} break; case 184: -#line 782 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 865 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = (yyvsp[0].String); *(yyval.String) = "external"; ;} break; case 185: -#line 785 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 868 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - EnumeratedTypes.push_back((yyvsp[0].Type)); + EnumeratedTypes.push_back(*(yyvsp[0].Type)); if (!(yyvsp[-2].String)->empty()) { - NamedTypes[*(yyvsp[-2].String)].newTy = new std::string(*(yyvsp[0].Type).newTy); - NamedTypes[*(yyvsp[-2].String)].oldTy = (yyvsp[0].Type).oldTy; - NamedTypes[*(yyvsp[-2].String)].elemTy = (yyvsp[0].Type).elemTy; + NamedTypes[*(yyvsp[-2].String)] = *(yyvsp[0].Type); *O << *(yyvsp[-2].String) << " = "; } - *O << "type " << *(yyvsp[0].Type).newTy << '\n'; - delete (yyvsp[-2].String); delete (yyvsp[-1].String); (yyvsp[0].Type).destroy(); + *O << "type " << (yyvsp[0].Type)->getNewTy() << '\n'; + delete (yyvsp[-2].String); delete (yyvsp[-1].String); (yyval.String) = 0; ;} break; case 186: -#line 797 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 878 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Function prototypes can be in const pool *O << *(yyvsp[0].String) << '\n'; delete (yyvsp[0].String); @@ -3039,7 +3119,7 @@ break; case 187: -#line 802 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 883 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Asm blocks can be in the const pool *O << *(yyvsp[-2].String) << ' ' << *(yyvsp[-1].String) << ' ' << *(yyvsp[0].String) << '\n'; delete (yyvsp[-2].String); delete (yyvsp[-1].String); delete (yyvsp[0].String); @@ -3048,59 +3128,63 @@ break; case 188: -#line 807 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 888 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-4].String)->empty()) { - *O << *(yyvsp[-4].String) << " = "; - Globals[*(yyvsp[-4].String)] = (yyvsp[-1].Const).type.clone(); + std::string Name = getUniqueName((yyvsp[-4].String),(yyvsp[-1].Const).type); + *O << Name << " = "; + Globals[Name] = *(yyvsp[-1].Const).type; } *O << *(yyvsp[-3].String) << ' ' << *(yyvsp[-2].String) << ' ' << *(yyvsp[-1].Const).cnst << ' ' << *(yyvsp[0].String) << '\n'; - delete (yyvsp[-4].String); delete (yyvsp[-3].String); delete (yyvsp[-2].String); (yyvsp[-1].Const).destroy(); delete (yyvsp[0].String); + delete (yyvsp[-4].String); delete (yyvsp[-3].String); delete (yyvsp[-2].String); delete (yyvsp[0].String); (yyval.String) = 0; ;} break; case 189: -#line 816 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 898 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-4].String)->empty()) { - *O << *(yyvsp[-4].String) << " = "; - Globals[*(yyvsp[-4].String)] = (yyvsp[-1].Type).clone(); + std::string Name = getUniqueName((yyvsp[-4].String),(yyvsp[-1].Type)); + *O << Name << " = "; + Globals[Name] = *(yyvsp[-1].Type); } - *O << *(yyvsp[-3].String) << ' ' << *(yyvsp[-2].String) << ' ' << *(yyvsp[-1].Type).newTy << ' ' << *(yyvsp[0].String) << '\n'; - delete (yyvsp[-4].String); delete (yyvsp[-3].String); delete (yyvsp[-2].String); (yyvsp[-1].Type).destroy(); delete (yyvsp[0].String); + *O << *(yyvsp[-3].String) << ' ' << *(yyvsp[-2].String) << ' ' << (yyvsp[-1].Type)->getNewTy() << ' ' << *(yyvsp[0].String) << '\n'; + delete (yyvsp[-4].String); delete (yyvsp[-3].String); delete (yyvsp[-2].String); delete (yyvsp[0].String); (yyval.String) = 0; ;} break; case 190: -#line 825 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 908 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-4].String)->empty()) { - *O << *(yyvsp[-4].String) << " = "; - Globals[*(yyvsp[-4].String)] = (yyvsp[-1].Type).clone(); + std::string Name = getUniqueName((yyvsp[-4].String),(yyvsp[-1].Type)); + *O << Name << " = "; + Globals[Name] = *(yyvsp[-1].Type); } - *O << *(yyvsp[-3].String) << ' ' << *(yyvsp[-2].String) << ' ' << *(yyvsp[-1].Type).newTy << ' ' << *(yyvsp[0].String) << '\n'; - delete (yyvsp[-4].String); delete (yyvsp[-3].String); delete (yyvsp[-2].String); (yyvsp[-1].Type).destroy(); delete (yyvsp[0].String); + *O << *(yyvsp[-3].String) << ' ' << *(yyvsp[-2].String) << ' ' << (yyvsp[-1].Type)->getNewTy() << ' ' << *(yyvsp[0].String) << '\n'; + delete (yyvsp[-4].String); delete (yyvsp[-3].String); delete (yyvsp[-2].String); delete (yyvsp[0].String); (yyval.String) = 0; ;} break; case 191: -#line 834 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 918 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-4].String)->empty()) { - *O << *(yyvsp[-4].String) << " = "; - Globals[*(yyvsp[-4].String)] = (yyvsp[-1].Type).clone(); + std::string Name = getUniqueName((yyvsp[-4].String),(yyvsp[-1].Type)); + *O << Name << " = "; + Globals[Name] = *(yyvsp[-1].Type); } - *O << *(yyvsp[-3].String) << ' ' << *(yyvsp[-2].String) << ' ' << *(yyvsp[-1].Type).newTy << ' ' << *(yyvsp[0].String) << '\n'; - delete (yyvsp[-4].String); delete (yyvsp[-3].String); delete (yyvsp[-2].String); (yyvsp[-1].Type).destroy(); delete (yyvsp[0].String); + *O << *(yyvsp[-3].String) << ' ' << *(yyvsp[-2].String) << ' ' << (yyvsp[-1].Type)->getNewTy() << ' ' << *(yyvsp[0].String) << '\n'; + delete (yyvsp[-4].String); delete (yyvsp[-3].String); delete (yyvsp[-2].String); delete (yyvsp[0].String); (yyval.String) = 0; ;} break; case 192: -#line 843 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 928 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *O << *(yyvsp[-1].String) << ' ' << *(yyvsp[0].String) << '\n'; delete (yyvsp[-1].String); delete (yyvsp[0].String); @@ -3109,7 +3193,7 @@ break; case 193: -#line 848 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 933 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *O << *(yyvsp[-2].String) << " = " << *(yyvsp[0].String) << '\n'; delete (yyvsp[-2].String); delete (yyvsp[0].String); @@ -3118,14 +3202,14 @@ break; case 194: -#line 853 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 938 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = 0; ;} break; case 198: -#line 863 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 948 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-2].String) += " = " + *(yyvsp[0].String); delete (yyvsp[0].String); @@ -3134,7 +3218,7 @@ break; case 199: -#line 868 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 953 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-2].String) += " = " + *(yyvsp[0].String); if (*(yyvsp[0].String) == "64") @@ -3145,7 +3229,7 @@ break; case 200: -#line 875 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 960 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-2].String) += " = " + *(yyvsp[0].String); delete (yyvsp[0].String); @@ -3154,7 +3238,7 @@ break; case 201: -#line 880 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 965 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-2].String) += " = " + *(yyvsp[0].String); delete (yyvsp[0].String); @@ -3163,7 +3247,7 @@ break; case 202: -#line 887 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 972 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyvsp[-1].String)->insert(0, "[ "); *(yyvsp[-1].String) += " ]"; @@ -3172,7 +3256,7 @@ break; case 203: -#line 894 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 979 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-2].String) += ", " + *(yyvsp[0].String); delete (yyvsp[0].String); @@ -3181,29 +3265,31 @@ break; case 205: -#line 900 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 985 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 209: -#line 909 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 994 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 210: -#line 911 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 996 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - (yyval.String) = (yyvsp[-1].Type).newTy; - if (!(yyvsp[0].String)->empty()) - *(yyval.String) += " " + *(yyvsp[0].String); + (yyval.String) = new std::string((yyvsp[-1].Type)->getNewTy()); + if (!(yyvsp[0].String)->empty()) { + std::string Name = getUniqueName((yyvsp[0].String), (yyvsp[-1].Type)); + *(yyval.String) += " " + Name; + } delete (yyvsp[0].String); ;} break; case 211: -#line 918 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1005 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-2].String) += ", " + *(yyvsp[0].String); delete (yyvsp[0].String); @@ -3211,21 +3297,21 @@ break; case 212: -#line 922 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1009 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = (yyvsp[0].String); ;} break; case 213: -#line 926 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1013 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = (yyvsp[0].String); ;} break; case 214: -#line 929 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1016 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-2].String) += ", ..."; (yyval.String) = (yyvsp[-2].String); @@ -3234,31 +3320,30 @@ break; case 215: -#line 934 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1021 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = (yyvsp[0].String); ;} break; case 216: -#line 937 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1024 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 217: -#line 940 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1027 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-7].String)->empty()) { *(yyvsp[-7].String) += " "; } - *(yyvsp[-7].String) += *(yyvsp[-6].Type).newTy + " " + *(yyvsp[-5].String) + "(" + *(yyvsp[-3].String) + ")"; + *(yyvsp[-7].String) += (yyvsp[-6].Type)->getNewTy() + " " + *(yyvsp[-5].String) + "(" + *(yyvsp[-3].String) + ")"; if (!(yyvsp[-1].String)->empty()) { *(yyvsp[-7].String) += " " + *(yyvsp[-1].String); } if (!(yyvsp[0].String)->empty()) { *(yyvsp[-7].String) += " " + *(yyvsp[0].String); } - (yyvsp[-6].Type).destroy(); delete (yyvsp[-5].String); delete (yyvsp[-3].String); delete (yyvsp[-1].String); @@ -3268,17 +3353,17 @@ break; case 218: -#line 959 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1045 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string("{"); delete (yyvsp[0].String); ;} break; case 219: -#line 960 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1046 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string ("{"); ;} break; case 220: -#line 963 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1049 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *O << "define "; if (!(yyvsp[-2].String)->empty()) { @@ -3291,32 +3376,33 @@ break; case 221: -#line 974 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1060 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string("}"); delete (yyvsp[0].String); ;} break; case 222: -#line 975 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1061 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string("}"); ;} break; case 223: -#line 977 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1063 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { if ((yyvsp[-1].String)) *O << *(yyvsp[-1].String); *O << *(yyvsp[0].String) << "\n\n"; + delete (yyvsp[-2].String); delete (yyvsp[-1].String); delete (yyvsp[0].String); (yyval.String) = 0; ;} break; case 224: -#line 985 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1072 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 227: -#line 991 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1078 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-1].String)->empty()) *(yyvsp[-2].String) += " " + *(yyvsp[-1].String); @@ -3328,12 +3414,12 @@ break; case 228: -#line 1004 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1091 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 238: -#line 1010 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1097 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyvsp[-1].String)->insert(0, "<"); *(yyvsp[-1].String) += ">"; @@ -3342,7 +3428,7 @@ break; case 240: -#line 1016 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1103 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-3].String)->empty()) { *(yyvsp[-4].String) += " " + *(yyvsp[-3].String); @@ -3354,57 +3440,58 @@ break; case 243: -#line 1029 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1116 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Value).val = (yyvsp[0].String); (yyval.Value).constant = false; - (yyval.Value).type.newTy = 0; - (yyval.Value).type.oldTy = UnresolvedTy; + (yyval.Value).type = new TypeInfo(); ;} break; case 244: -#line 1035 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1121 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Value).val = (yyvsp[0].String); (yyval.Value).constant = true; - (yyval.Value).type.newTy = 0; - (yyval.Value).type.oldTy = UnresolvedTy; + (yyval.Value).type = new TypeInfo(); ;} break; case 245: -#line 1046 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1131 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { + std::string Name = getUniqueName((yyvsp[0].Value).val, (yyvsp[-1].Type)); (yyval.Value) = (yyvsp[0].Value); + delete (yyval.Value).val; + delete (yyval.Value).type; + (yyval.Value).val = new std::string((yyvsp[-1].Type)->getNewTy() + " " + Name); (yyval.Value).type = (yyvsp[-1].Type); - (yyval.Value).val->insert(0, *(yyvsp[-1].Type).newTy + " "); ;} break; case 246: -#line 1052 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1140 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = 0; ;} break; case 247: -#line 1055 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1143 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Do not allow functions with 0 basic blocks (yyval.String) = 0; ;} break; case 248: -#line 1063 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1151 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = 0; ;} break; case 249: -#line 1067 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1155 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *O << " " << *(yyvsp[0].String) << '\n'; delete (yyvsp[0].String); @@ -3413,14 +3500,14 @@ break; case 250: -#line 1072 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1160 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = 0; ;} break; case 251: -#line 1075 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1163 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *O << *(yyvsp[0].String) << '\n'; delete (yyvsp[0].String); @@ -3429,12 +3516,12 @@ break; case 253: -#line 1081 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1169 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = (yyvsp[0].String); *(yyval.String) = "unwind"; ;} break; case 254: -#line 1083 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1171 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Return with a result... *O << " " << *(yyvsp[-1].String) << ' ' << *(yyvsp[0].Value).val << '\n'; delete (yyvsp[-1].String); (yyvsp[0].Value).destroy(); @@ -3443,63 +3530,69 @@ break; case 255: -#line 1088 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1176 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Return with no result... - *O << " " << *(yyvsp[-1].String) << ' ' << *(yyvsp[0].Type).newTy << '\n'; - delete (yyvsp[-1].String); (yyvsp[0].Type).destroy(); + *O << " " << *(yyvsp[-1].String) << ' ' << (yyvsp[0].Type)->getNewTy() << '\n'; + delete (yyvsp[-1].String); delete (yyvsp[0].Type); (yyval.String) = 0; ;} break; case 256: -#line 1093 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1181 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Unconditional Branch... - *O << " " << *(yyvsp[-2].String) << ' ' << *(yyvsp[-1].Type).newTy << ' ' << *(yyvsp[0].Value).val << '\n'; - delete (yyvsp[-2].String); (yyvsp[-1].Type).destroy(); (yyvsp[0].Value).destroy(); + *O << " " << *(yyvsp[-2].String) << ' ' << (yyvsp[-1].Type)->getNewTy() << ' ' << *(yyvsp[0].Value).val << '\n'; + delete (yyvsp[-2].String); delete (yyvsp[-1].Type); (yyvsp[0].Value).destroy(); (yyval.String) = 0; ;} break; case 257: -#line 1098 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1186 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - *O << " " << *(yyvsp[-8].String) << ' ' << *(yyvsp[-7].Type).newTy << ' ' << *(yyvsp[-6].Value).val << ", " - << *(yyvsp[-4].Type).newTy << ' ' << *(yyvsp[-3].Value).val << ", " << *(yyvsp[-1].Type).newTy << ' ' + std::string Name = getUniqueName((yyvsp[-6].Value).val, (yyvsp[-7].Type)); + *O << " " << *(yyvsp[-8].String) << ' ' << (yyvsp[-7].Type)->getNewTy() << ' ' << Name << ", " + << (yyvsp[-4].Type)->getNewTy() << ' ' << *(yyvsp[-3].Value).val << ", " << (yyvsp[-1].Type)->getNewTy() << ' ' << *(yyvsp[0].Value).val << '\n'; - delete (yyvsp[-8].String); (yyvsp[-7].Type).destroy(); (yyvsp[-6].Value).destroy(); (yyvsp[-4].Type).destroy(); (yyvsp[-3].Value).destroy(); - (yyvsp[-1].Type).destroy(); (yyvsp[0].Value).destroy(); + delete (yyvsp[-8].String); delete (yyvsp[-7].Type); (yyvsp[-6].Value).destroy(); delete (yyvsp[-4].Type); (yyvsp[-3].Value).destroy(); + delete (yyvsp[-1].Type); (yyvsp[0].Value).destroy(); (yyval.String) = 0; ;} break; case 258: -#line 1106 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1195 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - *O << " " << *(yyvsp[-8].String) << ' ' << *(yyvsp[-7].Type).newTy << ' ' << *(yyvsp[-6].Value).val << ", " - << *(yyvsp[-4].Type).newTy << ' ' << *(yyvsp[-3].Value).val << " [" << *(yyvsp[-1].String) << " ]\n"; - delete (yyvsp[-8].String); (yyvsp[-7].Type).destroy(); (yyvsp[-6].Value).destroy(); (yyvsp[-4].Type).destroy(); (yyvsp[-3].Value).destroy(); + std::string Name = getUniqueName((yyvsp[-6].Value).val, (yyvsp[-7].Type)); + *O << " " << *(yyvsp[-8].String) << ' ' << (yyvsp[-7].Type)->getNewTy() << ' ' << Name << ", " + << (yyvsp[-4].Type)->getNewTy() << ' ' << *(yyvsp[-3].Value).val << " [" << *(yyvsp[-1].String) << " ]\n"; + delete (yyvsp[-8].String); delete (yyvsp[-7].Type); (yyvsp[-6].Value).destroy(); delete (yyvsp[-4].Type); (yyvsp[-3].Value).destroy(); delete (yyvsp[-1].String); (yyval.String) = 0; ;} break; case 259: -#line 1113 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1203 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - *O << " " << *(yyvsp[-7].String) << ' ' << *(yyvsp[-6].Type).newTy << ' ' << *(yyvsp[-5].Value).val << ", " - << *(yyvsp[-3].Type).newTy << ' ' << *(yyvsp[-2].Value).val << "[]\n"; - delete (yyvsp[-7].String); (yyvsp[-6].Type).destroy(); (yyvsp[-5].Value).destroy(); (yyvsp[-3].Type).destroy(); (yyvsp[-2].Value).destroy(); + std::string Name = getUniqueName((yyvsp[-5].Value).val, (yyvsp[-6].Type)); + *O << " " << *(yyvsp[-7].String) << ' ' << (yyvsp[-6].Type)->getNewTy() << ' ' << Name << ", " + << (yyvsp[-3].Type)->getNewTy() << ' ' << *(yyvsp[-2].Value).val << "[]\n"; + delete (yyvsp[-7].String); delete (yyvsp[-6].Type); (yyvsp[-5].Value).destroy(); delete (yyvsp[-3].Type); (yyvsp[-2].Value).destroy(); (yyval.String) = 0; ;} break; case 260: -#line 1120 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1211 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { + TypeInfo* ResTy = getFunctionReturnType((yyvsp[-10].Type)); *O << " "; - if (!(yyvsp[-13].String)->empty()) - *O << *(yyvsp[-13].String) << " = "; - *O << *(yyvsp[-12].String) << ' ' << *(yyvsp[-11].String) << ' ' << *(yyvsp[-10].Type).newTy << ' ' << *(yyvsp[-9].Value).val << " ("; + if (!(yyvsp[-13].String)->empty()) { + std::string Name = getUniqueName((yyvsp[-13].String), ResTy); + *O << Name << " = "; + } + *O << *(yyvsp[-12].String) << ' ' << *(yyvsp[-11].String) << ' ' << (yyvsp[-10].Type)->getNewTy() << ' ' << *(yyvsp[-9].Value).val << " ("; for (unsigned i = 0; i < (yyvsp[-7].ValList)->size(); ++i) { ValueInfo& VI = (*(yyvsp[-7].ValList))[i]; *O << *VI.val; @@ -3507,17 +3600,17 @@ *O << ", "; VI.destroy(); } - *O << ") " << *(yyvsp[-5].String) << ' ' << *(yyvsp[-4].Type).newTy << ' ' << *(yyvsp[-3].Value).val << ' ' - << *(yyvsp[-2].String) << ' ' << *(yyvsp[-1].Type).newTy << ' ' << *(yyvsp[0].Value).val << '\n'; - delete (yyvsp[-13].String); delete (yyvsp[-12].String); delete (yyvsp[-11].String); (yyvsp[-10].Type).destroy(); (yyvsp[-9].Value).destroy(); delete (yyvsp[-7].ValList); - delete (yyvsp[-5].String); (yyvsp[-4].Type).destroy(); (yyvsp[-3].Value).destroy(); delete (yyvsp[-2].String); (yyvsp[-1].Type).destroy(); + *O << ") " << *(yyvsp[-5].String) << ' ' << (yyvsp[-4].Type)->getNewTy() << ' ' << *(yyvsp[-3].Value).val << ' ' + << *(yyvsp[-2].String) << ' ' << (yyvsp[-1].Type)->getNewTy() << ' ' << *(yyvsp[0].Value).val << '\n'; + delete (yyvsp[-13].String); delete (yyvsp[-12].String); delete (yyvsp[-11].String); delete (yyvsp[-10].Type); (yyvsp[-9].Value).destroy(); delete (yyvsp[-7].ValList); + delete (yyvsp[-5].String); delete (yyvsp[-4].Type); (yyvsp[-3].Value).destroy(); delete (yyvsp[-2].String); delete (yyvsp[-1].Type); (yyvsp[0].Value).destroy(); (yyval.String) = 0; ;} break; case 261: -#line 1139 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1233 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *O << " " << *(yyvsp[0].String) << '\n'; delete (yyvsp[0].String); @@ -3526,7 +3619,7 @@ break; case 262: -#line 1144 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1238 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *O << " " << *(yyvsp[0].String) << '\n'; delete (yyvsp[0].String); @@ -3535,26 +3628,27 @@ break; case 263: -#line 1150 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1244 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - *(yyvsp[-5].String) += " " + *(yyvsp[-4].Type).newTy + " " + *(yyvsp[-3].String) + ", " + *(yyvsp[-1].Type).newTy + " " + *(yyvsp[0].Value).val; - (yyvsp[-4].Type).destroy(); delete (yyvsp[-3].String); (yyvsp[-1].Type).destroy(); (yyvsp[0].Value).destroy(); + *(yyvsp[-5].String) += " " + (yyvsp[-4].Type)->getNewTy() + " " + *(yyvsp[-3].String) + ", " + (yyvsp[-1].Type)->getNewTy() + " " + + *(yyvsp[0].Value).val; + delete (yyvsp[-4].Type); delete (yyvsp[-3].String); delete (yyvsp[-1].Type); (yyvsp[0].Value).destroy(); (yyval.String) = (yyvsp[-5].String); ;} break; case 264: -#line 1155 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1250 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - (yyvsp[-3].String)->insert(0, *(yyvsp[-4].Type).newTy + " " ); - *(yyvsp[-3].String) += ", " + *(yyvsp[-1].Type).newTy + " " + *(yyvsp[0].Value).val; - (yyvsp[-4].Type).destroy(); (yyvsp[-1].Type).destroy(); (yyvsp[0].Value).destroy(); + (yyvsp[-3].String)->insert(0, (yyvsp[-4].Type)->getNewTy() + " " ); + *(yyvsp[-3].String) += ", " + (yyvsp[-1].Type)->getNewTy() + " " + *(yyvsp[0].Value).val; + delete (yyvsp[-4].Type); delete (yyvsp[-1].Type); (yyvsp[0].Value).destroy(); (yyval.String) = (yyvsp[-3].String); ;} break; case 265: -#line 1163 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1258 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-1].String)->empty()) { if (deleteUselessCastFlag && *deleteUselessCastName == *(yyvsp[-1].String)) { @@ -3562,64 +3656,67 @@ (yyvsp[-1].String)->insert(0, "; "); // don't actually delete it, just comment it out delete deleteUselessCastName; } else { - *(yyvsp[-1].String) += " = "; + // Get a unique name for the name of this value, based on its type. + *(yyvsp[-1].String) = getUniqueName((yyvsp[-1].String), (yyvsp[0].Value).type) + " = "; } } - *(yyvsp[-1].String) += *(yyvsp[0].String); - delete (yyvsp[0].String); + *(yyvsp[-1].String) += *(yyvsp[0].Value).val; + (yyvsp[0].Value).destroy(); deleteUselessCastFlag = false; (yyval.String) = (yyvsp[-1].String); ;} break; case 266: -#line 1180 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1276 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Used for PHI nodes - (yyvsp[-3].Value).val->insert(0, *(yyvsp[-5].Type).newTy + "["); - *(yyvsp[-3].Value).val += "," + *(yyvsp[-1].Value).val + "]"; - (yyvsp[-5].Type).destroy(); (yyvsp[-1].Value).destroy(); - (yyval.String) = new std::string(*(yyvsp[-3].Value).val); - (yyvsp[-3].Value).destroy(); + std::string Name = getUniqueName((yyvsp[-3].Value).val, (yyvsp[-5].Type)); + Name.insert(0, (yyvsp[-5].Type)->getNewTy() + "["); + Name += "," + *(yyvsp[-1].Value).val + "]"; + (yyval.Value).val = new std::string(Name); + (yyval.Value).type = (yyvsp[-5].Type); + (yyvsp[-3].Value).destroy(); (yyvsp[-1].Value).destroy(); ;} break; case 267: -#line 1187 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1284 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - *(yyvsp[-6].String) += ", [" + *(yyvsp[-3].Value).val + "," + *(yyvsp[-1].Value).val + "]"; + std::string Name = getUniqueName((yyvsp[-3].Value).val, (yyvsp[-6].Value).type); + *(yyvsp[-6].Value).val += ", [" + Name + "," + *(yyvsp[-1].Value).val + "]"; (yyvsp[-3].Value).destroy(); (yyvsp[-1].Value).destroy(); - (yyval.String) = (yyvsp[-6].String); + (yyval.Value) = (yyvsp[-6].Value); ;} break; case 268: -#line 1195 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" - { +#line 1293 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" + { (yyval.ValList) = new ValueList(); (yyval.ValList)->push_back((yyvsp[0].Value)); ;} break; case 269: -#line 1199 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1297 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - (yyvsp[-2].ValList)->push_back((yyvsp[0].Value)); (yyval.ValList) = (yyvsp[-2].ValList); + (yyval.ValList)->push_back((yyvsp[0].Value)); ;} break; case 270: -#line 1206 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1304 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValList) = (yyvsp[0].ValList); ;} break; case 271: -#line 1207 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1305 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValList) = new ValueList(); ;} break; case 272: -#line 1211 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1309 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-1].String) += " " + *(yyvsp[0].String); delete (yyvsp[0].String); @@ -3628,92 +3725,108 @@ break; case 274: -#line 1219 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1317 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { const char* op = getDivRemOpcode(*(yyvsp[-4].String), (yyvsp[-3].Type)); - (yyval.String) = new std::string(op); - *(yyval.String) += " " + *(yyvsp[-3].Type).newTy + " " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val; - delete (yyvsp[-4].String); (yyvsp[-3].Type).destroy(); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy(); + std::string Name1 = getUniqueName((yyvsp[-2].Value).val, (yyvsp[-3].Type)); + std::string Name2 = getUniqueName((yyvsp[0].Value).val, (yyvsp[-3].Type)); + (yyval.Value).val = new std::string(op); + *(yyval.Value).val += " " + (yyvsp[-3].Type)->getNewTy() + " " + Name1 + ", " + Name2; + (yyval.Value).type = (yyvsp[-3].Type); + delete (yyvsp[-4].String); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy(); ;} break; case 275: -#line 1225 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1326 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - *(yyvsp[-4].String) += " " + *(yyvsp[-3].Type).newTy + " " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val; - (yyvsp[-3].Type).destroy(); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy(); - (yyval.String) = (yyvsp[-4].String); + std::string Name1 = getUniqueName((yyvsp[-2].Value).val, (yyvsp[-3].Type)); + std::string Name2 = getUniqueName((yyvsp[0].Value).val, (yyvsp[-3].Type)); + *(yyvsp[-4].String) += " " + (yyvsp[-3].Type)->getNewTy() + " " + Name1 + ", " + Name2; + (yyval.Value).val = (yyvsp[-4].String); + (yyval.Value).type = (yyvsp[-3].Type); + (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy(); ;} break; case 276: -#line 1230 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1334 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { + std::string Name1 = getUniqueName((yyvsp[-2].Value).val, (yyvsp[-3].Type)); + std::string Name2 = getUniqueName((yyvsp[0].Value).val, (yyvsp[-3].Type)); *(yyvsp[-4].String) = getCompareOp(*(yyvsp[-4].String), (yyvsp[-3].Type)); - *(yyvsp[-4].String) += " " + *(yyvsp[-3].Type).newTy + " " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val; - (yyvsp[-3].Type).destroy(); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy(); - (yyval.String) = (yyvsp[-4].String); + *(yyvsp[-4].String) += " " + (yyvsp[-3].Type)->getNewTy() + " " + Name1 + ", " + Name2; + (yyval.Value).val = (yyvsp[-4].String); + (yyval.Value).type = new TypeInfo("bool",BoolTy); + (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy(); ;} break; case 277: -#line 1236 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1343 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - *(yyvsp[-5].String) += " " + *(yyvsp[-4].String) + " " + *(yyvsp[-3].Type).newTy + " " + *(yyvsp[-2].Value).val + "," + *(yyvsp[0].Value).val; + std::string Name1 = getUniqueName((yyvsp[-2].Value).val, (yyvsp[-3].Type)); + std::string Name2 = getUniqueName((yyvsp[0].Value).val, (yyvsp[-3].Type)); + *(yyvsp[-5].String) += " " + *(yyvsp[-4].String) + " " + (yyvsp[-3].Type)->getNewTy() + " " + Name1 + "," + Name2; + (yyval.Value).val = (yyvsp[-5].String); + (yyval.Value).type = new TypeInfo("bool",BoolTy); delete (yyvsp[-4].String); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy(); - (yyval.String) = (yyvsp[-5].String); ;} break; case 278: -#line 1241 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1351 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - *(yyvsp[-5].String) += " " + *(yyvsp[-4].String) + " " + *(yyvsp[-3].Type).newTy + " " + *(yyvsp[-2].Value).val + "," + *(yyvsp[0].Value).val; + std::string Name1 = getUniqueName((yyvsp[-2].Value).val, (yyvsp[-3].Type)); + std::string Name2 = getUniqueName((yyvsp[0].Value).val, (yyvsp[-3].Type)); + *(yyvsp[-5].String) += " " + *(yyvsp[-4].String) + " " + (yyvsp[-3].Type)->getNewTy() + " " + Name1 + "," + Name2; + (yyval.Value).val = (yyvsp[-5].String); + (yyval.Value).type = new TypeInfo("bool",BoolTy); delete (yyvsp[-4].String); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy(); - (yyval.String) = (yyvsp[-5].String); ;} break; case 279: -#line 1246 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1359 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - *(yyvsp[-1].String) += " " + *(yyvsp[0].Value).val; - (yyvsp[0].Value).destroy(); - (yyval.String) = (yyvsp[-1].String); + (yyval.Value) = (yyvsp[0].Value); + (yyval.Value).val->insert(0, *(yyvsp[-1].String) + " "); + delete (yyvsp[-1].String); ;} break; case 280: -#line 1251 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1364 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { const char* shiftop = (yyvsp[-3].String)->c_str(); if (*(yyvsp[-3].String) == "shr") - shiftop = ((yyvsp[-2].Value).type.isUnsigned()) ? "lshr" : "ashr"; - (yyval.String) = new std::string(shiftop); - *(yyval.String) += " " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val; - delete (yyvsp[-3].String); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy(); + shiftop = ((yyvsp[-2].Value).type->isUnsigned()) ? "lshr" : "ashr"; + (yyval.Value).val = new std::string(shiftop); + *(yyval.Value).val += " " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val; + (yyval.Value).type = (yyvsp[-2].Value).type; + delete (yyvsp[-3].String); delete (yyvsp[-2].Value).val; (yyvsp[0].Value).destroy(); ;} break; case 281: -#line 1259 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1373 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { std::string source = *(yyvsp[-2].Value).val; - TypeInfo SrcTy = (yyvsp[-2].Value).type; - TypeInfo DstTy = (yyvsp[0].Type); - ResolveType(DstTy); - (yyval.String) = new std::string(); + TypeInfo* SrcTy = (yyvsp[-2].Value).type; + TypeInfo* DstTy = ResolveType((yyvsp[0].Type)); + (yyval.Value).val = new std::string(); if (*(yyvsp[-3].String) == "cast") { - *(yyval.String) += getCastUpgrade(source, SrcTy, DstTy, false); + *(yyval.Value).val += getCastUpgrade(source, SrcTy, DstTy, false); } else { - *(yyval.String) += *(yyvsp[-3].String) + " " + source + " to " + *DstTy.newTy; + *(yyval.Value).val += *(yyvsp[-3].String) + " " + source + " to " + DstTy->getNewTy(); } + (yyval.Value).type = (yyvsp[0].Type); // Check to see if this is a useless cast of a value to the same name // and the same type. Such casts will probably cause redefinition errors // when assembled and perform no code gen action so just remove them. if (*(yyvsp[-3].String) == "cast" || *(yyvsp[-3].String) == "bitcast") - if ((yyvsp[-2].Value).type.isInteger() && (yyvsp[0].Type).isInteger() && - (yyvsp[-2].Value).type.getBitWidth() == (yyvsp[0].Type).getBitWidth()) { + if ((yyvsp[-2].Value).type->isInteger() && DstTy->isInteger() && + (yyvsp[-2].Value).type->getBitWidth() == DstTy->getBitWidth()) { deleteUselessCastFlag = true; // Flag the "Inst" rule deleteUselessCastName = new std::string(*(yyvsp[-2].Value).val); // save the name size_t pos = deleteUselessCastName->find_first_of("%\"",0); @@ -3723,72 +3836,79 @@ } } delete (yyvsp[-3].String); (yyvsp[-2].Value).destroy(); - delete (yyvsp[-1].String); (yyvsp[0].Type).destroy(); + delete (yyvsp[-1].String); ;} break; case 282: -#line 1287 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1401 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-5].String) += " " + *(yyvsp[-4].Value).val + ", " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val; - (yyvsp[-4].Value).destroy(); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy(); - (yyval.String) = (yyvsp[-5].String); + (yyval.Value).val = (yyvsp[-5].String); + (yyval.Value).type = (yyvsp[-2].Value).type; + (yyvsp[-4].Value).destroy(); delete (yyvsp[-2].Value).val; (yyvsp[0].Value).destroy(); ;} break; case 283: -#line 1292 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1407 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - *(yyvsp[-3].String) += " " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Type).newTy; - (yyvsp[-2].Value).destroy(); (yyvsp[0].Type).destroy(); - (yyval.String) = (yyvsp[-3].String); + *(yyvsp[-3].String) += " " + *(yyvsp[-2].Value).val + ", " + (yyvsp[0].Type)->getNewTy(); + (yyval.Value).val = (yyvsp[-3].String); + (yyval.Value).type = (yyvsp[0].Type); + (yyvsp[-2].Value).destroy(); ;} break; case 284: -#line 1297 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1413 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-3].String) += " " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val; - (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy(); - (yyval.String) = (yyvsp[-3].String); + (yyval.Value).val = (yyvsp[-3].String); + ResolveType((yyvsp[-2].Value).type); + (yyval.Value).type = (yyvsp[-2].Value).type->getElementType()->clone(); + delete (yyvsp[-2].Value).val; (yyvsp[0].Value).destroy(); ;} break; case 285: -#line 1302 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1420 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-5].String) += " " + *(yyvsp[-4].Value).val + ", " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val; - (yyvsp[-4].Value).destroy(); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy(); - (yyval.String) = (yyvsp[-5].String); + (yyval.Value).val = (yyvsp[-5].String); + (yyval.Value).type = (yyvsp[-4].Value).type; + delete (yyvsp[-4].Value).val; (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy(); ;} break; case 286: -#line 1307 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1426 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-5].String) += " " + *(yyvsp[-4].Value).val + ", " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val; - (yyvsp[-4].Value).destroy(); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy(); - (yyval.String) = (yyvsp[-5].String); + (yyval.Value).val = (yyvsp[-5].String); + (yyval.Value).type = (yyvsp[-4].Value).type; + delete (yyvsp[-4].Value).val; (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy(); ;} break; case 287: -#line 1312 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1432 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - *(yyvsp[-1].String) += " " + *(yyvsp[0].String); - delete (yyvsp[0].String); - (yyval.String) = (yyvsp[-1].String); + *(yyvsp[-1].String) += " " + *(yyvsp[0].Value).val; + (yyval.Value).val = (yyvsp[-1].String); + (yyval.Value).type = (yyvsp[0].Value).type; + delete (yyvsp[0].Value).val; ;} break; case 288: -#line 1317 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1438 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-5].String)->empty()) *(yyvsp[-6].String) += " " + *(yyvsp[-5].String); if (!(yyvsp[-6].String)->empty()) *(yyvsp[-6].String) += " "; - *(yyvsp[-6].String) += *(yyvsp[-4].Type).newTy + " " + *(yyvsp[-3].Value).val + "("; + *(yyvsp[-6].String) += (yyvsp[-4].Type)->getNewTy() + " " + *(yyvsp[-3].Value).val + "("; for (unsigned i = 0; i < (yyvsp[-1].ValList)->size(); ++i) { ValueInfo& VI = (*(yyvsp[-1].ValList))[i]; *(yyvsp[-6].String) += *VI.val; @@ -3797,125 +3917,137 @@ VI.destroy(); } *(yyvsp[-6].String) += ")"; - delete (yyvsp[-5].String); (yyvsp[-4].Type).destroy(); (yyvsp[-3].Value).destroy(); delete (yyvsp[-1].ValList); - (yyval.String) = (yyvsp[-6].String); + (yyval.Value).val = (yyvsp[-6].String); + (yyval.Value).type = getFunctionReturnType((yyvsp[-4].Type)); + delete (yyvsp[-5].String); delete (yyvsp[-4].Type); (yyvsp[-3].Value).destroy(); delete (yyvsp[-1].ValList); ;} break; case 290: -#line 1339 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1461 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValList) = (yyvsp[0].ValList); ;} break; case 291: -#line 1340 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1462 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValList) = new ValueList(); ;} break; case 293: -#line 1345 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1467 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 294: -#line 1348 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1470 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - *(yyvsp[-2].String) += " " + *(yyvsp[-1].Type).newTy; + *(yyvsp[-2].String) += " " + (yyvsp[-1].Type)->getNewTy(); if (!(yyvsp[0].String)->empty()) *(yyvsp[-2].String) += " " + *(yyvsp[0].String); - (yyvsp[-1].Type).destroy(); delete (yyvsp[0].String); - (yyval.String) = (yyvsp[-2].String); + (yyval.Value).val = (yyvsp[-2].String); + (yyval.Value).type = (yyvsp[-1].Type)->getPointerType(); + delete (yyvsp[-1].Type); delete (yyvsp[0].String); ;} break; case 295: -#line 1355 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1478 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - *(yyvsp[-5].String) += " " + *(yyvsp[-4].Type).newTy + ", " + *(yyvsp[-2].Type).newTy + " " + *(yyvsp[-1].Value).val; + std::string Name = getUniqueName((yyvsp[-1].Value).val, (yyvsp[-2].Type)); + *(yyvsp[-5].String) += " " + (yyvsp[-4].Type)->getNewTy() + ", " + (yyvsp[-2].Type)->getNewTy() + " " + Name; if (!(yyvsp[0].String)->empty()) *(yyvsp[-5].String) += " " + *(yyvsp[0].String); - (yyvsp[-4].Type).destroy(); (yyvsp[-2].Type).destroy(); (yyvsp[-1].Value).destroy(); delete (yyvsp[0].String); - (yyval.String) = (yyvsp[-5].String); + (yyval.Value).val = (yyvsp[-5].String); + (yyval.Value).type = (yyvsp[-4].Type)->getPointerType(); + delete (yyvsp[-4].Type); delete (yyvsp[-2].Type); (yyvsp[-1].Value).destroy(); delete (yyvsp[0].String); ;} break; case 296: -#line 1362 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1487 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - *(yyvsp[-2].String) += " " + *(yyvsp[-1].Type).newTy; + *(yyvsp[-2].String) += " " + (yyvsp[-1].Type)->getNewTy(); if (!(yyvsp[0].String)->empty()) *(yyvsp[-2].String) += " " + *(yyvsp[0].String); - (yyvsp[-1].Type).destroy(); delete (yyvsp[0].String); - (yyval.String) = (yyvsp[-2].String); + (yyval.Value).val = (yyvsp[-2].String); + (yyval.Value).type = (yyvsp[-1].Type)->getPointerType(); + delete (yyvsp[-1].Type); delete (yyvsp[0].String); ;} break; case 297: -#line 1369 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1495 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - *(yyvsp[-5].String) += " " + *(yyvsp[-4].Type).newTy + ", " + *(yyvsp[-2].Type).newTy + " " + *(yyvsp[-1].Value).val; + std::string Name = getUniqueName((yyvsp[-1].Value).val, (yyvsp[-2].Type)); + *(yyvsp[-5].String) += " " + (yyvsp[-4].Type)->getNewTy() + ", " + (yyvsp[-2].Type)->getNewTy() + " " + Name; if (!(yyvsp[0].String)->empty()) *(yyvsp[-5].String) += " " + *(yyvsp[0].String); - (yyvsp[-4].Type).destroy(); (yyvsp[-2].Type).destroy(); (yyvsp[-1].Value).destroy(); delete (yyvsp[0].String); - (yyval.String) = (yyvsp[-5].String); + (yyval.Value).val = (yyvsp[-5].String); + (yyval.Value).type = (yyvsp[-4].Type)->getPointerType(); + delete (yyvsp[-4].Type); delete (yyvsp[-2].Type); (yyvsp[-1].Value).destroy(); delete (yyvsp[0].String); ;} break; case 298: -#line 1376 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1504 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-1].String) += " " + *(yyvsp[0].Value).val; + (yyval.Value).val = (yyvsp[-1].String); + (yyval.Value).type = new TypeInfo("void", VoidTy); (yyvsp[0].Value).destroy(); - (yyval.String) = (yyvsp[-1].String); ;} break; case 299: -#line 1381 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1510 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { + std::string Name = getUniqueName((yyvsp[0].Value).val, (yyvsp[-1].Type)); if (!(yyvsp[-3].String)->empty()) *(yyvsp[-3].String) += " "; - *(yyvsp[-3].String) += *(yyvsp[-2].String) + " " + *(yyvsp[-1].Type).newTy + " " + *(yyvsp[0].Value).val; - delete (yyvsp[-2].String); (yyvsp[-1].Type).destroy(); (yyvsp[0].Value).destroy(); - (yyval.String) = (yyvsp[-3].String); + *(yyvsp[-3].String) += *(yyvsp[-2].String) + " " + (yyvsp[-1].Type)->getNewTy() + " " + Name; + (yyval.Value).val = (yyvsp[-3].String); + (yyval.Value).type = (yyvsp[-1].Type)->getElementType()->clone(); + delete (yyvsp[-2].String); delete (yyvsp[-1].Type); (yyvsp[0].Value).destroy(); ;} break; case 300: -#line 1388 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1519 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { + std::string Name = getUniqueName((yyvsp[0].Value).val, (yyvsp[-1].Type)); if (!(yyvsp[-5].String)->empty()) *(yyvsp[-5].String) += " "; - *(yyvsp[-5].String) += *(yyvsp[-4].String) + " " + *(yyvsp[-3].Value).val + ", " + *(yyvsp[-1].Type).newTy + " " + *(yyvsp[0].Value).val; - delete (yyvsp[-4].String); (yyvsp[-3].Value).destroy(); (yyvsp[-1].Type).destroy(); (yyvsp[0].Value).destroy(); - (yyval.String) = (yyvsp[-5].String); + *(yyvsp[-5].String) += *(yyvsp[-4].String) + " " + *(yyvsp[-3].Value).val + ", " + (yyvsp[-1].Type)->getNewTy() + " " + Name; + (yyval.Value).val = (yyvsp[-5].String); + (yyval.Value).type = new TypeInfo("void", VoidTy); + delete (yyvsp[-4].String); (yyvsp[-3].Value).destroy(); delete (yyvsp[-1].Type); (yyvsp[0].Value).destroy(); ;} break; case 301: -#line 1395 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1528 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { + std::string Name = getUniqueName((yyvsp[-1].Value).val, (yyvsp[-2].Type)); // Upgrade the indices for (unsigned i = 0; i < (yyvsp[0].ValList)->size(); ++i) { ValueInfo& VI = (*(yyvsp[0].ValList))[i]; - if (VI.type.isUnsigned() && !VI.isConstant() && - VI.type.getBitWidth() < 64) { + if (VI.type->isUnsigned() && !VI.isConstant() && + VI.type->getBitWidth() < 64) { std::string* old = VI.val; *O << " %gep_upgrade" << unique << " = zext " << *old << " to i64\n"; VI.val = new std::string("i64 %gep_upgrade" + llvm::utostr(unique++)); - VI.type.oldTy = ULongTy; - delete old; + VI.type->setOldTy(ULongTy); } } - *(yyvsp[-3].String) += " " + *(yyvsp[-2].Type).newTy + " " + *(yyvsp[-1].Value).val; + *(yyvsp[-3].String) += " " + (yyvsp[-2].Type)->getNewTy() + " " + Name; for (unsigned i = 0; i < (yyvsp[0].ValList)->size(); ++i) { ValueInfo& VI = (*(yyvsp[0].ValList))[i]; *(yyvsp[-3].String) += ", " + *VI.val; - VI.destroy(); } - (yyvsp[-2].Type).destroy(); (yyvsp[-1].Value).destroy(); delete (yyvsp[0].ValList); - (yyval.String) = (yyvsp[-3].String); + (yyval.Value).val = (yyvsp[-3].String); + (yyval.Value).type = getGEPIndexedType((yyvsp[-2].Type),(yyvsp[0].ValList)); + (yyvsp[-1].Value).destroy(); delete (yyvsp[0].ValList); ;} break; @@ -3924,7 +4056,7 @@ } /* Line 1126 of yacc.c. */ -#line 3928 "UpgradeParser.tab.c" +#line 4060 "UpgradeParser.tab.c" yyvsp -= yylen; yyssp -= yylen; @@ -4192,7 +4324,7 @@ } -#line 1419 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1552 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" int yyerror(const char *ErrorMsg) { Index: llvm/tools/llvm-upgrade/UpgradeParser.cpp.cvs diff -u llvm/tools/llvm-upgrade/UpgradeParser.cpp.cvs:1.28 llvm/tools/llvm-upgrade/UpgradeParser.cpp.cvs:1.29 --- llvm/tools/llvm-upgrade/UpgradeParser.cpp.cvs:1.28 Sun Dec 31 19:20:41 2006 +++ llvm/tools/llvm-upgrade/UpgradeParser.cpp.cvs Mon Jan 1 23:45:11 2007 @@ -371,12 +371,10 @@ #line 14 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" #include "ParserInternals.h" -#include #include #include #include #include -#include #define YYERROR_VERBOSE 1 #define YYINCLUDED_STDLIB_H @@ -436,71 +434,72 @@ } } -static void ResolveType(TypeInfo& Ty) { - if (Ty.oldTy == UnresolvedTy) { - TypeMap::iterator I = NamedTypes.find(*Ty.newTy); +TypeInfo* ResolveType(TypeInfo*& Ty) { + if (Ty->isUnresolved()) { + TypeMap::iterator I = NamedTypes.find(Ty->getNewTy()); if (I != NamedTypes.end()) { - Ty.oldTy = I->second.oldTy; - Ty.elemTy = I->second.elemTy; + Ty = I->second.clone(); + return Ty; } else { - std::string msg("Can't resolve type: "); - msg += *Ty.newTy; + std::string msg("Cannot resolve type: "); + msg += Ty->getNewTy(); yyerror(msg.c_str()); } - } else if (Ty.oldTy == NumericTy) { - unsigned ref = atoi(&((Ty.newTy->c_str())[1])); // Skip the '\\' + } else if (Ty->isNumeric()) { + unsigned ref = atoi(&((Ty->getNewTy().c_str())[1])); // Skip the '\\' if (ref < EnumeratedTypes.size()) { - Ty.oldTy = EnumeratedTypes[ref].oldTy; - Ty.elemTy = EnumeratedTypes[ref].elemTy; + Ty = EnumeratedTypes[ref].clone(); + return Ty; } else { std::string msg("Can't resolve type: "); - msg += *Ty.newTy; + msg += Ty->getNewTy(); yyerror(msg.c_str()); } } // otherwise its already resolved. + return Ty; } static const char* getCastOpcode( - std::string& Source, const TypeInfo& SrcTy, const TypeInfo& DstTy) + std::string& Source, const TypeInfo* SrcTy, const TypeInfo* DstTy) { - unsigned SrcBits = SrcTy.getBitWidth(); - unsigned DstBits = DstTy.getBitWidth(); + unsigned SrcBits = SrcTy->getBitWidth(); + unsigned DstBits = DstTy->getBitWidth(); const char* opcode = "bitcast"; // Run through the possibilities ... - if (DstTy.isIntegral()) { // Casting to integral - if (SrcTy.isIntegral()) { // Casting from integral + if (DstTy->isIntegral()) { // Casting to integral + if (SrcTy->isIntegral()) { // Casting from integral if (DstBits < SrcBits) opcode = "trunc"; else if (DstBits > SrcBits) { // its an extension - if (SrcTy.isSigned()) + if (SrcTy->isSigned()) opcode ="sext"; // signed -> SEXT else opcode = "zext"; // unsigned -> ZEXT } else { opcode = "bitcast"; // Same size, No-op cast } - } else if (SrcTy.isFloatingPoint()) { // Casting from floating pt - if (DstTy.isSigned()) + } else if (SrcTy->isFloatingPoint()) { // Casting from floating pt + if (DstTy->isSigned()) opcode = "fptosi"; // FP -> sint else opcode = "fptoui"; // FP -> uint - } else if (SrcTy.isPacked()) { - assert(DstBits == SrcTy.getBitWidth() && + } else if (SrcTy->isPacked()) { + assert(DstBits == SrcTy->getBitWidth() && "Casting packed to integer of different width"); opcode = "bitcast"; // same size, no-op cast } else { - assert(SrcTy.isPointer() && + assert(SrcTy->isPointer() && "Casting from a value that is not first-class type"); opcode = "ptrtoint"; // ptr -> int } - } else if (DstTy.isFloatingPoint()) { // Casting to floating pt - if (SrcTy.isIntegral()) { // Casting from integral - if (SrcTy.isSigned()) + } else if (DstTy->isFloatingPoint()) { // Casting to floating pt + if (SrcTy->isIntegral()) { // Casting from integral + if (SrcTy->isSigned()) opcode = "sitofp"; // sint -> FP else opcode = "uitofp"; // uint -> FP - } else if (SrcTy.isFloatingPoint()) { // Casting from floating pt + } else if (SrcTy->isFloatingPoint()) { // Casting from floating pt if (DstBits < SrcBits) { opcode = "fptrunc"; // FP -> smaller FP } else if (DstBits > SrcBits) { @@ -508,27 +507,27 @@ } else { opcode ="bitcast"; // same size, no-op cast } - } else if (SrcTy.isPacked()) { - assert(DstBits == SrcTy.getBitWidth() && + } else if (SrcTy->isPacked()) { + assert(DstBits == SrcTy->getBitWidth() && "Casting packed to floating point of different width"); opcode = "bitcast"; // same size, no-op cast } else { assert(0 && "Casting pointer or non-first class to float"); } - } else if (DstTy.isPacked()) { - if (SrcTy.isPacked()) { - assert(DstTy.getBitWidth() == SrcTy.getBitWidth() && + } else if (DstTy->isPacked()) { + if (SrcTy->isPacked()) { + assert(DstTy->getBitWidth() == SrcTy->getBitWidth() && "Casting packed to packed of different widths"); opcode = "bitcast"; // packed -> packed - } else if (DstTy.getBitWidth() == SrcBits) { + } else if (DstTy->getBitWidth() == SrcBits) { opcode = "bitcast"; // float/int -> packed } else { assert(!"Illegal cast to packed (wrong type or size)"); } - } else if (DstTy.isPointer()) { - if (SrcTy.isPointer()) { + } else if (DstTy->isPointer()) { + if (SrcTy->isPointer()) { opcode = "bitcast"; // ptr -> ptr - } else if (SrcTy.isIntegral()) { + } else if (SrcTy->isIntegral()) { opcode = "inttoptr"; // int -> ptr } else { assert(!"Casting invalid type to pointer"); @@ -539,12 +538,12 @@ return opcode; } -static std::string getCastUpgrade( - const std::string& Src, TypeInfo& SrcTy, TypeInfo& DstTy, bool isConst) +static std::string getCastUpgrade(const std::string& Src, TypeInfo* SrcTy, + TypeInfo* DstTy, bool isConst) { std::string Result; std::string Source = Src; - if (SrcTy.isFloatingPoint() && DstTy.isPointer()) { + if (SrcTy->isFloatingPoint() && DstTy->isPointer()) { // fp -> ptr cast is no longer supported but we must upgrade this // by doing a double cast: fp -> int -> ptr if (isConst) @@ -555,16 +554,16 @@ Source = "i64 %cast_upgrade" + llvm::utostr(unique); } // Update the SrcTy for the getCastOpcode call below - SrcTy.destroy(); - SrcTy.newTy = new std::string("i64"); - SrcTy.oldTy = ULongTy; - } else if (DstTy.oldTy == BoolTy && SrcTy.oldTy != BoolTy) { - // cast ptr %x to bool was previously defined as setne ptr %x, null - // The ptrtoint semantic is to truncate, not compare so we must retain - // the original intent by replace the cast with a setne - const char* comparator = SrcTy.isPointer() ? ", null" : - (SrcTy.isFloatingPoint() ? ", 0.0" : ", 0"); - const char* compareOp = SrcTy.isFloatingPoint() ? "fcmp one " : "icmp ne "; + delete SrcTy; + SrcTy = new TypeInfo("i64", ULongTy); + } else if (DstTy->isBool()) { + // cast type %x to bool was previously defined as setne type %x, null + // The cast semantic is now to truncate, not compare so we must retain + // the original intent by replacing the cast with a setne + const char* comparator = SrcTy->isPointer() ? ", null" : + (SrcTy->isFloatingPoint() ? ", 0.0" : + (SrcTy->isBool() ? ", false" : ", 0")); + const char* compareOp = SrcTy->isFloatingPoint() ? "fcmp one " : "icmp ne "; if (isConst) { Result = "(" + Source + comparator + ")"; Result = compareOp + Result; @@ -576,33 +575,32 @@ ResolveType(DstTy); std::string Opcode(getCastOpcode(Source, SrcTy, DstTy)); if (isConst) - Result += Opcode + "( " + Source + " to " + *DstTy.newTy + ")"; + Result += Opcode + "( " + Source + " to " + DstTy->getNewTy() + ")"; else - Result += Opcode + " " + Source + " to " + *DstTy.newTy; + Result += Opcode + " " + Source + " to " + DstTy->getNewTy(); return Result; } -const char* getDivRemOpcode(const std::string& opcode, const TypeInfo& TI) { +const char* getDivRemOpcode(const std::string& opcode, TypeInfo* TI) { const char* op = opcode.c_str(); - TypeInfo Ty = TI; - ResolveType(Ty); - if (Ty.isPacked()) - Ty.oldTy = Ty.getElementType(); + const TypeInfo* Ty = ResolveType(TI); + if (Ty->isPacked()) + Ty = Ty->getElementType(); if (opcode == "div") - if (Ty.isFloatingPoint()) + if (Ty->isFloatingPoint()) op = "fdiv"; - else if (Ty.isUnsigned()) + else if (Ty->isUnsigned()) op = "udiv"; - else if (Ty.isSigned()) + else if (Ty->isSigned()) op = "sdiv"; else yyerror("Invalid type for div instruction"); else if (opcode == "rem") - if (Ty.isFloatingPoint()) + if (Ty->isFloatingPoint()) op = "frem"; - else if (Ty.isUnsigned()) + else if (Ty->isUnsigned()) op = "urem"; - else if (Ty.isSigned()) + else if (Ty->isSigned()) op = "srem"; else yyerror("Invalid type for rem instruction"); @@ -610,7 +608,7 @@ } std::string -getCompareOp(const std::string& setcc, const TypeInfo& TI) { +getCompareOp(const std::string& setcc, const TypeInfo* TI) { assert(setcc.length() == 5); char cc1 = setcc[3]; char cc2 = setcc[4]; @@ -619,20 +617,20 @@ std::string result("xcmp xxx"); result[6] = cc1; result[7] = cc2; - if (TI.isFloatingPoint()) { + if (TI->isFloatingPoint()) { result[0] = 'f'; result[5] = 'o'; if (cc1 == 'n') result[5] = 'u'; // NE maps to unordered else result[5] = 'o'; // everything else maps to ordered - } else if (TI.isIntegral() || TI.isPointer()) { + } else if (TI->isIntegral() || TI->isPointer()) { result[0] = 'i'; if ((cc1 == 'e' && cc2 == 'q') || (cc1 == 'n' && cc2 == 'e')) result.erase(5,1); - else if (TI.isSigned()) + else if (TI->isSigned()) result[5] = 's'; - else if (TI.isUnsigned() || TI.isPointer() || TI.isBool()) + else if (TI->isUnsigned() || TI->isPointer() || TI->isBool()) result[5] = 'u'; else yyerror("Invalid integral type for setcc"); @@ -640,6 +638,76 @@ return result; } +static TypeInfo* getFunctionReturnType(TypeInfo* PFTy) { + ResolveType(PFTy); + if (PFTy->isPointer()) { + TypeInfo* ElemTy = PFTy->getElementType(); + ResolveType(ElemTy); + if (ElemTy->isFunction()) + return ElemTy->getResultType()->clone(); + } else if (PFTy->isFunction()) { + return PFTy->getResultType()->clone(); + } + return PFTy->clone(); +} + +static TypeInfo* getGEPIndexedType(TypeInfo* PTy, ValueList* idxs) { + ResolveType(PTy); + assert(PTy->isPointer() && "GEP Operand is not a pointer?"); + TypeInfo* Result = PTy->getElementType(); // just skip first index + ResolveType(Result); + for (unsigned i = 1; i < idxs->size(); ++i) { + if (Result->isComposite()) { + Result = Result->getIndexedType((*idxs)[i]); + ResolveType(Result); + } else + yyerror("Invalid type for index"); + } + return Result->getPointerType(); +} + +static std::string makeUniqueName(const std::string *Name, bool isSigned) { + const char *suffix = ".u"; + if (isSigned) + suffix = ".s"; + if ((*Name)[Name->size()-1] == '"') { + std::string Result(*Name); + Result.insert(Name->size()-1, suffix); + return Result; + } + return *Name + suffix; +} + +// This function handles appending .u or .s to integer value names that +// were previously unsigned or signed, respectively. This avoids name +// collisions since the unsigned and signed type planes have collapsed +// into a single signless type plane. +static std::string getUniqueName(const std::string *Name, TypeInfo* Ty) { + // If its not a symbolic name, don't modify it, probably a constant val. + if ((*Name)[0] != '%' && (*Name)[0] != '"') + return *Name; + // If its a numeric reference, just leave it alone. + if (isdigit((*Name)[1])) + return *Name; + + // Resolve the type + ResolveType(Ty); + + // Default the result to the current name + std::string Result = *Name; + + if (Ty->isInteger()) { + // If its an integer type, make the name unique + Result = makeUniqueName(Name, Ty->isSigned()); + } else if (Ty->isPointer()) { + while (Ty->isPointer()) + Ty = Ty->getElementType(); + if (Ty->isInteger()) + Result = makeUniqueName(Name, Ty->isSigned()); + } + return Result; +} + /* Enabling traces. */ @@ -661,16 +729,17 @@ #endif #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) -#line 289 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 357 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" typedef union YYSTYPE { std::string* String; - TypeInfo Type; + TypeInfo* Type; ValueInfo Value; ConstInfo Const; ValueList* ValList; + TypeList* TypeVec; } YYSTYPE; /* Line 196 of yacc.c. */ -#line 674 "UpgradeParser.tab.c" +#line 743 "UpgradeParser.tab.c" # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_TRIVIAL 1 @@ -682,7 +751,7 @@ /* Line 219 of yacc.c. */ -#line 686 "UpgradeParser.tab.c" +#line 755 "UpgradeParser.tab.c" #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__) # define YYSIZE_T __SIZE_TYPE__ @@ -1038,37 +1107,37 @@ /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const unsigned short int yyrline[] = { - 0, 352, 352, 352, 353, 353, 357, 357, 357, 357, - 357, 357, 357, 358, 358, 358, 358, 359, 359, 359, - 360, 360, 360, 360, 360, 360, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 362, 362, 362, 362, - 362, 362, 362, 362, 362, 362, 363, 363, 363, 363, - 363, 363, 364, 364, 364, 364, 365, 365, 365, 365, - 365, 365, 365, 366, 366, 366, 366, 366, 366, 371, - 371, 371, 371, 372, 372, 372, 372, 373, 373, 374, - 374, 377, 380, 385, 385, 385, 385, 385, 385, 386, - 387, 390, 390, 390, 390, 390, 391, 392, 397, 402, - 403, 406, 407, 415, 421, 422, 425, 426, 435, 436, - 449, 449, 450, 450, 451, 455, 455, 455, 455, 455, - 455, 455, 456, 456, 456, 456, 456, 458, 462, 466, - 469, 474, 480, 488, 496, 502, 506, 512, 516, 527, - 530, 538, 539, 544, 547, 557, 563, 568, 574, 580, - 586, 591, 597, 603, 609, 615, 621, 627, 633, 639, - 645, 653, 667, 679, 684, 690, 695, 701, 706, 711, - 719, 724, 729, 739, 744, 749, 749, 759, 764, 767, - 772, 776, 780, 782, 782, 785, 797, 802, 807, 816, - 825, 834, 843, 848, 853, 858, 860, 860, 863, 868, - 875, 880, 887, 894, 899, 900, 908, 908, 909, 909, - 911, 918, 922, 926, 929, 934, 937, 940, 959, 960, - 963, 974, 975, 977, 985, 986, 987, 991, 1004, 1005, - 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1009, 1010, 1015, - 1016, 1025, 1025, 1029, 1035, 1046, 1052, 1055, 1063, 1067, - 1072, 1075, 1081, 1081, 1083, 1088, 1093, 1098, 1106, 1113, - 1119, 1139, 1144, 1150, 1155, 1163, 1180, 1187, 1195, 1199, - 1206, 1207, 1211, 1216, 1219, 1225, 1230, 1236, 1241, 1246, - 1251, 1259, 1287, 1292, 1297, 1302, 1307, 1312, 1317, 1334, - 1339, 1340, 1344, 1345, 1348, 1355, 1362, 1369, 1376, 1381, - 1388, 1395 + 0, 422, 422, 422, 423, 423, 427, 427, 427, 427, + 427, 427, 427, 428, 428, 428, 428, 429, 429, 429, + 430, 430, 430, 430, 430, 430, 431, 431, 431, 431, + 431, 431, 431, 431, 431, 431, 432, 432, 432, 432, + 432, 432, 432, 432, 432, 432, 433, 433, 433, 433, + 433, 433, 434, 434, 434, 434, 435, 435, 435, 435, + 435, 435, 435, 436, 436, 436, 436, 436, 436, 441, + 441, 441, 441, 442, 442, 442, 442, 443, 443, 444, + 444, 447, 450, 455, 455, 455, 455, 455, 455, 456, + 457, 460, 460, 460, 460, 460, 461, 462, 467, 472, + 473, 476, 477, 485, 491, 492, 495, 496, 505, 506, + 519, 519, 520, 520, 521, 525, 525, 525, 525, 525, + 525, 525, 526, 526, 526, 526, 526, 528, 531, 534, + 537, 541, 555, 562, 569, 580, 584, 595, 599, 608, + 612, 619, 620, 625, 630, 640, 646, 651, 657, 663, + 669, 674, 680, 686, 693, 699, 705, 711, 717, 723, + 729, 737, 750, 762, 767, 773, 778, 784, 789, 794, + 802, 807, 812, 822, 827, 832, 832, 842, 847, 850, + 855, 859, 863, 865, 865, 868, 878, 883, 888, 898, + 908, 918, 928, 933, 938, 943, 945, 945, 948, 953, + 960, 965, 972, 979, 984, 985, 993, 993, 994, 994, + 996, 1005, 1009, 1013, 1016, 1021, 1024, 1027, 1045, 1046, + 1049, 1060, 1061, 1063, 1072, 1073, 1074, 1078, 1091, 1092, + 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1096, 1097, 1102, + 1103, 1112, 1112, 1116, 1121, 1131, 1140, 1143, 1151, 1155, + 1160, 1163, 1169, 1169, 1171, 1176, 1181, 1186, 1195, 1203, + 1210, 1233, 1238, 1244, 1250, 1258, 1276, 1284, 1293, 1297, + 1304, 1305, 1309, 1314, 1317, 1326, 1334, 1343, 1351, 1359, + 1364, 1373, 1401, 1407, 1413, 1420, 1426, 1432, 1438, 1456, + 1461, 1462, 1466, 1467, 1470, 1478, 1487, 1495, 1504, 1510, + 1519, 1528 }; #endif @@ -2417,26 +2486,26 @@ switch (yyn) { case 81: -#line 377 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 447 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = (yyvsp[-1].String); ;} break; case 82: -#line 380 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 450 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(""); ;} break; case 90: -#line 387 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 457 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(""); ;} break; case 97: -#line 392 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 462 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-1].String) += *(yyvsp[0].String); delete (yyvsp[0].String); @@ -2445,27 +2514,27 @@ break; case 98: -#line 397 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 467 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(""); ;} break; case 99: -#line 402 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 472 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 100: -#line 403 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 473 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-1].String) += " " + *(yyvsp[0].String); delete (yyvsp[0].String); (yyval.String) = (yyvsp[-1].String); ;} break; case 101: -#line 406 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 476 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 102: -#line 407 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 477 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyvsp[-1].String)->insert(0, ", "); *(yyvsp[-1].String) += " " + *(yyvsp[0].String); @@ -2475,7 +2544,7 @@ break; case 103: -#line 415 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 485 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-1].String) += " " + *(yyvsp[0].String); delete (yyvsp[0].String); @@ -2484,17 +2553,17 @@ break; case 104: -#line 421 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 491 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 106: -#line 425 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 495 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 107: -#line 426 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 496 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyvsp[-1].String)->insert(0, ", "); if (!(yyvsp[0].String)->empty()) @@ -2505,7 +2574,7 @@ break; case 109: -#line 436 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 506 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-1].String) += " " + *(yyvsp[0].String); delete (yyvsp[0].String); @@ -2514,334 +2583,347 @@ break; case 127: -#line 458 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 528 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - (yyval.Type).newTy = (yyvsp[0].String); - (yyval.Type).oldTy = OpaqueTy; + (yyval.Type) = new TypeInfo((yyvsp[0].String), OpaqueTy); ;} break; case 128: -#line 462 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 531 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - (yyval.Type).newTy = (yyvsp[0].String); - (yyval.Type).oldTy = UnresolvedTy; + (yyval.Type) = new TypeInfo((yyvsp[0].String), UnresolvedTy); ;} break; case 129: -#line 466 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 534 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Type) = (yyvsp[0].Type); ;} break; case 130: -#line 469 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 537 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Type UpReference (yyvsp[0].String)->insert(0, "\\"); - (yyval.Type).newTy = (yyvsp[0].String); - (yyval.Type).oldTy = NumericTy; + (yyval.Type) = new TypeInfo((yyvsp[0].String), NumericTy); ;} break; case 131: -#line 474 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 541 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Function derived type? - *(yyvsp[-3].Type).newTy += "( " + *(yyvsp[-1].String) + " )"; - delete (yyvsp[-1].String); - (yyval.Type).newTy = (yyvsp[-3].Type).newTy; - (yyval.Type).oldTy = FunctionTy; + std::string newTy( (yyvsp[-3].Type)->getNewTy() + "("); + for (unsigned i = 0; i < (yyvsp[-1].TypeVec)->size(); ++i) { + if (i != 0) + newTy += ", "; + if ((*(yyvsp[-1].TypeVec))[i]->isVoid()) + newTy += "..."; + else + newTy += (*(yyvsp[-1].TypeVec))[i]->getNewTy(); + } + newTy += ")"; + (yyval.Type) = new TypeInfo(new std::string(newTy), (yyvsp[-3].Type), (yyvsp[-1].TypeVec)); + EnumeratedTypes.push_back(*(yyval.Type)); ;} break; case 132: -#line 480 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 555 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Sized array type? (yyvsp[-3].String)->insert(0,"[ "); - *(yyvsp[-3].String) += " x " + *(yyvsp[-1].Type).newTy + " ]"; - delete (yyvsp[-1].Type).newTy; - (yyval.Type).newTy = (yyvsp[-3].String); - (yyval.Type).oldTy = ArrayTy; - (yyval.Type).elemTy = (yyvsp[-1].Type).oldTy; + *(yyvsp[-3].String) += " x " + (yyvsp[-1].Type)->getNewTy() + " ]"; + uint64_t elems = atoi((yyvsp[-3].String)->c_str()); + (yyval.Type) = new TypeInfo((yyvsp[-3].String), ArrayTy, (yyvsp[-1].Type), elems); + EnumeratedTypes.push_back(*(yyval.Type)); ;} break; case 133: -#line 488 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 562 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Packed array type? (yyvsp[-3].String)->insert(0,"< "); - *(yyvsp[-3].String) += " x " + *(yyvsp[-1].Type).newTy + " >"; - delete (yyvsp[-1].Type).newTy; - (yyval.Type).newTy = (yyvsp[-3].String); - (yyval.Type).oldTy = PackedTy; - (yyval.Type).elemTy = (yyvsp[-1].Type).oldTy; + *(yyvsp[-3].String) += " x " + (yyvsp[-1].Type)->getNewTy() + " >"; + uint64_t elems = atoi((yyvsp[-3].String)->c_str()); + (yyval.Type) = new TypeInfo((yyvsp[-3].String), PackedTy, (yyvsp[-1].Type), elems); + EnumeratedTypes.push_back(*(yyval.Type)); ;} break; case 134: -#line 496 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 569 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Structure type? - (yyvsp[-1].String)->insert(0, "{ "); - *(yyvsp[-1].String) += " }"; - (yyval.Type).newTy = (yyvsp[-1].String); - (yyval.Type).oldTy = StructTy; + std::string newTy("{"); + for (unsigned i = 0; i < (yyvsp[-1].TypeVec)->size(); ++i) { + if (i != 0) + newTy += ", "; + newTy += (*(yyvsp[-1].TypeVec))[i]->getNewTy(); + } + newTy += "}"; + (yyval.Type) = new TypeInfo(new std::string(newTy), StructTy, (yyvsp[-1].TypeVec)); + EnumeratedTypes.push_back(*(yyval.Type)); ;} break; case 135: -#line 502 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 580 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Empty structure type? - (yyval.Type).newTy = new std::string("{}"); - (yyval.Type).oldTy = StructTy; + (yyval.Type) = new TypeInfo(new std::string("{}"), StructTy, new TypeList()); + EnumeratedTypes.push_back(*(yyval.Type)); ;} break; case 136: -#line 506 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 584 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Packed Structure type? - (yyvsp[-2].String)->insert(0, "<{ "); - *(yyvsp[-2].String) += " }>"; - (yyval.Type).newTy = (yyvsp[-2].String); - (yyval.Type).oldTy = StructTy; + std::string newTy("<{"); + for (unsigned i = 0; i < (yyvsp[-2].TypeVec)->size(); ++i) { + if (i != 0) + newTy += ", "; + newTy += (*(yyvsp[-2].TypeVec))[i]->getNewTy(); + } + newTy += "}>"; + (yyval.Type) = new TypeInfo(new std::string(newTy), PackedStructTy, (yyvsp[-2].TypeVec)); + EnumeratedTypes.push_back(*(yyval.Type)); ;} break; case 137: -#line 512 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 595 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Empty packed structure type? - (yyval.Type).newTy = new std::string("<{}>"); - (yyval.Type).oldTy = StructTy; + (yyval.Type) = new TypeInfo(new std::string("<{}>"), PackedStructTy, new TypeList()); + EnumeratedTypes.push_back(*(yyval.Type)); ;} break; case 138: -#line 516 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 599 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Pointer type? - *(yyvsp[-1].Type).newTy += '*'; - (yyval.Type).elemTy = (yyvsp[-1].Type).oldTy; - (yyvsp[-1].Type).oldTy = PointerTy; - (yyval.Type) = (yyvsp[-1].Type); + (yyval.Type) = (yyvsp[-1].Type)->getPointerType(); + EnumeratedTypes.push_back(*(yyval.Type)); ;} break; case 139: -#line 527 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 608 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - (yyval.String) = (yyvsp[0].Type).newTy; + (yyval.TypeVec) = new TypeList(); + (yyval.TypeVec)->push_back((yyvsp[0].Type)); ;} break; case 140: -#line 530 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 612 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - *(yyvsp[-2].String) += ", " + *(yyvsp[0].Type).newTy; - delete (yyvsp[0].Type).newTy; - (yyval.String) = (yyvsp[-2].String); + (yyval.TypeVec) = (yyvsp[-2].TypeVec); + (yyval.TypeVec)->push_back((yyvsp[0].Type)); ;} break; case 142: -#line 539 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 620 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - *(yyvsp[-2].String) += ", ..."; + (yyval.TypeVec) = (yyvsp[-2].TypeVec); + (yyval.TypeVec)->push_back(new TypeInfo("void",VoidTy)); delete (yyvsp[0].String); - (yyval.String) = (yyvsp[-2].String); ;} break; case 143: -#line 544 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 625 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - (yyval.String) = (yyvsp[0].String); + (yyval.TypeVec) = new TypeList(); + (yyval.TypeVec)->push_back(new TypeInfo("void",VoidTy)); + delete (yyvsp[0].String); ;} break; case 144: -#line 547 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 630 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - (yyval.String) = new std::string(); + (yyval.TypeVec) = new TypeList(); ;} break; case 145: -#line 557 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 640 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Nonempty unsized arr (yyval.Const).type = (yyvsp[-3].Type); - (yyval.Const).cnst = new std::string(*(yyvsp[-3].Type).newTy); + (yyval.Const).cnst = new std::string((yyvsp[-3].Type)->getNewTy()); *(yyval.Const).cnst += " [ " + *(yyvsp[-1].String) + " ]"; delete (yyvsp[-1].String); ;} break; case 146: -#line 563 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 646 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Const).type = (yyvsp[-2].Type); - (yyval.Const).cnst = new std::string(*(yyvsp[-2].Type).newTy); + (yyval.Const).cnst = new std::string((yyvsp[-2].Type)->getNewTy()); *(yyval.Const).cnst += "[ ]"; ;} break; case 147: -#line 568 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 651 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Const).type = (yyvsp[-2].Type); - (yyval.Const).cnst = new std::string(*(yyvsp[-2].Type).newTy); + (yyval.Const).cnst = new std::string((yyvsp[-2].Type)->getNewTy()); *(yyval.Const).cnst += " c" + *(yyvsp[0].String); delete (yyvsp[0].String); ;} break; case 148: -#line 574 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 657 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Nonempty unsized arr (yyval.Const).type = (yyvsp[-3].Type); - (yyval.Const).cnst = new std::string(*(yyvsp[-3].Type).newTy); + (yyval.Const).cnst = new std::string((yyvsp[-3].Type)->getNewTy()); *(yyval.Const).cnst += " < " + *(yyvsp[-1].String) + " >"; delete (yyvsp[-1].String); ;} break; case 149: -#line 580 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 663 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Const).type = (yyvsp[-3].Type); - (yyval.Const).cnst = new std::string(*(yyvsp[-3].Type).newTy); + (yyval.Const).cnst = new std::string((yyvsp[-3].Type)->getNewTy()); *(yyval.Const).cnst += " { " + *(yyvsp[-1].String) + " }"; delete (yyvsp[-1].String); ;} break; case 150: -#line 586 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 669 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Const).type = (yyvsp[-2].Type); - (yyval.Const).cnst = new std::string(*(yyvsp[-2].Type).newTy); + (yyval.Const).cnst = new std::string((yyvsp[-2].Type)->getNewTy()); *(yyval.Const).cnst += " {}"; ;} break; case 151: -#line 591 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 674 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Const).type = (yyvsp[-1].Type); - (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy); + (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy()); *(yyval.Const).cnst += " " + *(yyvsp[0].String); delete (yyvsp[0].String); ;} break; case 152: -#line 597 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 680 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Const).type = (yyvsp[-1].Type); - (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy); + (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy()); *(yyval.Const).cnst += " " + *(yyvsp[0].String); delete (yyvsp[0].String); ;} break; case 153: -#line 603 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 686 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { + std::string Name = getUniqueName((yyvsp[0].String),(yyvsp[-1].Type)); (yyval.Const).type = (yyvsp[-1].Type); - (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy); - *(yyval.Const).cnst += " " + *(yyvsp[0].String); + (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy()); + *(yyval.Const).cnst += " " + Name; delete (yyvsp[0].String); ;} break; case 154: -#line 609 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 693 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Const).type = (yyvsp[-1].Type); - (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy); + (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy()); *(yyval.Const).cnst += " " + *(yyvsp[0].String); delete (yyvsp[0].String); ;} break; case 155: -#line 615 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 699 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Const).type = (yyvsp[-1].Type); - (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy); + (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy()); *(yyval.Const).cnst += " " + *(yyvsp[0].String); delete (yyvsp[0].String); ;} break; case 156: -#line 621 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 705 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // integral constants (yyval.Const).type = (yyvsp[-1].Type); - (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy); + (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy()); *(yyval.Const).cnst += " " + *(yyvsp[0].String); delete (yyvsp[0].String); ;} break; case 157: -#line 627 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 711 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // integral constants (yyval.Const).type = (yyvsp[-1].Type); - (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy); + (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy()); *(yyval.Const).cnst += " " + *(yyvsp[0].String); delete (yyvsp[0].String); ;} break; case 158: -#line 633 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 717 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Boolean constants (yyval.Const).type = (yyvsp[-1].Type); - (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy); + (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy()); *(yyval.Const).cnst += " " + *(yyvsp[0].String); delete (yyvsp[0].String); ;} break; case 159: -#line 639 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 723 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Boolean constants (yyval.Const).type = (yyvsp[-1].Type); - (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy); + (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy()); *(yyval.Const).cnst += " " + *(yyvsp[0].String); delete (yyvsp[0].String); ;} break; case 160: -#line 645 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 729 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Float & Double constants (yyval.Const).type = (yyvsp[-1].Type); - (yyval.Const).cnst = new std::string(*(yyvsp[-1].Type).newTy); + (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy()); *(yyval.Const).cnst += " " + *(yyvsp[0].String); delete (yyvsp[0].String); ;} break; case 161: -#line 653 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 737 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { std::string source = *(yyvsp[-3].Const).cnst; - TypeInfo DstTy = (yyvsp[-1].Type); - ResolveType(DstTy); + TypeInfo* DstTy = ResolveType((yyvsp[-1].Type)); if (*(yyvsp[-5].String) == "cast") { // Call getCastUpgrade to upgrade the old cast - (yyval.String) = new std::string(getCastUpgrade(source, (yyvsp[-3].Const).type, (yyvsp[-1].Type), true)); + (yyval.String) = new std::string(getCastUpgrade(source, (yyvsp[-3].Const).type, DstTy, true)); } else { // Nothing to upgrade, just create the cast constant expr (yyval.String) = new std::string(*(yyvsp[-5].String)); - *(yyval.String) += "( " + source + " to " + *(yyvsp[-1].Type).newTy + ")"; + *(yyval.String) += "( " + source + " to " + (yyvsp[-1].Type)->getNewTy() + ")"; } - delete (yyvsp[-5].String); (yyvsp[-3].Const).destroy(); delete (yyvsp[-2].String); (yyvsp[-1].Type).destroy(); + delete (yyvsp[-5].String); (yyvsp[-3].Const).destroy(); delete (yyvsp[-2].String); delete (yyvsp[-1].Type); ;} break; case 162: -#line 667 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 750 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-4].String) += "(" + *(yyvsp[-2].Const).cnst; for (unsigned i = 0; i < (yyvsp[-1].ValList)->size(); ++i) { @@ -2857,7 +2939,7 @@ break; case 163: -#line 679 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 762 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-7].String) += "(" + *(yyvsp[-5].Const).cnst + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")"; (yyvsp[-5].Const).destroy(); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy(); @@ -2866,7 +2948,7 @@ break; case 164: -#line 684 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 767 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { const char* op = getDivRemOpcode(*(yyvsp[-5].String), (yyvsp[-3].Const).type); (yyval.String) = new std::string(op); @@ -2876,7 +2958,7 @@ break; case 165: -#line 690 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 773 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-5].String) += "(" + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")"; (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy(); @@ -2885,7 +2967,7 @@ break; case 166: -#line 695 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 778 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-5].String) = getCompareOp(*(yyvsp[-5].String), (yyvsp[-3].Const).type); *(yyvsp[-5].String) += "(" + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")"; @@ -2895,7 +2977,7 @@ break; case 167: -#line 701 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 784 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-6].String) += "(" + *(yyvsp[-5].String) + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")"; delete (yyvsp[-5].String); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy(); @@ -2904,7 +2986,7 @@ break; case 168: -#line 706 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 789 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-6].String) += "(" + *(yyvsp[-5].String) + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")"; delete (yyvsp[-5].String); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy(); @@ -2913,11 +2995,11 @@ break; case 169: -#line 711 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 794 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { const char* shiftop = (yyvsp[-5].String)->c_str(); if (*(yyvsp[-5].String) == "shr") - shiftop = ((yyvsp[-3].Const).type.isUnsigned()) ? "lshr" : "ashr"; + shiftop = ((yyvsp[-3].Const).type->isUnsigned()) ? "lshr" : "ashr"; (yyval.String) = new std::string(shiftop); *(yyval.String) += "(" + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")"; delete (yyvsp[-5].String); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy(); @@ -2925,7 +3007,7 @@ break; case 170: -#line 719 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 802 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-5].String) += "(" + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")"; (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy(); @@ -2934,7 +3016,7 @@ break; case 171: -#line 724 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 807 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-7].String) += "(" + *(yyvsp[-5].Const).cnst + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")"; (yyvsp[-5].Const).destroy(); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy(); @@ -2943,7 +3025,7 @@ break; case 172: -#line 729 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 812 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-7].String) += "(" + *(yyvsp[-5].Const).cnst + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")"; (yyvsp[-5].Const).destroy(); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy(); @@ -2952,7 +3034,7 @@ break; case 173: -#line 739 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 822 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-2].String) += ", " + *(yyvsp[0].Const).cnst; (yyvsp[0].Const).destroy(); @@ -2961,25 +3043,25 @@ break; case 174: -#line 744 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 827 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(*(yyvsp[0].Const).cnst); (yyvsp[0].Const).destroy(); ;} break; case 177: -#line 759 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 842 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { ;} break; case 178: -#line 764 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 847 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = 0; ;} break; case 179: -#line 767 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 850 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *O << *(yyvsp[0].String) << '\n'; delete (yyvsp[0].String); @@ -2988,7 +3070,7 @@ break; case 180: -#line 772 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 855 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *O << "module asm " << ' ' << *(yyvsp[0].String) << '\n'; (yyval.String) = 0; @@ -2996,7 +3078,7 @@ break; case 181: -#line 776 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 859 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *O << "implementation\n"; (yyval.String) = 0; @@ -3004,33 +3086,31 @@ break; case 182: -#line 780 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 863 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = 0; ;} break; case 184: -#line 782 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 865 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = (yyvsp[0].String); *(yyval.String) = "external"; ;} break; case 185: -#line 785 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 868 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - EnumeratedTypes.push_back((yyvsp[0].Type)); + EnumeratedTypes.push_back(*(yyvsp[0].Type)); if (!(yyvsp[-2].String)->empty()) { - NamedTypes[*(yyvsp[-2].String)].newTy = new std::string(*(yyvsp[0].Type).newTy); - NamedTypes[*(yyvsp[-2].String)].oldTy = (yyvsp[0].Type).oldTy; - NamedTypes[*(yyvsp[-2].String)].elemTy = (yyvsp[0].Type).elemTy; + NamedTypes[*(yyvsp[-2].String)] = *(yyvsp[0].Type); *O << *(yyvsp[-2].String) << " = "; } - *O << "type " << *(yyvsp[0].Type).newTy << '\n'; - delete (yyvsp[-2].String); delete (yyvsp[-1].String); (yyvsp[0].Type).destroy(); + *O << "type " << (yyvsp[0].Type)->getNewTy() << '\n'; + delete (yyvsp[-2].String); delete (yyvsp[-1].String); (yyval.String) = 0; ;} break; case 186: -#line 797 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 878 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Function prototypes can be in const pool *O << *(yyvsp[0].String) << '\n'; delete (yyvsp[0].String); @@ -3039,7 +3119,7 @@ break; case 187: -#line 802 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 883 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Asm blocks can be in the const pool *O << *(yyvsp[-2].String) << ' ' << *(yyvsp[-1].String) << ' ' << *(yyvsp[0].String) << '\n'; delete (yyvsp[-2].String); delete (yyvsp[-1].String); delete (yyvsp[0].String); @@ -3048,59 +3128,63 @@ break; case 188: -#line 807 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 888 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-4].String)->empty()) { - *O << *(yyvsp[-4].String) << " = "; - Globals[*(yyvsp[-4].String)] = (yyvsp[-1].Const).type.clone(); + std::string Name = getUniqueName((yyvsp[-4].String),(yyvsp[-1].Const).type); + *O << Name << " = "; + Globals[Name] = *(yyvsp[-1].Const).type; } *O << *(yyvsp[-3].String) << ' ' << *(yyvsp[-2].String) << ' ' << *(yyvsp[-1].Const).cnst << ' ' << *(yyvsp[0].String) << '\n'; - delete (yyvsp[-4].String); delete (yyvsp[-3].String); delete (yyvsp[-2].String); (yyvsp[-1].Const).destroy(); delete (yyvsp[0].String); + delete (yyvsp[-4].String); delete (yyvsp[-3].String); delete (yyvsp[-2].String); delete (yyvsp[0].String); (yyval.String) = 0; ;} break; case 189: -#line 816 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 898 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-4].String)->empty()) { - *O << *(yyvsp[-4].String) << " = "; - Globals[*(yyvsp[-4].String)] = (yyvsp[-1].Type).clone(); + std::string Name = getUniqueName((yyvsp[-4].String),(yyvsp[-1].Type)); + *O << Name << " = "; + Globals[Name] = *(yyvsp[-1].Type); } - *O << *(yyvsp[-3].String) << ' ' << *(yyvsp[-2].String) << ' ' << *(yyvsp[-1].Type).newTy << ' ' << *(yyvsp[0].String) << '\n'; - delete (yyvsp[-4].String); delete (yyvsp[-3].String); delete (yyvsp[-2].String); (yyvsp[-1].Type).destroy(); delete (yyvsp[0].String); + *O << *(yyvsp[-3].String) << ' ' << *(yyvsp[-2].String) << ' ' << (yyvsp[-1].Type)->getNewTy() << ' ' << *(yyvsp[0].String) << '\n'; + delete (yyvsp[-4].String); delete (yyvsp[-3].String); delete (yyvsp[-2].String); delete (yyvsp[0].String); (yyval.String) = 0; ;} break; case 190: -#line 825 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 908 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-4].String)->empty()) { - *O << *(yyvsp[-4].String) << " = "; - Globals[*(yyvsp[-4].String)] = (yyvsp[-1].Type).clone(); + std::string Name = getUniqueName((yyvsp[-4].String),(yyvsp[-1].Type)); + *O << Name << " = "; + Globals[Name] = *(yyvsp[-1].Type); } - *O << *(yyvsp[-3].String) << ' ' << *(yyvsp[-2].String) << ' ' << *(yyvsp[-1].Type).newTy << ' ' << *(yyvsp[0].String) << '\n'; - delete (yyvsp[-4].String); delete (yyvsp[-3].String); delete (yyvsp[-2].String); (yyvsp[-1].Type).destroy(); delete (yyvsp[0].String); + *O << *(yyvsp[-3].String) << ' ' << *(yyvsp[-2].String) << ' ' << (yyvsp[-1].Type)->getNewTy() << ' ' << *(yyvsp[0].String) << '\n'; + delete (yyvsp[-4].String); delete (yyvsp[-3].String); delete (yyvsp[-2].String); delete (yyvsp[0].String); (yyval.String) = 0; ;} break; case 191: -#line 834 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 918 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-4].String)->empty()) { - *O << *(yyvsp[-4].String) << " = "; - Globals[*(yyvsp[-4].String)] = (yyvsp[-1].Type).clone(); + std::string Name = getUniqueName((yyvsp[-4].String),(yyvsp[-1].Type)); + *O << Name << " = "; + Globals[Name] = *(yyvsp[-1].Type); } - *O << *(yyvsp[-3].String) << ' ' << *(yyvsp[-2].String) << ' ' << *(yyvsp[-1].Type).newTy << ' ' << *(yyvsp[0].String) << '\n'; - delete (yyvsp[-4].String); delete (yyvsp[-3].String); delete (yyvsp[-2].String); (yyvsp[-1].Type).destroy(); delete (yyvsp[0].String); + *O << *(yyvsp[-3].String) << ' ' << *(yyvsp[-2].String) << ' ' << (yyvsp[-1].Type)->getNewTy() << ' ' << *(yyvsp[0].String) << '\n'; + delete (yyvsp[-4].String); delete (yyvsp[-3].String); delete (yyvsp[-2].String); delete (yyvsp[0].String); (yyval.String) = 0; ;} break; case 192: -#line 843 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 928 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *O << *(yyvsp[-1].String) << ' ' << *(yyvsp[0].String) << '\n'; delete (yyvsp[-1].String); delete (yyvsp[0].String); @@ -3109,7 +3193,7 @@ break; case 193: -#line 848 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 933 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *O << *(yyvsp[-2].String) << " = " << *(yyvsp[0].String) << '\n'; delete (yyvsp[-2].String); delete (yyvsp[0].String); @@ -3118,14 +3202,14 @@ break; case 194: -#line 853 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 938 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = 0; ;} break; case 198: -#line 863 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 948 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-2].String) += " = " + *(yyvsp[0].String); delete (yyvsp[0].String); @@ -3134,7 +3218,7 @@ break; case 199: -#line 868 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 953 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-2].String) += " = " + *(yyvsp[0].String); if (*(yyvsp[0].String) == "64") @@ -3145,7 +3229,7 @@ break; case 200: -#line 875 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 960 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-2].String) += " = " + *(yyvsp[0].String); delete (yyvsp[0].String); @@ -3154,7 +3238,7 @@ break; case 201: -#line 880 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 965 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-2].String) += " = " + *(yyvsp[0].String); delete (yyvsp[0].String); @@ -3163,7 +3247,7 @@ break; case 202: -#line 887 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 972 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyvsp[-1].String)->insert(0, "[ "); *(yyvsp[-1].String) += " ]"; @@ -3172,7 +3256,7 @@ break; case 203: -#line 894 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 979 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-2].String) += ", " + *(yyvsp[0].String); delete (yyvsp[0].String); @@ -3181,29 +3265,31 @@ break; case 205: -#line 900 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 985 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 209: -#line 909 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 994 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 210: -#line 911 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 996 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - (yyval.String) = (yyvsp[-1].Type).newTy; - if (!(yyvsp[0].String)->empty()) - *(yyval.String) += " " + *(yyvsp[0].String); + (yyval.String) = new std::string((yyvsp[-1].Type)->getNewTy()); + if (!(yyvsp[0].String)->empty()) { + std::string Name = getUniqueName((yyvsp[0].String), (yyvsp[-1].Type)); + *(yyval.String) += " " + Name; + } delete (yyvsp[0].String); ;} break; case 211: -#line 918 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1005 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-2].String) += ", " + *(yyvsp[0].String); delete (yyvsp[0].String); @@ -3211,21 +3297,21 @@ break; case 212: -#line 922 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1009 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = (yyvsp[0].String); ;} break; case 213: -#line 926 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1013 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = (yyvsp[0].String); ;} break; case 214: -#line 929 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1016 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-2].String) += ", ..."; (yyval.String) = (yyvsp[-2].String); @@ -3234,31 +3320,30 @@ break; case 215: -#line 934 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1021 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = (yyvsp[0].String); ;} break; case 216: -#line 937 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1024 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 217: -#line 940 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1027 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-7].String)->empty()) { *(yyvsp[-7].String) += " "; } - *(yyvsp[-7].String) += *(yyvsp[-6].Type).newTy + " " + *(yyvsp[-5].String) + "(" + *(yyvsp[-3].String) + ")"; + *(yyvsp[-7].String) += (yyvsp[-6].Type)->getNewTy() + " " + *(yyvsp[-5].String) + "(" + *(yyvsp[-3].String) + ")"; if (!(yyvsp[-1].String)->empty()) { *(yyvsp[-7].String) += " " + *(yyvsp[-1].String); } if (!(yyvsp[0].String)->empty()) { *(yyvsp[-7].String) += " " + *(yyvsp[0].String); } - (yyvsp[-6].Type).destroy(); delete (yyvsp[-5].String); delete (yyvsp[-3].String); delete (yyvsp[-1].String); @@ -3268,17 +3353,17 @@ break; case 218: -#line 959 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1045 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string("{"); delete (yyvsp[0].String); ;} break; case 219: -#line 960 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1046 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string ("{"); ;} break; case 220: -#line 963 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1049 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *O << "define "; if (!(yyvsp[-2].String)->empty()) { @@ -3291,32 +3376,33 @@ break; case 221: -#line 974 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1060 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string("}"); delete (yyvsp[0].String); ;} break; case 222: -#line 975 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1061 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string("}"); ;} break; case 223: -#line 977 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1063 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { if ((yyvsp[-1].String)) *O << *(yyvsp[-1].String); *O << *(yyvsp[0].String) << "\n\n"; + delete (yyvsp[-2].String); delete (yyvsp[-1].String); delete (yyvsp[0].String); (yyval.String) = 0; ;} break; case 224: -#line 985 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1072 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 227: -#line 991 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1078 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-1].String)->empty()) *(yyvsp[-2].String) += " " + *(yyvsp[-1].String); @@ -3328,12 +3414,12 @@ break; case 228: -#line 1004 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1091 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 238: -#line 1010 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1097 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyvsp[-1].String)->insert(0, "<"); *(yyvsp[-1].String) += ">"; @@ -3342,7 +3428,7 @@ break; case 240: -#line 1016 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1103 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-3].String)->empty()) { *(yyvsp[-4].String) += " " + *(yyvsp[-3].String); @@ -3354,57 +3440,58 @@ break; case 243: -#line 1029 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1116 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Value).val = (yyvsp[0].String); (yyval.Value).constant = false; - (yyval.Value).type.newTy = 0; - (yyval.Value).type.oldTy = UnresolvedTy; + (yyval.Value).type = new TypeInfo(); ;} break; case 244: -#line 1035 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1121 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Value).val = (yyvsp[0].String); (yyval.Value).constant = true; - (yyval.Value).type.newTy = 0; - (yyval.Value).type.oldTy = UnresolvedTy; + (yyval.Value).type = new TypeInfo(); ;} break; case 245: -#line 1046 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1131 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { + std::string Name = getUniqueName((yyvsp[0].Value).val, (yyvsp[-1].Type)); (yyval.Value) = (yyvsp[0].Value); + delete (yyval.Value).val; + delete (yyval.Value).type; + (yyval.Value).val = new std::string((yyvsp[-1].Type)->getNewTy() + " " + Name); (yyval.Value).type = (yyvsp[-1].Type); - (yyval.Value).val->insert(0, *(yyvsp[-1].Type).newTy + " "); ;} break; case 246: -#line 1052 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1140 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = 0; ;} break; case 247: -#line 1055 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1143 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Do not allow functions with 0 basic blocks (yyval.String) = 0; ;} break; case 248: -#line 1063 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1151 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = 0; ;} break; case 249: -#line 1067 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1155 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *O << " " << *(yyvsp[0].String) << '\n'; delete (yyvsp[0].String); @@ -3413,14 +3500,14 @@ break; case 250: -#line 1072 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1160 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = 0; ;} break; case 251: -#line 1075 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1163 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *O << *(yyvsp[0].String) << '\n'; delete (yyvsp[0].String); @@ -3429,12 +3516,12 @@ break; case 253: -#line 1081 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1169 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = (yyvsp[0].String); *(yyval.String) = "unwind"; ;} break; case 254: -#line 1083 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1171 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Return with a result... *O << " " << *(yyvsp[-1].String) << ' ' << *(yyvsp[0].Value).val << '\n'; delete (yyvsp[-1].String); (yyvsp[0].Value).destroy(); @@ -3443,63 +3530,69 @@ break; case 255: -#line 1088 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1176 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Return with no result... - *O << " " << *(yyvsp[-1].String) << ' ' << *(yyvsp[0].Type).newTy << '\n'; - delete (yyvsp[-1].String); (yyvsp[0].Type).destroy(); + *O << " " << *(yyvsp[-1].String) << ' ' << (yyvsp[0].Type)->getNewTy() << '\n'; + delete (yyvsp[-1].String); delete (yyvsp[0].Type); (yyval.String) = 0; ;} break; case 256: -#line 1093 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1181 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Unconditional Branch... - *O << " " << *(yyvsp[-2].String) << ' ' << *(yyvsp[-1].Type).newTy << ' ' << *(yyvsp[0].Value).val << '\n'; - delete (yyvsp[-2].String); (yyvsp[-1].Type).destroy(); (yyvsp[0].Value).destroy(); + *O << " " << *(yyvsp[-2].String) << ' ' << (yyvsp[-1].Type)->getNewTy() << ' ' << *(yyvsp[0].Value).val << '\n'; + delete (yyvsp[-2].String); delete (yyvsp[-1].Type); (yyvsp[0].Value).destroy(); (yyval.String) = 0; ;} break; case 257: -#line 1098 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1186 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - *O << " " << *(yyvsp[-8].String) << ' ' << *(yyvsp[-7].Type).newTy << ' ' << *(yyvsp[-6].Value).val << ", " - << *(yyvsp[-4].Type).newTy << ' ' << *(yyvsp[-3].Value).val << ", " << *(yyvsp[-1].Type).newTy << ' ' + std::string Name = getUniqueName((yyvsp[-6].Value).val, (yyvsp[-7].Type)); + *O << " " << *(yyvsp[-8].String) << ' ' << (yyvsp[-7].Type)->getNewTy() << ' ' << Name << ", " + << (yyvsp[-4].Type)->getNewTy() << ' ' << *(yyvsp[-3].Value).val << ", " << (yyvsp[-1].Type)->getNewTy() << ' ' << *(yyvsp[0].Value).val << '\n'; - delete (yyvsp[-8].String); (yyvsp[-7].Type).destroy(); (yyvsp[-6].Value).destroy(); (yyvsp[-4].Type).destroy(); (yyvsp[-3].Value).destroy(); - (yyvsp[-1].Type).destroy(); (yyvsp[0].Value).destroy(); + delete (yyvsp[-8].String); delete (yyvsp[-7].Type); (yyvsp[-6].Value).destroy(); delete (yyvsp[-4].Type); (yyvsp[-3].Value).destroy(); + delete (yyvsp[-1].Type); (yyvsp[0].Value).destroy(); (yyval.String) = 0; ;} break; case 258: -#line 1106 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1195 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - *O << " " << *(yyvsp[-8].String) << ' ' << *(yyvsp[-7].Type).newTy << ' ' << *(yyvsp[-6].Value).val << ", " - << *(yyvsp[-4].Type).newTy << ' ' << *(yyvsp[-3].Value).val << " [" << *(yyvsp[-1].String) << " ]\n"; - delete (yyvsp[-8].String); (yyvsp[-7].Type).destroy(); (yyvsp[-6].Value).destroy(); (yyvsp[-4].Type).destroy(); (yyvsp[-3].Value).destroy(); + std::string Name = getUniqueName((yyvsp[-6].Value).val, (yyvsp[-7].Type)); + *O << " " << *(yyvsp[-8].String) << ' ' << (yyvsp[-7].Type)->getNewTy() << ' ' << Name << ", " + << (yyvsp[-4].Type)->getNewTy() << ' ' << *(yyvsp[-3].Value).val << " [" << *(yyvsp[-1].String) << " ]\n"; + delete (yyvsp[-8].String); delete (yyvsp[-7].Type); (yyvsp[-6].Value).destroy(); delete (yyvsp[-4].Type); (yyvsp[-3].Value).destroy(); delete (yyvsp[-1].String); (yyval.String) = 0; ;} break; case 259: -#line 1113 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1203 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - *O << " " << *(yyvsp[-7].String) << ' ' << *(yyvsp[-6].Type).newTy << ' ' << *(yyvsp[-5].Value).val << ", " - << *(yyvsp[-3].Type).newTy << ' ' << *(yyvsp[-2].Value).val << "[]\n"; - delete (yyvsp[-7].String); (yyvsp[-6].Type).destroy(); (yyvsp[-5].Value).destroy(); (yyvsp[-3].Type).destroy(); (yyvsp[-2].Value).destroy(); + std::string Name = getUniqueName((yyvsp[-5].Value).val, (yyvsp[-6].Type)); + *O << " " << *(yyvsp[-7].String) << ' ' << (yyvsp[-6].Type)->getNewTy() << ' ' << Name << ", " + << (yyvsp[-3].Type)->getNewTy() << ' ' << *(yyvsp[-2].Value).val << "[]\n"; + delete (yyvsp[-7].String); delete (yyvsp[-6].Type); (yyvsp[-5].Value).destroy(); delete (yyvsp[-3].Type); (yyvsp[-2].Value).destroy(); (yyval.String) = 0; ;} break; case 260: -#line 1120 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1211 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { + TypeInfo* ResTy = getFunctionReturnType((yyvsp[-10].Type)); *O << " "; - if (!(yyvsp[-13].String)->empty()) - *O << *(yyvsp[-13].String) << " = "; - *O << *(yyvsp[-12].String) << ' ' << *(yyvsp[-11].String) << ' ' << *(yyvsp[-10].Type).newTy << ' ' << *(yyvsp[-9].Value).val << " ("; + if (!(yyvsp[-13].String)->empty()) { + std::string Name = getUniqueName((yyvsp[-13].String), ResTy); + *O << Name << " = "; + } + *O << *(yyvsp[-12].String) << ' ' << *(yyvsp[-11].String) << ' ' << (yyvsp[-10].Type)->getNewTy() << ' ' << *(yyvsp[-9].Value).val << " ("; for (unsigned i = 0; i < (yyvsp[-7].ValList)->size(); ++i) { ValueInfo& VI = (*(yyvsp[-7].ValList))[i]; *O << *VI.val; @@ -3507,17 +3600,17 @@ *O << ", "; VI.destroy(); } - *O << ") " << *(yyvsp[-5].String) << ' ' << *(yyvsp[-4].Type).newTy << ' ' << *(yyvsp[-3].Value).val << ' ' - << *(yyvsp[-2].String) << ' ' << *(yyvsp[-1].Type).newTy << ' ' << *(yyvsp[0].Value).val << '\n'; - delete (yyvsp[-13].String); delete (yyvsp[-12].String); delete (yyvsp[-11].String); (yyvsp[-10].Type).destroy(); (yyvsp[-9].Value).destroy(); delete (yyvsp[-7].ValList); - delete (yyvsp[-5].String); (yyvsp[-4].Type).destroy(); (yyvsp[-3].Value).destroy(); delete (yyvsp[-2].String); (yyvsp[-1].Type).destroy(); + *O << ") " << *(yyvsp[-5].String) << ' ' << (yyvsp[-4].Type)->getNewTy() << ' ' << *(yyvsp[-3].Value).val << ' ' + << *(yyvsp[-2].String) << ' ' << (yyvsp[-1].Type)->getNewTy() << ' ' << *(yyvsp[0].Value).val << '\n'; + delete (yyvsp[-13].String); delete (yyvsp[-12].String); delete (yyvsp[-11].String); delete (yyvsp[-10].Type); (yyvsp[-9].Value).destroy(); delete (yyvsp[-7].ValList); + delete (yyvsp[-5].String); delete (yyvsp[-4].Type); (yyvsp[-3].Value).destroy(); delete (yyvsp[-2].String); delete (yyvsp[-1].Type); (yyvsp[0].Value).destroy(); (yyval.String) = 0; ;} break; case 261: -#line 1139 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1233 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *O << " " << *(yyvsp[0].String) << '\n'; delete (yyvsp[0].String); @@ -3526,7 +3619,7 @@ break; case 262: -#line 1144 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1238 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *O << " " << *(yyvsp[0].String) << '\n'; delete (yyvsp[0].String); @@ -3535,26 +3628,27 @@ break; case 263: -#line 1150 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1244 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - *(yyvsp[-5].String) += " " + *(yyvsp[-4].Type).newTy + " " + *(yyvsp[-3].String) + ", " + *(yyvsp[-1].Type).newTy + " " + *(yyvsp[0].Value).val; - (yyvsp[-4].Type).destroy(); delete (yyvsp[-3].String); (yyvsp[-1].Type).destroy(); (yyvsp[0].Value).destroy(); + *(yyvsp[-5].String) += " " + (yyvsp[-4].Type)->getNewTy() + " " + *(yyvsp[-3].String) + ", " + (yyvsp[-1].Type)->getNewTy() + " " + + *(yyvsp[0].Value).val; + delete (yyvsp[-4].Type); delete (yyvsp[-3].String); delete (yyvsp[-1].Type); (yyvsp[0].Value).destroy(); (yyval.String) = (yyvsp[-5].String); ;} break; case 264: -#line 1155 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1250 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - (yyvsp[-3].String)->insert(0, *(yyvsp[-4].Type).newTy + " " ); - *(yyvsp[-3].String) += ", " + *(yyvsp[-1].Type).newTy + " " + *(yyvsp[0].Value).val; - (yyvsp[-4].Type).destroy(); (yyvsp[-1].Type).destroy(); (yyvsp[0].Value).destroy(); + (yyvsp[-3].String)->insert(0, (yyvsp[-4].Type)->getNewTy() + " " ); + *(yyvsp[-3].String) += ", " + (yyvsp[-1].Type)->getNewTy() + " " + *(yyvsp[0].Value).val; + delete (yyvsp[-4].Type); delete (yyvsp[-1].Type); (yyvsp[0].Value).destroy(); (yyval.String) = (yyvsp[-3].String); ;} break; case 265: -#line 1163 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1258 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-1].String)->empty()) { if (deleteUselessCastFlag && *deleteUselessCastName == *(yyvsp[-1].String)) { @@ -3562,64 +3656,67 @@ (yyvsp[-1].String)->insert(0, "; "); // don't actually delete it, just comment it out delete deleteUselessCastName; } else { - *(yyvsp[-1].String) += " = "; + // Get a unique name for the name of this value, based on its type. + *(yyvsp[-1].String) = getUniqueName((yyvsp[-1].String), (yyvsp[0].Value).type) + " = "; } } - *(yyvsp[-1].String) += *(yyvsp[0].String); - delete (yyvsp[0].String); + *(yyvsp[-1].String) += *(yyvsp[0].Value).val; + (yyvsp[0].Value).destroy(); deleteUselessCastFlag = false; (yyval.String) = (yyvsp[-1].String); ;} break; case 266: -#line 1180 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1276 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Used for PHI nodes - (yyvsp[-3].Value).val->insert(0, *(yyvsp[-5].Type).newTy + "["); - *(yyvsp[-3].Value).val += "," + *(yyvsp[-1].Value).val + "]"; - (yyvsp[-5].Type).destroy(); (yyvsp[-1].Value).destroy(); - (yyval.String) = new std::string(*(yyvsp[-3].Value).val); - (yyvsp[-3].Value).destroy(); + std::string Name = getUniqueName((yyvsp[-3].Value).val, (yyvsp[-5].Type)); + Name.insert(0, (yyvsp[-5].Type)->getNewTy() + "["); + Name += "," + *(yyvsp[-1].Value).val + "]"; + (yyval.Value).val = new std::string(Name); + (yyval.Value).type = (yyvsp[-5].Type); + (yyvsp[-3].Value).destroy(); (yyvsp[-1].Value).destroy(); ;} break; case 267: -#line 1187 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1284 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - *(yyvsp[-6].String) += ", [" + *(yyvsp[-3].Value).val + "," + *(yyvsp[-1].Value).val + "]"; + std::string Name = getUniqueName((yyvsp[-3].Value).val, (yyvsp[-6].Value).type); + *(yyvsp[-6].Value).val += ", [" + Name + "," + *(yyvsp[-1].Value).val + "]"; (yyvsp[-3].Value).destroy(); (yyvsp[-1].Value).destroy(); - (yyval.String) = (yyvsp[-6].String); + (yyval.Value) = (yyvsp[-6].Value); ;} break; case 268: -#line 1195 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" - { +#line 1293 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" + { (yyval.ValList) = new ValueList(); (yyval.ValList)->push_back((yyvsp[0].Value)); ;} break; case 269: -#line 1199 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1297 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - (yyvsp[-2].ValList)->push_back((yyvsp[0].Value)); (yyval.ValList) = (yyvsp[-2].ValList); + (yyval.ValList)->push_back((yyvsp[0].Value)); ;} break; case 270: -#line 1206 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1304 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValList) = (yyvsp[0].ValList); ;} break; case 271: -#line 1207 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1305 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValList) = new ValueList(); ;} break; case 272: -#line 1211 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1309 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-1].String) += " " + *(yyvsp[0].String); delete (yyvsp[0].String); @@ -3628,92 +3725,108 @@ break; case 274: -#line 1219 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1317 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { const char* op = getDivRemOpcode(*(yyvsp[-4].String), (yyvsp[-3].Type)); - (yyval.String) = new std::string(op); - *(yyval.String) += " " + *(yyvsp[-3].Type).newTy + " " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val; - delete (yyvsp[-4].String); (yyvsp[-3].Type).destroy(); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy(); + std::string Name1 = getUniqueName((yyvsp[-2].Value).val, (yyvsp[-3].Type)); + std::string Name2 = getUniqueName((yyvsp[0].Value).val, (yyvsp[-3].Type)); + (yyval.Value).val = new std::string(op); + *(yyval.Value).val += " " + (yyvsp[-3].Type)->getNewTy() + " " + Name1 + ", " + Name2; + (yyval.Value).type = (yyvsp[-3].Type); + delete (yyvsp[-4].String); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy(); ;} break; case 275: -#line 1225 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1326 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - *(yyvsp[-4].String) += " " + *(yyvsp[-3].Type).newTy + " " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val; - (yyvsp[-3].Type).destroy(); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy(); - (yyval.String) = (yyvsp[-4].String); + std::string Name1 = getUniqueName((yyvsp[-2].Value).val, (yyvsp[-3].Type)); + std::string Name2 = getUniqueName((yyvsp[0].Value).val, (yyvsp[-3].Type)); + *(yyvsp[-4].String) += " " + (yyvsp[-3].Type)->getNewTy() + " " + Name1 + ", " + Name2; + (yyval.Value).val = (yyvsp[-4].String); + (yyval.Value).type = (yyvsp[-3].Type); + (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy(); ;} break; case 276: -#line 1230 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1334 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { + std::string Name1 = getUniqueName((yyvsp[-2].Value).val, (yyvsp[-3].Type)); + std::string Name2 = getUniqueName((yyvsp[0].Value).val, (yyvsp[-3].Type)); *(yyvsp[-4].String) = getCompareOp(*(yyvsp[-4].String), (yyvsp[-3].Type)); - *(yyvsp[-4].String) += " " + *(yyvsp[-3].Type).newTy + " " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val; - (yyvsp[-3].Type).destroy(); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy(); - (yyval.String) = (yyvsp[-4].String); + *(yyvsp[-4].String) += " " + (yyvsp[-3].Type)->getNewTy() + " " + Name1 + ", " + Name2; + (yyval.Value).val = (yyvsp[-4].String); + (yyval.Value).type = new TypeInfo("bool",BoolTy); + (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy(); ;} break; case 277: -#line 1236 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1343 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - *(yyvsp[-5].String) += " " + *(yyvsp[-4].String) + " " + *(yyvsp[-3].Type).newTy + " " + *(yyvsp[-2].Value).val + "," + *(yyvsp[0].Value).val; + std::string Name1 = getUniqueName((yyvsp[-2].Value).val, (yyvsp[-3].Type)); + std::string Name2 = getUniqueName((yyvsp[0].Value).val, (yyvsp[-3].Type)); + *(yyvsp[-5].String) += " " + *(yyvsp[-4].String) + " " + (yyvsp[-3].Type)->getNewTy() + " " + Name1 + "," + Name2; + (yyval.Value).val = (yyvsp[-5].String); + (yyval.Value).type = new TypeInfo("bool",BoolTy); delete (yyvsp[-4].String); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy(); - (yyval.String) = (yyvsp[-5].String); ;} break; case 278: -#line 1241 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1351 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - *(yyvsp[-5].String) += " " + *(yyvsp[-4].String) + " " + *(yyvsp[-3].Type).newTy + " " + *(yyvsp[-2].Value).val + "," + *(yyvsp[0].Value).val; + std::string Name1 = getUniqueName((yyvsp[-2].Value).val, (yyvsp[-3].Type)); + std::string Name2 = getUniqueName((yyvsp[0].Value).val, (yyvsp[-3].Type)); + *(yyvsp[-5].String) += " " + *(yyvsp[-4].String) + " " + (yyvsp[-3].Type)->getNewTy() + " " + Name1 + "," + Name2; + (yyval.Value).val = (yyvsp[-5].String); + (yyval.Value).type = new TypeInfo("bool",BoolTy); delete (yyvsp[-4].String); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy(); - (yyval.String) = (yyvsp[-5].String); ;} break; case 279: -#line 1246 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1359 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - *(yyvsp[-1].String) += " " + *(yyvsp[0].Value).val; - (yyvsp[0].Value).destroy(); - (yyval.String) = (yyvsp[-1].String); + (yyval.Value) = (yyvsp[0].Value); + (yyval.Value).val->insert(0, *(yyvsp[-1].String) + " "); + delete (yyvsp[-1].String); ;} break; case 280: -#line 1251 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1364 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { const char* shiftop = (yyvsp[-3].String)->c_str(); if (*(yyvsp[-3].String) == "shr") - shiftop = ((yyvsp[-2].Value).type.isUnsigned()) ? "lshr" : "ashr"; - (yyval.String) = new std::string(shiftop); - *(yyval.String) += " " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val; - delete (yyvsp[-3].String); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy(); + shiftop = ((yyvsp[-2].Value).type->isUnsigned()) ? "lshr" : "ashr"; + (yyval.Value).val = new std::string(shiftop); + *(yyval.Value).val += " " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val; + (yyval.Value).type = (yyvsp[-2].Value).type; + delete (yyvsp[-3].String); delete (yyvsp[-2].Value).val; (yyvsp[0].Value).destroy(); ;} break; case 281: -#line 1259 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1373 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { std::string source = *(yyvsp[-2].Value).val; - TypeInfo SrcTy = (yyvsp[-2].Value).type; - TypeInfo DstTy = (yyvsp[0].Type); - ResolveType(DstTy); - (yyval.String) = new std::string(); + TypeInfo* SrcTy = (yyvsp[-2].Value).type; + TypeInfo* DstTy = ResolveType((yyvsp[0].Type)); + (yyval.Value).val = new std::string(); if (*(yyvsp[-3].String) == "cast") { - *(yyval.String) += getCastUpgrade(source, SrcTy, DstTy, false); + *(yyval.Value).val += getCastUpgrade(source, SrcTy, DstTy, false); } else { - *(yyval.String) += *(yyvsp[-3].String) + " " + source + " to " + *DstTy.newTy; + *(yyval.Value).val += *(yyvsp[-3].String) + " " + source + " to " + DstTy->getNewTy(); } + (yyval.Value).type = (yyvsp[0].Type); // Check to see if this is a useless cast of a value to the same name // and the same type. Such casts will probably cause redefinition errors // when assembled and perform no code gen action so just remove them. if (*(yyvsp[-3].String) == "cast" || *(yyvsp[-3].String) == "bitcast") - if ((yyvsp[-2].Value).type.isInteger() && (yyvsp[0].Type).isInteger() && - (yyvsp[-2].Value).type.getBitWidth() == (yyvsp[0].Type).getBitWidth()) { + if ((yyvsp[-2].Value).type->isInteger() && DstTy->isInteger() && + (yyvsp[-2].Value).type->getBitWidth() == DstTy->getBitWidth()) { deleteUselessCastFlag = true; // Flag the "Inst" rule deleteUselessCastName = new std::string(*(yyvsp[-2].Value).val); // save the name size_t pos = deleteUselessCastName->find_first_of("%\"",0); @@ -3723,72 +3836,79 @@ } } delete (yyvsp[-3].String); (yyvsp[-2].Value).destroy(); - delete (yyvsp[-1].String); (yyvsp[0].Type).destroy(); + delete (yyvsp[-1].String); ;} break; case 282: -#line 1287 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1401 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-5].String) += " " + *(yyvsp[-4].Value).val + ", " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val; - (yyvsp[-4].Value).destroy(); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy(); - (yyval.String) = (yyvsp[-5].String); + (yyval.Value).val = (yyvsp[-5].String); + (yyval.Value).type = (yyvsp[-2].Value).type; + (yyvsp[-4].Value).destroy(); delete (yyvsp[-2].Value).val; (yyvsp[0].Value).destroy(); ;} break; case 283: -#line 1292 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1407 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - *(yyvsp[-3].String) += " " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Type).newTy; - (yyvsp[-2].Value).destroy(); (yyvsp[0].Type).destroy(); - (yyval.String) = (yyvsp[-3].String); + *(yyvsp[-3].String) += " " + *(yyvsp[-2].Value).val + ", " + (yyvsp[0].Type)->getNewTy(); + (yyval.Value).val = (yyvsp[-3].String); + (yyval.Value).type = (yyvsp[0].Type); + (yyvsp[-2].Value).destroy(); ;} break; case 284: -#line 1297 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1413 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-3].String) += " " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val; - (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy(); - (yyval.String) = (yyvsp[-3].String); + (yyval.Value).val = (yyvsp[-3].String); + ResolveType((yyvsp[-2].Value).type); + (yyval.Value).type = (yyvsp[-2].Value).type->getElementType()->clone(); + delete (yyvsp[-2].Value).val; (yyvsp[0].Value).destroy(); ;} break; case 285: -#line 1302 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1420 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-5].String) += " " + *(yyvsp[-4].Value).val + ", " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val; - (yyvsp[-4].Value).destroy(); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy(); - (yyval.String) = (yyvsp[-5].String); + (yyval.Value).val = (yyvsp[-5].String); + (yyval.Value).type = (yyvsp[-4].Value).type; + delete (yyvsp[-4].Value).val; (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy(); ;} break; case 286: -#line 1307 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1426 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-5].String) += " " + *(yyvsp[-4].Value).val + ", " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val; - (yyvsp[-4].Value).destroy(); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy(); - (yyval.String) = (yyvsp[-5].String); + (yyval.Value).val = (yyvsp[-5].String); + (yyval.Value).type = (yyvsp[-4].Value).type; + delete (yyvsp[-4].Value).val; (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy(); ;} break; case 287: -#line 1312 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1432 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - *(yyvsp[-1].String) += " " + *(yyvsp[0].String); - delete (yyvsp[0].String); - (yyval.String) = (yyvsp[-1].String); + *(yyvsp[-1].String) += " " + *(yyvsp[0].Value).val; + (yyval.Value).val = (yyvsp[-1].String); + (yyval.Value).type = (yyvsp[0].Value).type; + delete (yyvsp[0].Value).val; ;} break; case 288: -#line 1317 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1438 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-5].String)->empty()) *(yyvsp[-6].String) += " " + *(yyvsp[-5].String); if (!(yyvsp[-6].String)->empty()) *(yyvsp[-6].String) += " "; - *(yyvsp[-6].String) += *(yyvsp[-4].Type).newTy + " " + *(yyvsp[-3].Value).val + "("; + *(yyvsp[-6].String) += (yyvsp[-4].Type)->getNewTy() + " " + *(yyvsp[-3].Value).val + "("; for (unsigned i = 0; i < (yyvsp[-1].ValList)->size(); ++i) { ValueInfo& VI = (*(yyvsp[-1].ValList))[i]; *(yyvsp[-6].String) += *VI.val; @@ -3797,125 +3917,137 @@ VI.destroy(); } *(yyvsp[-6].String) += ")"; - delete (yyvsp[-5].String); (yyvsp[-4].Type).destroy(); (yyvsp[-3].Value).destroy(); delete (yyvsp[-1].ValList); - (yyval.String) = (yyvsp[-6].String); + (yyval.Value).val = (yyvsp[-6].String); + (yyval.Value).type = getFunctionReturnType((yyvsp[-4].Type)); + delete (yyvsp[-5].String); delete (yyvsp[-4].Type); (yyvsp[-3].Value).destroy(); delete (yyvsp[-1].ValList); ;} break; case 290: -#line 1339 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1461 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValList) = (yyvsp[0].ValList); ;} break; case 291: -#line 1340 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1462 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValList) = new ValueList(); ;} break; case 293: -#line 1345 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1467 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 294: -#line 1348 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1470 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - *(yyvsp[-2].String) += " " + *(yyvsp[-1].Type).newTy; + *(yyvsp[-2].String) += " " + (yyvsp[-1].Type)->getNewTy(); if (!(yyvsp[0].String)->empty()) *(yyvsp[-2].String) += " " + *(yyvsp[0].String); - (yyvsp[-1].Type).destroy(); delete (yyvsp[0].String); - (yyval.String) = (yyvsp[-2].String); + (yyval.Value).val = (yyvsp[-2].String); + (yyval.Value).type = (yyvsp[-1].Type)->getPointerType(); + delete (yyvsp[-1].Type); delete (yyvsp[0].String); ;} break; case 295: -#line 1355 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1478 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - *(yyvsp[-5].String) += " " + *(yyvsp[-4].Type).newTy + ", " + *(yyvsp[-2].Type).newTy + " " + *(yyvsp[-1].Value).val; + std::string Name = getUniqueName((yyvsp[-1].Value).val, (yyvsp[-2].Type)); + *(yyvsp[-5].String) += " " + (yyvsp[-4].Type)->getNewTy() + ", " + (yyvsp[-2].Type)->getNewTy() + " " + Name; if (!(yyvsp[0].String)->empty()) *(yyvsp[-5].String) += " " + *(yyvsp[0].String); - (yyvsp[-4].Type).destroy(); (yyvsp[-2].Type).destroy(); (yyvsp[-1].Value).destroy(); delete (yyvsp[0].String); - (yyval.String) = (yyvsp[-5].String); + (yyval.Value).val = (yyvsp[-5].String); + (yyval.Value).type = (yyvsp[-4].Type)->getPointerType(); + delete (yyvsp[-4].Type); delete (yyvsp[-2].Type); (yyvsp[-1].Value).destroy(); delete (yyvsp[0].String); ;} break; case 296: -#line 1362 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1487 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - *(yyvsp[-2].String) += " " + *(yyvsp[-1].Type).newTy; + *(yyvsp[-2].String) += " " + (yyvsp[-1].Type)->getNewTy(); if (!(yyvsp[0].String)->empty()) *(yyvsp[-2].String) += " " + *(yyvsp[0].String); - (yyvsp[-1].Type).destroy(); delete (yyvsp[0].String); - (yyval.String) = (yyvsp[-2].String); + (yyval.Value).val = (yyvsp[-2].String); + (yyval.Value).type = (yyvsp[-1].Type)->getPointerType(); + delete (yyvsp[-1].Type); delete (yyvsp[0].String); ;} break; case 297: -#line 1369 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1495 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { - *(yyvsp[-5].String) += " " + *(yyvsp[-4].Type).newTy + ", " + *(yyvsp[-2].Type).newTy + " " + *(yyvsp[-1].Value).val; + std::string Name = getUniqueName((yyvsp[-1].Value).val, (yyvsp[-2].Type)); + *(yyvsp[-5].String) += " " + (yyvsp[-4].Type)->getNewTy() + ", " + (yyvsp[-2].Type)->getNewTy() + " " + Name; if (!(yyvsp[0].String)->empty()) *(yyvsp[-5].String) += " " + *(yyvsp[0].String); - (yyvsp[-4].Type).destroy(); (yyvsp[-2].Type).destroy(); (yyvsp[-1].Value).destroy(); delete (yyvsp[0].String); - (yyval.String) = (yyvsp[-5].String); + (yyval.Value).val = (yyvsp[-5].String); + (yyval.Value).type = (yyvsp[-4].Type)->getPointerType(); + delete (yyvsp[-4].Type); delete (yyvsp[-2].Type); (yyvsp[-1].Value).destroy(); delete (yyvsp[0].String); ;} break; case 298: -#line 1376 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1504 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-1].String) += " " + *(yyvsp[0].Value).val; + (yyval.Value).val = (yyvsp[-1].String); + (yyval.Value).type = new TypeInfo("void", VoidTy); (yyvsp[0].Value).destroy(); - (yyval.String) = (yyvsp[-1].String); ;} break; case 299: -#line 1381 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1510 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { + std::string Name = getUniqueName((yyvsp[0].Value).val, (yyvsp[-1].Type)); if (!(yyvsp[-3].String)->empty()) *(yyvsp[-3].String) += " "; - *(yyvsp[-3].String) += *(yyvsp[-2].String) + " " + *(yyvsp[-1].Type).newTy + " " + *(yyvsp[0].Value).val; - delete (yyvsp[-2].String); (yyvsp[-1].Type).destroy(); (yyvsp[0].Value).destroy(); - (yyval.String) = (yyvsp[-3].String); + *(yyvsp[-3].String) += *(yyvsp[-2].String) + " " + (yyvsp[-1].Type)->getNewTy() + " " + Name; + (yyval.Value).val = (yyvsp[-3].String); + (yyval.Value).type = (yyvsp[-1].Type)->getElementType()->clone(); + delete (yyvsp[-2].String); delete (yyvsp[-1].Type); (yyvsp[0].Value).destroy(); ;} break; case 300: -#line 1388 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1519 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { + std::string Name = getUniqueName((yyvsp[0].Value).val, (yyvsp[-1].Type)); if (!(yyvsp[-5].String)->empty()) *(yyvsp[-5].String) += " "; - *(yyvsp[-5].String) += *(yyvsp[-4].String) + " " + *(yyvsp[-3].Value).val + ", " + *(yyvsp[-1].Type).newTy + " " + *(yyvsp[0].Value).val; - delete (yyvsp[-4].String); (yyvsp[-3].Value).destroy(); (yyvsp[-1].Type).destroy(); (yyvsp[0].Value).destroy(); - (yyval.String) = (yyvsp[-5].String); + *(yyvsp[-5].String) += *(yyvsp[-4].String) + " " + *(yyvsp[-3].Value).val + ", " + (yyvsp[-1].Type)->getNewTy() + " " + Name; + (yyval.Value).val = (yyvsp[-5].String); + (yyval.Value).type = new TypeInfo("void", VoidTy); + delete (yyvsp[-4].String); (yyvsp[-3].Value).destroy(); delete (yyvsp[-1].Type); (yyvsp[0].Value).destroy(); ;} break; case 301: -#line 1395 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1528 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { + std::string Name = getUniqueName((yyvsp[-1].Value).val, (yyvsp[-2].Type)); // Upgrade the indices for (unsigned i = 0; i < (yyvsp[0].ValList)->size(); ++i) { ValueInfo& VI = (*(yyvsp[0].ValList))[i]; - if (VI.type.isUnsigned() && !VI.isConstant() && - VI.type.getBitWidth() < 64) { + if (VI.type->isUnsigned() && !VI.isConstant() && + VI.type->getBitWidth() < 64) { std::string* old = VI.val; *O << " %gep_upgrade" << unique << " = zext " << *old << " to i64\n"; VI.val = new std::string("i64 %gep_upgrade" + llvm::utostr(unique++)); - VI.type.oldTy = ULongTy; - delete old; + VI.type->setOldTy(ULongTy); } } - *(yyvsp[-3].String) += " " + *(yyvsp[-2].Type).newTy + " " + *(yyvsp[-1].Value).val; + *(yyvsp[-3].String) += " " + (yyvsp[-2].Type)->getNewTy() + " " + Name; for (unsigned i = 0; i < (yyvsp[0].ValList)->size(); ++i) { ValueInfo& VI = (*(yyvsp[0].ValList))[i]; *(yyvsp[-3].String) += ", " + *VI.val; - VI.destroy(); } - (yyvsp[-2].Type).destroy(); (yyvsp[-1].Value).destroy(); delete (yyvsp[0].ValList); - (yyval.String) = (yyvsp[-3].String); + (yyval.Value).val = (yyvsp[-3].String); + (yyval.Value).type = getGEPIndexedType((yyvsp[-2].Type),(yyvsp[0].ValList)); + (yyvsp[-1].Value).destroy(); delete (yyvsp[0].ValList); ;} break; @@ -3924,7 +4056,7 @@ } /* Line 1126 of yacc.c. */ -#line 3928 "UpgradeParser.tab.c" +#line 4060 "UpgradeParser.tab.c" yyvsp -= yylen; yyssp -= yylen; @@ -4192,7 +4324,7 @@ } -#line 1419 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1552 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" int yyerror(const char *ErrorMsg) { Index: llvm/tools/llvm-upgrade/UpgradeParser.h diff -u llvm/tools/llvm-upgrade/UpgradeParser.h:1.23 llvm/tools/llvm-upgrade/UpgradeParser.h:1.24 --- llvm/tools/llvm-upgrade/UpgradeParser.h:1.23 Sun Dec 31 19:20:41 2006 +++ llvm/tools/llvm-upgrade/UpgradeParser.h Mon Jan 1 23:45:11 2007 @@ -333,16 +333,17 @@ #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) -#line 289 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 357 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" typedef union YYSTYPE { std::string* String; - TypeInfo Type; + TypeInfo* Type; ValueInfo Value; ConstInfo Const; ValueList* ValList; + TypeList* TypeVec; } YYSTYPE; /* Line 1447 of yacc.c. */ -#line 346 "UpgradeParser.tab.h" +#line 347 "UpgradeParser.tab.h" # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_TRIVIAL 1 Index: llvm/tools/llvm-upgrade/UpgradeParser.h.cvs diff -u llvm/tools/llvm-upgrade/UpgradeParser.h.cvs:1.21 llvm/tools/llvm-upgrade/UpgradeParser.h.cvs:1.22 --- llvm/tools/llvm-upgrade/UpgradeParser.h.cvs:1.21 Sun Dec 31 19:20:41 2006 +++ llvm/tools/llvm-upgrade/UpgradeParser.h.cvs Mon Jan 1 23:45:11 2007 @@ -333,16 +333,17 @@ #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) -#line 289 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 357 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" typedef union YYSTYPE { std::string* String; - TypeInfo Type; + TypeInfo* Type; ValueInfo Value; ConstInfo Const; ValueList* ValList; + TypeList* TypeVec; } YYSTYPE; /* Line 1447 of yacc.c. */ -#line 346 "UpgradeParser.tab.h" +#line 347 "UpgradeParser.tab.h" # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_TRIVIAL 1 Index: llvm/tools/llvm-upgrade/UpgradeParser.y.cvs diff -u llvm/tools/llvm-upgrade/UpgradeParser.y.cvs:1.27 llvm/tools/llvm-upgrade/UpgradeParser.y.cvs:1.28 --- llvm/tools/llvm-upgrade/UpgradeParser.y.cvs:1.27 Sun Dec 31 19:20:41 2006 +++ llvm/tools/llvm-upgrade/UpgradeParser.y.cvs Mon Jan 1 23:45:11 2007 @@ -13,12 +13,10 @@ %{ #include "ParserInternals.h" -#include #include #include #include #include -#include #define YYERROR_VERBOSE 1 #define YYINCLUDED_STDLIB_H @@ -78,71 +76,72 @@ } } -static void ResolveType(TypeInfo& Ty) { - if (Ty.oldTy == UnresolvedTy) { - TypeMap::iterator I = NamedTypes.find(*Ty.newTy); +TypeInfo* ResolveType(TypeInfo*& Ty) { + if (Ty->isUnresolved()) { + TypeMap::iterator I = NamedTypes.find(Ty->getNewTy()); if (I != NamedTypes.end()) { - Ty.oldTy = I->second.oldTy; - Ty.elemTy = I->second.elemTy; + Ty = I->second.clone(); + return Ty; } else { - std::string msg("Can't resolve type: "); - msg += *Ty.newTy; + std::string msg("Cannot resolve type: "); + msg += Ty->getNewTy(); yyerror(msg.c_str()); } - } else if (Ty.oldTy == NumericTy) { - unsigned ref = atoi(&((Ty.newTy->c_str())[1])); // Skip the '\\' + } else if (Ty->isNumeric()) { + unsigned ref = atoi(&((Ty->getNewTy().c_str())[1])); // Skip the '\\' if (ref < EnumeratedTypes.size()) { - Ty.oldTy = EnumeratedTypes[ref].oldTy; - Ty.elemTy = EnumeratedTypes[ref].elemTy; + Ty = EnumeratedTypes[ref].clone(); + return Ty; } else { std::string msg("Can't resolve type: "); - msg += *Ty.newTy; + msg += Ty->getNewTy(); yyerror(msg.c_str()); } } // otherwise its already resolved. + return Ty; } static const char* getCastOpcode( - std::string& Source, const TypeInfo& SrcTy, const TypeInfo& DstTy) + std::string& Source, const TypeInfo* SrcTy, const TypeInfo* DstTy) { - unsigned SrcBits = SrcTy.getBitWidth(); - unsigned DstBits = DstTy.getBitWidth(); + unsigned SrcBits = SrcTy->getBitWidth(); + unsigned DstBits = DstTy->getBitWidth(); const char* opcode = "bitcast"; // Run through the possibilities ... - if (DstTy.isIntegral()) { // Casting to integral - if (SrcTy.isIntegral()) { // Casting from integral + if (DstTy->isIntegral()) { // Casting to integral + if (SrcTy->isIntegral()) { // Casting from integral if (DstBits < SrcBits) opcode = "trunc"; else if (DstBits > SrcBits) { // its an extension - if (SrcTy.isSigned()) + if (SrcTy->isSigned()) opcode ="sext"; // signed -> SEXT else opcode = "zext"; // unsigned -> ZEXT } else { opcode = "bitcast"; // Same size, No-op cast } - } else if (SrcTy.isFloatingPoint()) { // Casting from floating pt - if (DstTy.isSigned()) + } else if (SrcTy->isFloatingPoint()) { // Casting from floating pt + if (DstTy->isSigned()) opcode = "fptosi"; // FP -> sint else opcode = "fptoui"; // FP -> uint - } else if (SrcTy.isPacked()) { - assert(DstBits == SrcTy.getBitWidth() && + } else if (SrcTy->isPacked()) { + assert(DstBits == SrcTy->getBitWidth() && "Casting packed to integer of different width"); opcode = "bitcast"; // same size, no-op cast } else { - assert(SrcTy.isPointer() && + assert(SrcTy->isPointer() && "Casting from a value that is not first-class type"); opcode = "ptrtoint"; // ptr -> int } - } else if (DstTy.isFloatingPoint()) { // Casting to floating pt - if (SrcTy.isIntegral()) { // Casting from integral - if (SrcTy.isSigned()) + } else if (DstTy->isFloatingPoint()) { // Casting to floating pt + if (SrcTy->isIntegral()) { // Casting from integral + if (SrcTy->isSigned()) opcode = "sitofp"; // sint -> FP else opcode = "uitofp"; // uint -> FP - } else if (SrcTy.isFloatingPoint()) { // Casting from floating pt + } else if (SrcTy->isFloatingPoint()) { // Casting from floating pt if (DstBits < SrcBits) { opcode = "fptrunc"; // FP -> smaller FP } else if (DstBits > SrcBits) { @@ -150,27 +149,27 @@ } else { opcode ="bitcast"; // same size, no-op cast } - } else if (SrcTy.isPacked()) { - assert(DstBits == SrcTy.getBitWidth() && + } else if (SrcTy->isPacked()) { + assert(DstBits == SrcTy->getBitWidth() && "Casting packed to floating point of different width"); opcode = "bitcast"; // same size, no-op cast } else { assert(0 && "Casting pointer or non-first class to float"); } - } else if (DstTy.isPacked()) { - if (SrcTy.isPacked()) { - assert(DstTy.getBitWidth() == SrcTy.getBitWidth() && + } else if (DstTy->isPacked()) { + if (SrcTy->isPacked()) { + assert(DstTy->getBitWidth() == SrcTy->getBitWidth() && "Casting packed to packed of different widths"); opcode = "bitcast"; // packed -> packed - } else if (DstTy.getBitWidth() == SrcBits) { + } else if (DstTy->getBitWidth() == SrcBits) { opcode = "bitcast"; // float/int -> packed } else { assert(!"Illegal cast to packed (wrong type or size)"); } - } else if (DstTy.isPointer()) { - if (SrcTy.isPointer()) { + } else if (DstTy->isPointer()) { + if (SrcTy->isPointer()) { opcode = "bitcast"; // ptr -> ptr - } else if (SrcTy.isIntegral()) { + } else if (SrcTy->isIntegral()) { opcode = "inttoptr"; // int -> ptr } else { assert(!"Casting invalid type to pointer"); @@ -181,12 +180,12 @@ return opcode; } -static std::string getCastUpgrade( - const std::string& Src, TypeInfo& SrcTy, TypeInfo& DstTy, bool isConst) +static std::string getCastUpgrade(const std::string& Src, TypeInfo* SrcTy, + TypeInfo* DstTy, bool isConst) { std::string Result; std::string Source = Src; - if (SrcTy.isFloatingPoint() && DstTy.isPointer()) { + if (SrcTy->isFloatingPoint() && DstTy->isPointer()) { // fp -> ptr cast is no longer supported but we must upgrade this // by doing a double cast: fp -> int -> ptr if (isConst) @@ -197,16 +196,16 @@ Source = "i64 %cast_upgrade" + llvm::utostr(unique); } // Update the SrcTy for the getCastOpcode call below - SrcTy.destroy(); - SrcTy.newTy = new std::string("i64"); - SrcTy.oldTy = ULongTy; - } else if (DstTy.oldTy == BoolTy && SrcTy.oldTy != BoolTy) { - // cast ptr %x to bool was previously defined as setne ptr %x, null - // The ptrtoint semantic is to truncate, not compare so we must retain - // the original intent by replace the cast with a setne - const char* comparator = SrcTy.isPointer() ? ", null" : - (SrcTy.isFloatingPoint() ? ", 0.0" : ", 0"); - const char* compareOp = SrcTy.isFloatingPoint() ? "fcmp one " : "icmp ne "; + delete SrcTy; + SrcTy = new TypeInfo("i64", ULongTy); + } else if (DstTy->isBool()) { + // cast type %x to bool was previously defined as setne type %x, null + // The cast semantic is now to truncate, not compare so we must retain + // the original intent by replacing the cast with a setne + const char* comparator = SrcTy->isPointer() ? ", null" : + (SrcTy->isFloatingPoint() ? ", 0.0" : + (SrcTy->isBool() ? ", false" : ", 0")); + const char* compareOp = SrcTy->isFloatingPoint() ? "fcmp one " : "icmp ne "; if (isConst) { Result = "(" + Source + comparator + ")"; Result = compareOp + Result; @@ -218,33 +217,32 @@ ResolveType(DstTy); std::string Opcode(getCastOpcode(Source, SrcTy, DstTy)); if (isConst) - Result += Opcode + "( " + Source + " to " + *DstTy.newTy + ")"; + Result += Opcode + "( " + Source + " to " + DstTy->getNewTy() + ")"; else - Result += Opcode + " " + Source + " to " + *DstTy.newTy; + Result += Opcode + " " + Source + " to " + DstTy->getNewTy(); return Result; } -const char* getDivRemOpcode(const std::string& opcode, const TypeInfo& TI) { +const char* getDivRemOpcode(const std::string& opcode, TypeInfo* TI) { const char* op = opcode.c_str(); - TypeInfo Ty = TI; - ResolveType(Ty); - if (Ty.isPacked()) - Ty.oldTy = Ty.getElementType(); + const TypeInfo* Ty = ResolveType(TI); + if (Ty->isPacked()) + Ty = Ty->getElementType(); if (opcode == "div") - if (Ty.isFloatingPoint()) + if (Ty->isFloatingPoint()) op = "fdiv"; - else if (Ty.isUnsigned()) + else if (Ty->isUnsigned()) op = "udiv"; - else if (Ty.isSigned()) + else if (Ty->isSigned()) op = "sdiv"; else yyerror("Invalid type for div instruction"); else if (opcode == "rem") - if (Ty.isFloatingPoint()) + if (Ty->isFloatingPoint()) op = "frem"; - else if (Ty.isUnsigned()) + else if (Ty->isUnsigned()) op = "urem"; - else if (Ty.isSigned()) + else if (Ty->isSigned()) op = "srem"; else yyerror("Invalid type for rem instruction"); @@ -252,7 +250,7 @@ } std::string -getCompareOp(const std::string& setcc, const TypeInfo& TI) { +getCompareOp(const std::string& setcc, const TypeInfo* TI) { assert(setcc.length() == 5); char cc1 = setcc[3]; char cc2 = setcc[4]; @@ -261,20 +259,20 @@ std::string result("xcmp xxx"); result[6] = cc1; result[7] = cc2; - if (TI.isFloatingPoint()) { + if (TI->isFloatingPoint()) { result[0] = 'f'; result[5] = 'o'; if (cc1 == 'n') result[5] = 'u'; // NE maps to unordered else result[5] = 'o'; // everything else maps to ordered - } else if (TI.isIntegral() || TI.isPointer()) { + } else if (TI->isIntegral() || TI->isPointer()) { result[0] = 'i'; if ((cc1 == 'e' && cc2 == 'q') || (cc1 == 'n' && cc2 == 'e')) result.erase(5,1); - else if (TI.isSigned()) + else if (TI->isSigned()) result[5] = 's'; - else if (TI.isUnsigned() || TI.isPointer() || TI.isBool()) + else if (TI->isUnsigned() || TI->isPointer() || TI->isBool()) result[5] = 'u'; else yyerror("Invalid integral type for setcc"); @@ -282,16 +280,87 @@ return result; } +static TypeInfo* getFunctionReturnType(TypeInfo* PFTy) { + ResolveType(PFTy); + if (PFTy->isPointer()) { + TypeInfo* ElemTy = PFTy->getElementType(); + ResolveType(ElemTy); + if (ElemTy->isFunction()) + return ElemTy->getResultType()->clone(); + } else if (PFTy->isFunction()) { + return PFTy->getResultType()->clone(); + } + return PFTy->clone(); +} + +static TypeInfo* getGEPIndexedType(TypeInfo* PTy, ValueList* idxs) { + ResolveType(PTy); + assert(PTy->isPointer() && "GEP Operand is not a pointer?"); + TypeInfo* Result = PTy->getElementType(); // just skip first index + ResolveType(Result); + for (unsigned i = 1; i < idxs->size(); ++i) { + if (Result->isComposite()) { + Result = Result->getIndexedType((*idxs)[i]); + ResolveType(Result); + } else + yyerror("Invalid type for index"); + } + return Result->getPointerType(); +} + +static std::string makeUniqueName(const std::string *Name, bool isSigned) { + const char *suffix = ".u"; + if (isSigned) + suffix = ".s"; + if ((*Name)[Name->size()-1] == '"') { + std::string Result(*Name); + Result.insert(Name->size()-1, suffix); + return Result; + } + return *Name + suffix; +} + +// This function handles appending .u or .s to integer value names that +// were previously unsigned or signed, respectively. This avoids name +// collisions since the unsigned and signed type planes have collapsed +// into a single signless type plane. +static std::string getUniqueName(const std::string *Name, TypeInfo* Ty) { + // If its not a symbolic name, don't modify it, probably a constant val. + if ((*Name)[0] != '%' && (*Name)[0] != '"') + return *Name; + // If its a numeric reference, just leave it alone. + if (isdigit((*Name)[1])) + return *Name; + + // Resolve the type + ResolveType(Ty); + + // Default the result to the current name + std::string Result = *Name; + + if (Ty->isInteger()) { + // If its an integer type, make the name unique + Result = makeUniqueName(Name, Ty->isSigned()); + } else if (Ty->isPointer()) { + while (Ty->isPointer()) + Ty = Ty->getElementType(); + if (Ty->isInteger()) + Result = makeUniqueName(Name, Ty->isSigned()); + } + return Result; +} + %} // %file-prefix="UpgradeParser" %union { std::string* String; - TypeInfo Type; + TypeInfo* Type; ValueInfo Value; ConstInfo Const; ValueList* ValList; + TypeList* TypeVec; } %token VOID BOOL SBYTE UBYTE SHORT USHORT INT UINT LONG ULONG @@ -322,19 +391,20 @@ %type OptAssign OptLinkage OptCallingConv OptAlign OptCAlign %type SectionString OptSection GlobalVarAttributes GlobalVarAttribute -%type ArgTypeListI ConstExpr DefinitionList +%type ConstExpr DefinitionList %type ConstPool TargetDefinition LibrariesDefinition LibList OptName %type ArgVal ArgListH ArgList FunctionHeaderH BEGIN FunctionHeader END -%type Function FunctionProto BasicBlock TypeListI -%type InstructionList BBTerminatorInst JumpTable Inst PHIList -%type OptTailCall InstVal OptVolatile Unwind -%type MemoryInst SymbolicValueRef OptSideEffect GlobalType +%type Function FunctionProto BasicBlock +%type InstructionList BBTerminatorInst JumpTable Inst +%type OptTailCall OptVolatile Unwind +%type SymbolicValueRef OptSideEffect GlobalType %type FnDeclareLinkage BasicBlockList BigOrLittle AsmBlock %type Name ConstValueRef ConstVector External %type ShiftOps SetCondOps LogicalOps ArithmeticOps CastOps %type IPredicates FPredicates %type ValueRefList ValueRefListE IndexList +%type TypeListI ArgTypeListI %type IntType SIntType UIntType FPType TypesV Types %type PrimType UpRTypesV UpRTypes @@ -342,7 +412,7 @@ %type IntVal EInt64Val %type ConstVal -%type ValueRef ResolvedVal +%type ValueRef ResolvedVal InstVal PHIList MemoryInst %start Module @@ -456,68 +526,79 @@ PrimType : LONG | ULONG | FLOAT | DOUBLE | LABEL; UpRTypes : OPAQUE { - $$.newTy = $1; - $$.oldTy = OpaqueTy; + $$ = new TypeInfo($1, OpaqueTy); } | SymbolicValueRef { - $$.newTy = $1; - $$.oldTy = UnresolvedTy; + $$ = new TypeInfo($1, UnresolvedTy); } | PrimType { $$ = $1; } | '\\' EUINT64VAL { // Type UpReference $2->insert(0, "\\"); - $$.newTy = $2; - $$.oldTy = NumericTy; + $$ = new TypeInfo($2, NumericTy); } | UpRTypesV '(' ArgTypeListI ')' { // Function derived type? - *$1.newTy += "( " + *$3 + " )"; - delete $3; - $$.newTy = $1.newTy; - $$.oldTy = FunctionTy; + std::string newTy( $1->getNewTy() + "("); + for (unsigned i = 0; i < $3->size(); ++i) { + if (i != 0) + newTy += ", "; + if ((*$3)[i]->isVoid()) + newTy += "..."; + else + newTy += (*$3)[i]->getNewTy(); + } + newTy += ")"; + $$ = new TypeInfo(new std::string(newTy), $1, $3); + EnumeratedTypes.push_back(*$$); } | '[' EUINT64VAL 'x' UpRTypes ']' { // Sized array type? $2->insert(0,"[ "); - *$2 += " x " + *$4.newTy + " ]"; - delete $4.newTy; - $$.newTy = $2; - $$.oldTy = ArrayTy; - $$.elemTy = $4.oldTy; + *$2 += " x " + $4->getNewTy() + " ]"; + uint64_t elems = atoi($2->c_str()); + $$ = new TypeInfo($2, ArrayTy, $4, elems); + EnumeratedTypes.push_back(*$$); } | '<' EUINT64VAL 'x' UpRTypes '>' { // Packed array type? $2->insert(0,"< "); - *$2 += " x " + *$4.newTy + " >"; - delete $4.newTy; - $$.newTy = $2; - $$.oldTy = PackedTy; - $$.elemTy = $4.oldTy; + *$2 += " x " + $4->getNewTy() + " >"; + uint64_t elems = atoi($2->c_str()); + $$ = new TypeInfo($2, PackedTy, $4, elems); + EnumeratedTypes.push_back(*$$); } | '{' TypeListI '}' { // Structure type? - $2->insert(0, "{ "); - *$2 += " }"; - $$.newTy = $2; - $$.oldTy = StructTy; + std::string newTy("{"); + for (unsigned i = 0; i < $2->size(); ++i) { + if (i != 0) + newTy += ", "; + newTy += (*$2)[i]->getNewTy(); + } + newTy += "}"; + $$ = new TypeInfo(new std::string(newTy), StructTy, $2); + EnumeratedTypes.push_back(*$$); } | '{' '}' { // Empty structure type? - $$.newTy = new std::string("{}"); - $$.oldTy = StructTy; + $$ = new TypeInfo(new std::string("{}"), StructTy, new TypeList()); + EnumeratedTypes.push_back(*$$); } | '<' '{' TypeListI '}' '>' { // Packed Structure type? - $3->insert(0, "<{ "); - *$3 += " }>"; - $$.newTy = $3; - $$.oldTy = StructTy; + std::string newTy("<{"); + for (unsigned i = 0; i < $3->size(); ++i) { + if (i != 0) + newTy += ", "; + newTy += (*$3)[i]->getNewTy(); + } + newTy += "}>"; + $$ = new TypeInfo(new std::string(newTy), PackedStructTy, $3); + EnumeratedTypes.push_back(*$$); } | '<' '{' '}' '>' { // Empty packed structure type? - $$.newTy = new std::string("<{}>"); - $$.oldTy = StructTy; + $$ = new TypeInfo(new std::string("<{}>"), PackedStructTy, new TypeList()); + EnumeratedTypes.push_back(*$$); } | UpRTypes '*' { // Pointer type? - *$1.newTy += '*'; - $$.elemTy = $1.oldTy; - $1.oldTy = PointerTy; - $$ = $1; + $$ = $1->getPointerType(); + EnumeratedTypes.push_back(*$$); }; // TypeList - Used for struct declarations and as a basis for function type @@ -525,27 +606,29 @@ // TypeListI : UpRTypes { - $$ = $1.newTy; + $$ = new TypeList(); + $$->push_back($1); } | TypeListI ',' UpRTypes { - *$1 += ", " + *$3.newTy; - delete $3.newTy; $$ = $1; + $$->push_back($3); }; // ArgTypeList - List of types for a function type declaration... ArgTypeListI : TypeListI | TypeListI ',' DOTDOTDOT { - *$1 += ", ..."; - delete $3; $$ = $1; + $$->push_back(new TypeInfo("void",VoidTy)); + delete $3; } | DOTDOTDOT { - $$ = $1; + $$ = new TypeList(); + $$->push_back(new TypeInfo("void",VoidTy)); + delete $1; } | /*empty*/ { - $$ = new std::string(); + $$ = new TypeList(); }; // ConstVal - The various declarations that go into the constant pool. This @@ -556,95 +639,96 @@ // ConstVal: Types '[' ConstVector ']' { // Nonempty unsized arr $$.type = $1; - $$.cnst = new std::string(*$1.newTy); + $$.cnst = new std::string($1->getNewTy()); *$$.cnst += " [ " + *$3 + " ]"; delete $3; } | Types '[' ']' { $$.type = $1; - $$.cnst = new std::string(*$1.newTy); + $$.cnst = new std::string($1->getNewTy()); *$$.cnst += "[ ]"; } | Types 'c' STRINGCONSTANT { $$.type = $1; - $$.cnst = new std::string(*$1.newTy); + $$.cnst = new std::string($1->getNewTy()); *$$.cnst += " c" + *$3; delete $3; } | Types '<' ConstVector '>' { // Nonempty unsized arr $$.type = $1; - $$.cnst = new std::string(*$1.newTy); + $$.cnst = new std::string($1->getNewTy()); *$$.cnst += " < " + *$3 + " >"; delete $3; } | Types '{' ConstVector '}' { $$.type = $1; - $$.cnst = new std::string(*$1.newTy); + $$.cnst = new std::string($1->getNewTy()); *$$.cnst += " { " + *$3 + " }"; delete $3; } | Types '{' '}' { $$.type = $1; - $$.cnst = new std::string(*$1.newTy); + $$.cnst = new std::string($1->getNewTy()); *$$.cnst += " {}"; } | Types NULL_TOK { $$.type = $1; - $$.cnst = new std::string(*$1.newTy); + $$.cnst = new std::string($1->getNewTy()); *$$.cnst += " " + *$2; delete $2; } | Types UNDEF { $$.type = $1; - $$.cnst = new std::string(*$1.newTy); + $$.cnst = new std::string($1->getNewTy()); *$$.cnst += " " + *$2; delete $2; } | Types SymbolicValueRef { + std::string Name = getUniqueName($2,$1); $$.type = $1; - $$.cnst = new std::string(*$1.newTy); - *$$.cnst += " " + *$2; + $$.cnst = new std::string($1->getNewTy()); + *$$.cnst += " " + Name; delete $2; } | Types ConstExpr { $$.type = $1; - $$.cnst = new std::string(*$1.newTy); + $$.cnst = new std::string($1->getNewTy()); *$$.cnst += " " + *$2; delete $2; } | Types ZEROINITIALIZER { $$.type = $1; - $$.cnst = new std::string(*$1.newTy); + $$.cnst = new std::string($1->getNewTy()); *$$.cnst += " " + *$2; delete $2; } | SIntType EInt64Val { // integral constants $$.type = $1; - $$.cnst = new std::string(*$1.newTy); + $$.cnst = new std::string($1->getNewTy()); *$$.cnst += " " + *$2; delete $2; } | UIntType EUINT64VAL { // integral constants $$.type = $1; - $$.cnst = new std::string(*$1.newTy); + $$.cnst = new std::string($1->getNewTy()); *$$.cnst += " " + *$2; delete $2; } | BOOL TRUETOK { // Boolean constants $$.type = $1; - $$.cnst = new std::string(*$1.newTy); + $$.cnst = new std::string($1->getNewTy()); *$$.cnst += " " + *$2; delete $2; } | BOOL FALSETOK { // Boolean constants $$.type = $1; - $$.cnst = new std::string(*$1.newTy); + $$.cnst = new std::string($1->getNewTy()); *$$.cnst += " " + *$2; delete $2; } | FPType FPVAL { // Float & Double constants $$.type = $1; - $$.cnst = new std::string(*$1.newTy); + $$.cnst = new std::string($1->getNewTy()); *$$.cnst += " " + *$2; delete $2; }; @@ -652,17 +736,16 @@ ConstExpr: CastOps '(' ConstVal TO Types ')' { std::string source = *$3.cnst; - TypeInfo DstTy = $5; - ResolveType(DstTy); + TypeInfo* DstTy = ResolveType($5); if (*$1 == "cast") { // Call getCastUpgrade to upgrade the old cast - $$ = new std::string(getCastUpgrade(source, $3.type, $5, true)); + $$ = new std::string(getCastUpgrade(source, $3.type, DstTy, true)); } else { // Nothing to upgrade, just create the cast constant expr $$ = new std::string(*$1); - *$$ += "( " + source + " to " + *$5.newTy + ")"; + *$$ += "( " + source + " to " + $5->getNewTy() + ")"; } - delete $1; $3.destroy(); delete $4; $5.destroy(); + delete $1; $3.destroy(); delete $4; delete $5; } | GETELEMENTPTR '(' ConstVal IndexList ')' { *$1 += "(" + *$3.cnst; @@ -711,7 +794,7 @@ | ShiftOps '(' ConstVal ',' ConstVal ')' { const char* shiftop = $1->c_str(); if (*$1 == "shr") - shiftop = ($3.type.isUnsigned()) ? "lshr" : "ashr"; + shiftop = ($3.type->isUnsigned()) ? "lshr" : "ashr"; $$ = new std::string(shiftop); *$$ += "(" + *$3.cnst + "," + *$5.cnst + ")"; delete $1; $3.destroy(); $5.destroy(); @@ -783,15 +866,13 @@ // ConstPool - Constants with optional names assigned to them. ConstPool : ConstPool OptAssign TYPE TypesV { - EnumeratedTypes.push_back($4); + EnumeratedTypes.push_back(*$4); if (!$2->empty()) { - NamedTypes[*$2].newTy = new std::string(*$4.newTy); - NamedTypes[*$2].oldTy = $4.oldTy; - NamedTypes[*$2].elemTy = $4.elemTy; + NamedTypes[*$2] = *$4; *O << *$2 << " = "; } - *O << "type " << *$4.newTy << '\n'; - delete $2; delete $3; $4.destroy(); + *O << "type " << $4->getNewTy() << '\n'; + delete $2; delete $3; $$ = 0; } | ConstPool FunctionProto { // Function prototypes can be in const pool @@ -806,38 +887,42 @@ } | ConstPool OptAssign OptLinkage GlobalType ConstVal GlobalVarAttributes { if (!$2->empty()) { - *O << *$2 << " = "; - Globals[*$2] = $5.type.clone(); + std::string Name = getUniqueName($2,$5.type); + *O << Name << " = "; + Globals[Name] = *$5.type; } *O << *$3 << ' ' << *$4 << ' ' << *$5.cnst << ' ' << *$6 << '\n'; - delete $2; delete $3; delete $4; $5.destroy(); delete $6; + delete $2; delete $3; delete $4; delete $6; $$ = 0; } | ConstPool OptAssign External GlobalType Types GlobalVarAttributes { if (!$2->empty()) { - *O << *$2 << " = "; - Globals[*$2] = $5.clone(); + std::string Name = getUniqueName($2,$5); + *O << Name << " = "; + Globals[Name] = *$5; } - *O << *$3 << ' ' << *$4 << ' ' << *$5.newTy << ' ' << *$6 << '\n'; - delete $2; delete $3; delete $4; $5.destroy(); delete $6; + *O << *$3 << ' ' << *$4 << ' ' << $5->getNewTy() << ' ' << *$6 << '\n'; + delete $2; delete $3; delete $4; delete $6; $$ = 0; } | ConstPool OptAssign DLLIMPORT GlobalType Types GlobalVarAttributes { if (!$2->empty()) { - *O << *$2 << " = "; - Globals[*$2] = $5.clone(); + std::string Name = getUniqueName($2,$5); + *O << Name << " = "; + Globals[Name] = *$5; } - *O << *$3 << ' ' << *$4 << ' ' << *$5.newTy << ' ' << *$6 << '\n'; - delete $2; delete $3; delete $4; $5.destroy(); delete $6; + *O << *$3 << ' ' << *$4 << ' ' << $5->getNewTy() << ' ' << *$6 << '\n'; + delete $2; delete $3; delete $4; delete $6; $$ = 0; } | ConstPool OptAssign EXTERN_WEAK GlobalType Types GlobalVarAttributes { if (!$2->empty()) { - *O << *$2 << " = "; - Globals[*$2] = $5.clone(); + std::string Name = getUniqueName($2,$5); + *O << Name << " = "; + Globals[Name] = *$5; } - *O << *$3 << ' ' << *$4 << ' ' << *$5.newTy << ' ' << *$6 << '\n'; - delete $2; delete $3; delete $4; $5.destroy(); delete $6; + *O << *$3 << ' ' << *$4 << ' ' << $5->getNewTy() << ' ' << *$6 << '\n'; + delete $2; delete $3; delete $4; delete $6; $$ = 0; } | ConstPool TARGET TargetDefinition { @@ -909,9 +994,11 @@ OptName : Name | /*empty*/ { $$ = new std::string(); }; ArgVal : Types OptName { - $$ = $1.newTy; - if (!$2->empty()) - *$$ += " " + *$2; + $$ = new std::string($1->getNewTy()); + if (!$2->empty()) { + std::string Name = getUniqueName($2, $1); + *$$ += " " + Name; + } delete $2; }; @@ -941,14 +1028,13 @@ if (!$1->empty()) { *$1 += " "; } - *$1 += *$2.newTy + " " + *$3 + "(" + *$5 + ")"; + *$1 += $2->getNewTy() + " " + *$3 + "(" + *$5 + ")"; if (!$7->empty()) { *$1 += " " + *$7; } if (!$8->empty()) { *$1 += " " + *$8; } - $2.destroy(); delete $3; delete $5; delete $7; @@ -978,6 +1064,7 @@ if ($2) *O << *$2; *O << *$3 << "\n\n"; + delete $1; delete $2; delete $3; $$ = 0; }; @@ -1029,14 +1116,12 @@ : SymbolicValueRef { $$.val = $1; $$.constant = false; - $$.type.newTy = 0; - $$.type.oldTy = UnresolvedTy; + $$.type = new TypeInfo(); } | ConstValueRef { $$.val = $1; $$.constant = true; - $$.type.newTy = 0; - $$.type.oldTy = UnresolvedTy; + $$.type = new TypeInfo(); } ; @@ -1044,9 +1129,12 @@ // type immediately preceeds the value reference, and allows complex constant // pool references (for things like: 'ret [2 x int] [ int 12, int 42]') ResolvedVal : Types ValueRef { + std::string Name = getUniqueName($2.val, $1); $$ = $2; + delete $$.val; + delete $$.type; + $$.val = new std::string($1->getNewTy() + " " + Name); $$.type = $1; - $$.val->insert(0, *$1.newTy + " "); }; BasicBlockList : BasicBlockList BasicBlock { @@ -1086,42 +1174,48 @@ $$ = 0; } | RET VOID { // Return with no result... - *O << " " << *$1 << ' ' << *$2.newTy << '\n'; - delete $1; $2.destroy(); + *O << " " << *$1 << ' ' << $2->getNewTy() << '\n'; + delete $1; delete $2; $$ = 0; } | BR LABEL ValueRef { // Unconditional Branch... - *O << " " << *$1 << ' ' << *$2.newTy << ' ' << *$3.val << '\n'; - delete $1; $2.destroy(); $3.destroy(); + *O << " " << *$1 << ' ' << $2->getNewTy() << ' ' << *$3.val << '\n'; + delete $1; delete $2; $3.destroy(); $$ = 0; } // Conditional Branch... | BR BOOL ValueRef ',' LABEL ValueRef ',' LABEL ValueRef { - *O << " " << *$1 << ' ' << *$2.newTy << ' ' << *$3.val << ", " - << *$5.newTy << ' ' << *$6.val << ", " << *$8.newTy << ' ' + std::string Name = getUniqueName($3.val, $2); + *O << " " << *$1 << ' ' << $2->getNewTy() << ' ' << Name << ", " + << $5->getNewTy() << ' ' << *$6.val << ", " << $8->getNewTy() << ' ' << *$9.val << '\n'; - delete $1; $2.destroy(); $3.destroy(); $5.destroy(); $6.destroy(); - $8.destroy(); $9.destroy(); + delete $1; delete $2; $3.destroy(); delete $5; $6.destroy(); + delete $8; $9.destroy(); $$ = 0; } | SWITCH IntType ValueRef ',' LABEL ValueRef '[' JumpTable ']' { - *O << " " << *$1 << ' ' << *$2.newTy << ' ' << *$3.val << ", " - << *$5.newTy << ' ' << *$6.val << " [" << *$8 << " ]\n"; - delete $1; $2.destroy(); $3.destroy(); $5.destroy(); $6.destroy(); + std::string Name = getUniqueName($3.val, $2); + *O << " " << *$1 << ' ' << $2->getNewTy() << ' ' << Name << ", " + << $5->getNewTy() << ' ' << *$6.val << " [" << *$8 << " ]\n"; + delete $1; delete $2; $3.destroy(); delete $5; $6.destroy(); delete $8; $$ = 0; } | SWITCH IntType ValueRef ',' LABEL ValueRef '[' ']' { - *O << " " << *$1 << ' ' << *$2.newTy << ' ' << *$3.val << ", " - << *$5.newTy << ' ' << *$6.val << "[]\n"; - delete $1; $2.destroy(); $3.destroy(); $5.destroy(); $6.destroy(); + std::string Name = getUniqueName($3.val, $2); + *O << " " << *$1 << ' ' << $2->getNewTy() << ' ' << Name << ", " + << $5->getNewTy() << ' ' << *$6.val << "[]\n"; + delete $1; delete $2; $3.destroy(); delete $5; $6.destroy(); $$ = 0; } | OptAssign INVOKE OptCallingConv TypesV ValueRef '(' ValueRefListE ')' TO LABEL ValueRef Unwind LABEL ValueRef { + TypeInfo* ResTy = getFunctionReturnType($4); *O << " "; - if (!$1->empty()) - *O << *$1 << " = "; - *O << *$2 << ' ' << *$3 << ' ' << *$4.newTy << ' ' << *$5.val << " ("; + if (!$1->empty()) { + std::string Name = getUniqueName($1, ResTy); + *O << Name << " = "; + } + *O << *$2 << ' ' << *$3 << ' ' << $4->getNewTy() << ' ' << *$5.val << " ("; for (unsigned i = 0; i < $7->size(); ++i) { ValueInfo& VI = (*$7)[i]; *O << *VI.val; @@ -1129,10 +1223,10 @@ *O << ", "; VI.destroy(); } - *O << ") " << *$9 << ' ' << *$10.newTy << ' ' << *$11.val << ' ' - << *$12 << ' ' << *$13.newTy << ' ' << *$14.val << '\n'; - delete $1; delete $2; delete $3; $4.destroy(); $5.destroy(); delete $7; - delete $9; $10.destroy(); $11.destroy(); delete $12; $13.destroy(); + *O << ") " << *$9 << ' ' << $10->getNewTy() << ' ' << *$11.val << ' ' + << *$12 << ' ' << $13->getNewTy() << ' ' << *$14.val << '\n'; + delete $1; delete $2; delete $3; delete $4; $5.destroy(); delete $7; + delete $9; delete $10; $11.destroy(); delete $12; delete $13; $14.destroy(); $$ = 0; } @@ -1148,14 +1242,15 @@ }; JumpTable : JumpTable IntType ConstValueRef ',' LABEL ValueRef { - *$1 += " " + *$2.newTy + " " + *$3 + ", " + *$5.newTy + " " + *$6.val; - $2.destroy(); delete $3; $5.destroy(); $6.destroy(); + *$1 += " " + $2->getNewTy() + " " + *$3 + ", " + $5->getNewTy() + " " + + *$6.val; + delete $2; delete $3; delete $5; $6.destroy(); $$ = $1; } | IntType ConstValueRef ',' LABEL ValueRef { - $2->insert(0, *$1.newTy + " " ); - *$2 += ", " + *$4.newTy + " " + *$5.val; - $1.destroy(); $4.destroy(); $5.destroy(); + $2->insert(0, $1->getNewTy() + " " ); + *$2 += ", " + $4->getNewTy() + " " + *$5.val; + delete $1; delete $4; $5.destroy(); $$ = $2; }; @@ -1167,38 +1262,41 @@ $1->insert(0, "; "); // don't actually delete it, just comment it out delete deleteUselessCastName; } else { - *$1 += " = "; + // Get a unique name for the name of this value, based on its type. + *$1 = getUniqueName($1, $2.type) + " = "; } } - *$1 += *$2; - delete $2; + *$1 += *$2.val; + $2.destroy(); deleteUselessCastFlag = false; $$ = $1; }; PHIList : Types '[' ValueRef ',' ValueRef ']' { // Used for PHI nodes - $3.val->insert(0, *$1.newTy + "["); - *$3.val += "," + *$5.val + "]"; - $1.destroy(); $5.destroy(); - $$ = new std::string(*$3.val); - $3.destroy(); + std::string Name = getUniqueName($3.val, $1); + Name.insert(0, $1->getNewTy() + "["); + Name += "," + *$5.val + "]"; + $$.val = new std::string(Name); + $$.type = $1; + $3.destroy(); $5.destroy(); } | PHIList ',' '[' ValueRef ',' ValueRef ']' { - *$1 += ", [" + *$4.val + "," + *$6.val + "]"; + std::string Name = getUniqueName($4.val, $1.type); + *$1.val += ", [" + Name + "," + *$6.val + "]"; $4.destroy(); $6.destroy(); $$ = $1; }; ValueRefList - : ResolvedVal { + : ResolvedVal { $$ = new ValueList(); $$->push_back($1); } | ValueRefList ',' ResolvedVal { - $1->push_back($3); $$ = $1; + $$->push_back($3); }; // ValueRefListE - Just like ValueRefList, except that it may also be empty! @@ -1218,61 +1316,77 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef { const char* op = getDivRemOpcode(*$1, $2); - $$ = new std::string(op); - *$$ += " " + *$2.newTy + " " + *$3.val + ", " + *$5.val; - delete $1; $2.destroy(); $3.destroy(); $5.destroy(); + std::string Name1 = getUniqueName($3.val, $2); + std::string Name2 = getUniqueName($5.val, $2); + $$.val = new std::string(op); + *$$.val += " " + $2->getNewTy() + " " + Name1 + ", " + Name2; + $$.type = $2; + delete $1; $3.destroy(); $5.destroy(); } | LogicalOps Types ValueRef ',' ValueRef { - *$1 += " " + *$2.newTy + " " + *$3.val + ", " + *$5.val; - $2.destroy(); $3.destroy(); $5.destroy(); - $$ = $1; + std::string Name1 = getUniqueName($3.val, $2); + std::string Name2 = getUniqueName($5.val, $2); + *$1 += " " + $2->getNewTy() + " " + Name1 + ", " + Name2; + $$.val = $1; + $$.type = $2; + $3.destroy(); $5.destroy(); } | SetCondOps Types ValueRef ',' ValueRef { + std::string Name1 = getUniqueName($3.val, $2); + std::string Name2 = getUniqueName($5.val, $2); *$1 = getCompareOp(*$1, $2); - *$1 += " " + *$2.newTy + " " + *$3.val + ", " + *$5.val; - $2.destroy(); $3.destroy(); $5.destroy(); - $$ = $1; + *$1 += " " + $2->getNewTy() + " " + Name1 + ", " + Name2; + $$.val = $1; + $$.type = new TypeInfo("bool",BoolTy); + $3.destroy(); $5.destroy(); } | ICMP IPredicates Types ValueRef ',' ValueRef { - *$1 += " " + *$2 + " " + *$3.newTy + " " + *$4.val + "," + *$6.val; + std::string Name1 = getUniqueName($4.val, $3); + std::string Name2 = getUniqueName($6.val, $3); + *$1 += " " + *$2 + " " + $3->getNewTy() + " " + Name1 + "," + Name2; + $$.val = $1; + $$.type = new TypeInfo("bool",BoolTy); delete $2; $4.destroy(); $6.destroy(); - $$ = $1; } | FCMP FPredicates Types ValueRef ',' ValueRef { - *$1 += " " + *$2 + " " + *$3.newTy + " " + *$4.val + "," + *$6.val; + std::string Name1 = getUniqueName($4.val, $3); + std::string Name2 = getUniqueName($6.val, $3); + *$1 += " " + *$2 + " " + $3->getNewTy() + " " + Name1 + "," + Name2; + $$.val = $1; + $$.type = new TypeInfo("bool",BoolTy); delete $2; $4.destroy(); $6.destroy(); - $$ = $1; } | NOT ResolvedVal { - *$1 += " " + *$2.val; - $2.destroy(); - $$ = $1; + $$ = $2; + $$.val->insert(0, *$1 + " "); + delete $1; } | ShiftOps ResolvedVal ',' ResolvedVal { const char* shiftop = $1->c_str(); if (*$1 == "shr") - shiftop = ($2.type.isUnsigned()) ? "lshr" : "ashr"; - $$ = new std::string(shiftop); - *$$ += " " + *$2.val + ", " + *$4.val; - delete $1; $2.destroy(); $4.destroy(); + shiftop = ($2.type->isUnsigned()) ? "lshr" : "ashr"; + $$.val = new std::string(shiftop); + *$$.val += " " + *$2.val + ", " + *$4.val; + $$.type = $2.type; + delete $1; delete $2.val; $4.destroy(); } | CastOps ResolvedVal TO Types { std::string source = *$2.val; - TypeInfo SrcTy = $2.type; - TypeInfo DstTy = $4; - ResolveType(DstTy); - $$ = new std::string(); + TypeInfo* SrcTy = $2.type; + TypeInfo* DstTy = ResolveType($4); + $$.val = new std::string(); if (*$1 == "cast") { - *$$ += getCastUpgrade(source, SrcTy, DstTy, false); + *$$.val += getCastUpgrade(source, SrcTy, DstTy, false); } else { - *$$ += *$1 + " " + source + " to " + *DstTy.newTy; + *$$.val += *$1 + " " + source + " to " + DstTy->getNewTy(); } + $$.type = $4; // Check to see if this is a useless cast of a value to the same name // and the same type. Such casts will probably cause redefinition errors // when assembled and perform no code gen action so just remove them. if (*$1 == "cast" || *$1 == "bitcast") - if ($2.type.isInteger() && $4.isInteger() && - $2.type.getBitWidth() == $4.getBitWidth()) { + if ($2.type->isInteger() && DstTy->isInteger() && + $2.type->getBitWidth() == DstTy->getBitWidth()) { deleteUselessCastFlag = true; // Flag the "Inst" rule deleteUselessCastName = new std::string(*$2.val); // save the name size_t pos = deleteUselessCastName->find_first_of("%\"",0); @@ -1282,44 +1396,51 @@ } } delete $1; $2.destroy(); - delete $3; $4.destroy(); + delete $3; } | SELECT ResolvedVal ',' ResolvedVal ',' ResolvedVal { *$1 += " " + *$2.val + ", " + *$4.val + ", " + *$6.val; - $2.destroy(); $4.destroy(); $6.destroy(); - $$ = $1; + $$.val = $1; + $$.type = $4.type; + $2.destroy(); delete $4.val; $6.destroy(); } | VAARG ResolvedVal ',' Types { - *$1 += " " + *$2.val + ", " + *$4.newTy; - $2.destroy(); $4.destroy(); - $$ = $1; + *$1 += " " + *$2.val + ", " + $4->getNewTy(); + $$.val = $1; + $$.type = $4; + $2.destroy(); } | EXTRACTELEMENT ResolvedVal ',' ResolvedVal { *$1 += " " + *$2.val + ", " + *$4.val; - $2.destroy(); $4.destroy(); - $$ = $1; + $$.val = $1; + ResolveType($2.type); + $$.type = $2.type->getElementType()->clone(); + delete $2.val; $4.destroy(); } | INSERTELEMENT ResolvedVal ',' ResolvedVal ',' ResolvedVal { *$1 += " " + *$2.val + ", " + *$4.val + ", " + *$6.val; - $2.destroy(); $4.destroy(); $6.destroy(); - $$ = $1; + $$.val = $1; + $$.type = $2.type; + delete $2.val; $4.destroy(); $6.destroy(); } | SHUFFLEVECTOR ResolvedVal ',' ResolvedVal ',' ResolvedVal { *$1 += " " + *$2.val + ", " + *$4.val + ", " + *$6.val; - $2.destroy(); $4.destroy(); $6.destroy(); - $$ = $1; + $$.val = $1; + $$.type = $2.type; + delete $2.val; $4.destroy(); $6.destroy(); } | PHI_TOK PHIList { - *$1 += " " + *$2; - delete $2; - $$ = $1; + *$1 += " " + *$2.val; + $$.val = $1; + $$.type = $2.type; + delete $2.val; } | OptTailCall OptCallingConv TypesV ValueRef '(' ValueRefListE ')' { if (!$2->empty()) *$1 += " " + *$2; if (!$1->empty()) *$1 += " "; - *$1 += *$3.newTy + " " + *$4.val + "("; + *$1 += $3->getNewTy() + " " + *$4.val + "("; for (unsigned i = 0; i < $6->size(); ++i) { ValueInfo& VI = (*$6)[i]; *$1 += *VI.val; @@ -1328,8 +1449,9 @@ VI.destroy(); } *$1 += ")"; - delete $2; $3.destroy(); $4.destroy(); delete $6; - $$ = $1; + $$.val = $1; + $$.type = getFunctionReturnType($3); + delete $2; delete $3; $4.destroy(); delete $6; } | MemoryInst ; @@ -1346,74 +1468,85 @@ ; MemoryInst : MALLOC Types OptCAlign { - *$1 += " " + *$2.newTy; + *$1 += " " + $2->getNewTy(); if (!$3->empty()) *$1 += " " + *$3; - $2.destroy(); delete $3; - $$ = $1; + $$.val = $1; + $$.type = $2->getPointerType(); + delete $2; delete $3; } | MALLOC Types ',' UINT ValueRef OptCAlign { - *$1 += " " + *$2.newTy + ", " + *$4.newTy + " " + *$5.val; + std::string Name = getUniqueName($5.val, $4); + *$1 += " " + $2->getNewTy() + ", " + $4->getNewTy() + " " + Name; if (!$6->empty()) *$1 += " " + *$6; - $2.destroy(); $4.destroy(); $5.destroy(); delete $6; - $$ = $1; + $$.val = $1; + $$.type = $2->getPointerType(); + delete $2; delete $4; $5.destroy(); delete $6; } | ALLOCA Types OptCAlign { - *$1 += " " + *$2.newTy; + *$1 += " " + $2->getNewTy(); if (!$3->empty()) *$1 += " " + *$3; - $2.destroy(); delete $3; - $$ = $1; + $$.val = $1; + $$.type = $2->getPointerType(); + delete $2; delete $3; } | ALLOCA Types ',' UINT ValueRef OptCAlign { - *$1 += " " + *$2.newTy + ", " + *$4.newTy + " " + *$5.val; + std::string Name = getUniqueName($5.val, $4); + *$1 += " " + $2->getNewTy() + ", " + $4->getNewTy() + " " + Name; if (!$6->empty()) *$1 += " " + *$6; - $2.destroy(); $4.destroy(); $5.destroy(); delete $6; - $$ = $1; + $$.val = $1; + $$.type = $2->getPointerType(); + delete $2; delete $4; $5.destroy(); delete $6; } | FREE ResolvedVal { *$1 += " " + *$2.val; + $$.val = $1; + $$.type = new TypeInfo("void", VoidTy); $2.destroy(); - $$ = $1; } | OptVolatile LOAD Types ValueRef { + std::string Name = getUniqueName($4.val, $3); if (!$1->empty()) *$1 += " "; - *$1 += *$2 + " " + *$3.newTy + " " + *$4.val; - delete $2; $3.destroy(); $4.destroy(); - $$ = $1; + *$1 += *$2 + " " + $3->getNewTy() + " " + Name; + $$.val = $1; + $$.type = $3->getElementType()->clone(); + delete $2; delete $3; $4.destroy(); } | OptVolatile STORE ResolvedVal ',' Types ValueRef { + std::string Name = getUniqueName($6.val, $5); if (!$1->empty()) *$1 += " "; - *$1 += *$2 + " " + *$3.val + ", " + *$5.newTy + " " + *$6.val; - delete $2; $3.destroy(); $5.destroy(); $6.destroy(); - $$ = $1; + *$1 += *$2 + " " + *$3.val + ", " + $5->getNewTy() + " " + Name; + $$.val = $1; + $$.type = new TypeInfo("void", VoidTy); + delete $2; $3.destroy(); delete $5; $6.destroy(); } | GETELEMENTPTR Types ValueRef IndexList { + std::string Name = getUniqueName($3.val, $2); // Upgrade the indices for (unsigned i = 0; i < $4->size(); ++i) { ValueInfo& VI = (*$4)[i]; - if (VI.type.isUnsigned() && !VI.isConstant() && - VI.type.getBitWidth() < 64) { + if (VI.type->isUnsigned() && !VI.isConstant() && + VI.type->getBitWidth() < 64) { std::string* old = VI.val; *O << " %gep_upgrade" << unique << " = zext " << *old << " to i64\n"; VI.val = new std::string("i64 %gep_upgrade" + llvm::utostr(unique++)); - VI.type.oldTy = ULongTy; - delete old; + VI.type->setOldTy(ULongTy); } } - *$1 += " " + *$2.newTy + " " + *$3.val; + *$1 += " " + $2->getNewTy() + " " + Name; for (unsigned i = 0; i < $4->size(); ++i) { ValueInfo& VI = (*$4)[i]; *$1 += ", " + *VI.val; - VI.destroy(); } - $2.destroy(); $3.destroy(); delete $4; - $$ = $1; + $$.val = $1; + $$.type = getGEPIndexedType($2,$4); + $3.destroy(); delete $4; }; %% From reid at x10sys.com Mon Jan 1 23:48:47 2007 From: reid at x10sys.com (Reid Spencer) Date: Mon, 1 Jan 2007 23:48:47 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/Assembler/2007-01-01-Cast-To-Bool.ll Message-ID: <200701020548.l025mlae007707@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/Assembler: 2007-01-01-Cast-To-Bool.ll added (r1.1) --- Log message: For PR1070: http://llvm.org/PR1070 : Add a test case to ensure that llvm-upgrade retains correct semantics for the previous definition of "cast to bool" which compared against null. --- Diffs of the changes: (+5 -0) 2007-01-01-Cast-To-Bool.ll | 5 +++++ 1 files changed, 5 insertions(+) Index: llvm/test/Regression/Assembler/2007-01-01-Cast-To-Bool.ll diff -c /dev/null llvm/test/Regression/Assembler/2007-01-01-Cast-To-Bool.ll:1.1 *** /dev/null Mon Jan 1 23:48:42 2007 --- llvm/test/Regression/Assembler/2007-01-01-Cast-To-Bool.ll Mon Jan 1 23:48:32 2007 *************** *** 0 **** --- 1,5 ---- + ; RUN: llvm-upgrade < %s | llvm-as | llvm-dis | grep 'icmp ne' + bool %main(int %X) { + %res = cast bool true to bool + ret bool %res + } From reid at x10sys.com Mon Jan 1 23:50:26 2007 From: reid at x10sys.com (Reid Spencer) Date: Mon, 1 Jan 2007 23:50:26 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/Assembler/2006-12-09-Cast-To-Bool.ll Message-ID: <200701020550.l025oQDW007756@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/Assembler: 2006-12-09-Cast-To-Bool.ll updated: 1.2 -> 1.3 --- Log message: Manually upgrade this test case to make sure that the new cast-to-bool semantics are retained. --- Diffs of the changes: (+3 -3) 2006-12-09-Cast-To-Bool.ll | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) Index: llvm/test/Regression/Assembler/2006-12-09-Cast-To-Bool.ll diff -u llvm/test/Regression/Assembler/2006-12-09-Cast-To-Bool.ll:1.2 llvm/test/Regression/Assembler/2006-12-09-Cast-To-Bool.ll:1.3 --- llvm/test/Regression/Assembler/2006-12-09-Cast-To-Bool.ll:1.2 Sat Dec 9 13:39:56 2006 +++ llvm/test/Regression/Assembler/2006-12-09-Cast-To-Bool.ll Mon Jan 1 23:50:11 2007 @@ -1,5 +1,5 @@ -; RUN: llvm-upgrade < %s | llvm-as | llvm-dis | grep bitcast -bool %main(int %X) { - %res = cast bool true to bool +; RUN: llvm-as < %s | llvm-dis | grep bitcast +define bool %main(i32 %X) { + %res = bitcast bool true to bool ret bool %res } From reid at x10sys.com Mon Jan 1 23:53:25 2007 From: reid at x10sys.com (Reid Spencer) Date: Mon, 1 Jan 2007 23:53:25 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/CodeGen/PowerPC/branch-opt.ll rotl.ll Message-ID: <200701020553.l025rP0u007840@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/CodeGen/PowerPC: branch-opt.ll updated: 1.4 -> 1.5 rotl.ll updated: 1.3 -> 1.4 --- Log message: For PR1070: http://llvm.org/PR1070 : Revert previous patch now that llvm-upgrade can handle collapsed type plane conversion properly. --- Diffs of the changes: (+21 -16) branch-opt.ll | 17 +++++++++-------- rotl.ll | 20 ++++++++++++-------- 2 files changed, 21 insertions(+), 16 deletions(-) Index: llvm/test/Regression/CodeGen/PowerPC/branch-opt.ll diff -u llvm/test/Regression/CodeGen/PowerPC/branch-opt.ll:1.4 llvm/test/Regression/CodeGen/PowerPC/branch-opt.ll:1.5 --- llvm/test/Regression/CodeGen/PowerPC/branch-opt.ll:1.4 Sun Dec 31 00:01:59 2006 +++ llvm/test/Regression/CodeGen/PowerPC/branch-opt.ll Mon Jan 1 23:53:06 2007 @@ -9,10 +9,10 @@ void %foo(int %W, int %X, int %Y, int %Z) { entry: - %X.u = cast int %X to uint ; [#uses=1] - %Y.u = cast int %Y to uint ; [#uses=1] - %Z.u = cast int %Z to uint ; [#uses=1] - %W.u = cast int %W to uint ; [#uses=1] + %X = cast int %X to uint ; [#uses=1] + %Y = cast int %Y to uint ; [#uses=1] + %Z = cast int %Z to uint ; [#uses=1] + %W = cast int %W to uint ; [#uses=1] %tmp1 = and int %W, 1 ; [#uses=1] %tmp1 = seteq int %tmp1, 0 ; [#uses=1] br bool %tmp1, label %cond_false, label %bb5 @@ -21,7 +21,7 @@ %indvar77 = phi uint [ %indvar.next78, %bb ], [ 0, %bb5 ] ; [#uses=1] %tmp2 = tail call int (...)* %bar( ) ; [#uses=0] %indvar.next78 = add uint %indvar77, 1 ; [#uses=2] - %exitcond79 = seteq uint %indvar.next78, %X.u ; [#uses=1] + %exitcond79 = seteq uint %indvar.next78, %X ; [#uses=1] br bool %exitcond79, label %cond_next48, label %bb bb5: ; preds = %entry @@ -37,7 +37,7 @@ %indvar72 = phi uint [ %indvar.next73, %bb12 ], [ 0, %bb16 ] ; [#uses=1] %tmp13 = tail call int (...)* %bar( ) ; [#uses=0] %indvar.next73 = add uint %indvar72, 1 ; [#uses=2] - %exitcond74 = seteq uint %indvar.next73, %Y.u ; [#uses=1] + %exitcond74 = seteq uint %indvar.next73, %Y ; [#uses=1] br bool %exitcond74, label %cond_next48, label %bb12 bb16: ; preds = %cond_false @@ -53,7 +53,7 @@ %indvar67 = phi uint [ %indvar.next68, %bb25 ], [ 0, %bb29 ] ; [#uses=1] %tmp26 = tail call int (...)* %bar( ) ; [#uses=0] %indvar.next68 = add uint %indvar67, 1 ; [#uses=2] - %exitcond69 = seteq uint %indvar.next68, %Z.u ; [#uses=1] + %exitcond69 = seteq uint %indvar.next68, %Z ; [#uses=1] br bool %exitcond69, label %cond_next48, label %bb25 bb29: ; preds = %cond_false20 @@ -72,8 +72,9 @@ bb42: ; preds = %cond_false33, %bb38 %indvar = phi uint [ %indvar.next, %bb38 ], [ 0, %cond_false33 ] ; [#uses=3] + %indvar = cast uint %indvar to int ; [#uses=1] %W_addr.0 = sub int %W, %indvar ; [#uses=1] - %exitcond = seteq uint %indvar, %W.u ; [#uses=1] + %exitcond = seteq uint %indvar, %W ; [#uses=1] br bool %exitcond, label %cond_next48, label %bb38 cond_next48: ; preds = %bb, %bb12, %bb25, %bb42, %cond_false33, %bb29, %bb16, %bb5 Index: llvm/test/Regression/CodeGen/PowerPC/rotl.ll diff -u llvm/test/Regression/CodeGen/PowerPC/rotl.ll:1.3 llvm/test/Regression/CodeGen/PowerPC/rotl.ll:1.4 --- llvm/test/Regression/CodeGen/PowerPC/rotl.ll:1.3 Sun Dec 31 00:01:59 2006 +++ llvm/test/Regression/CodeGen/PowerPC/rotl.ll Mon Jan 1 23:53:06 2007 @@ -7,11 +7,12 @@ int %rotlw(uint %x, int %sh) { entry: %tmp.3 = cast int %sh to ubyte ; [#uses=1] - %x.s = cast uint %x to int ; [#uses=1] + %x = cast uint %x to int ; [#uses=1] %tmp.7 = sub int 32, %sh ; [#uses=1] %tmp.9 = cast int %tmp.7 to ubyte ; [#uses=1] %tmp.10 = shr uint %x, ubyte %tmp.9 ; [#uses=1] - %tmp.4 = shl int %x.s, ubyte %tmp.3 ; [#uses=1] + %tmp.4 = shl int %x, ubyte %tmp.3 ; [#uses=1] + %tmp.10 = cast uint %tmp.10 to int ; [#uses=1] %tmp.12 = or int %tmp.10, %tmp.4 ; [#uses=1] ret int %tmp.12 } @@ -22,17 +23,19 @@ %tmp.4 = shr uint %x, ubyte %tmp.3 ; [#uses=1] %tmp.7 = sub int 32, %sh ; [#uses=1] %tmp.9 = cast int %tmp.7 to ubyte ; [#uses=1] - %x.s = cast uint %x to int ; [#uses=1] - %tmp.10 = shl int %x.s, ubyte %tmp.9 ; [#uses=1] + %x = cast uint %x to int ; [#uses=1] + %tmp.4 = cast uint %tmp.4 to int ; [#uses=1] + %tmp.10 = shl int %x, ubyte %tmp.9 ; [#uses=1] %tmp.12 = or int %tmp.4, %tmp.10 ; [#uses=1] ret int %tmp.12 } int %rotlwi(uint %x) { entry: - %x.s = cast uint %x to int ; [#uses=1] + %x = cast uint %x to int ; [#uses=1] %tmp.7 = shr uint %x, ubyte 27 ; [#uses=1] - %tmp.3 = shl int %x.s, ubyte 5 ; [#uses=1] + %tmp.3 = shl int %x, ubyte 5 ; [#uses=1] + %tmp.7 = cast uint %tmp.7 to int ; [#uses=1] %tmp.9 = or int %tmp.3, %tmp.7 ; [#uses=1] ret int %tmp.9 } @@ -40,8 +43,9 @@ int %rotrwi(uint %x) { entry: %tmp.3 = shr uint %x, ubyte 5 ; [#uses=1] - %x.s = cast uint %x to int ; [#uses=1] - %tmp.7 = shl int %x.s, ubyte 27 ; [#uses=1] + %x = cast uint %x to int ; [#uses=1] + %tmp.3 = cast uint %tmp.3 to int ; [#uses=1] + %tmp.7 = shl int %x, ubyte 27 ; [#uses=1] %tmp.9 = or int %tmp.3, %tmp.7 ; [#uses=1] ret int %tmp.9 } From reid at x10sys.com Mon Jan 1 23:53:25 2007 From: reid at x10sys.com (Reid Spencer) Date: Mon, 1 Jan 2007 23:53:25 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/CodeGen/Generic/SwitchLowering.ll Message-ID: <200701020553.l025rPE4007835@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/CodeGen/Generic: SwitchLowering.ll updated: 1.3 -> 1.4 --- Log message: For PR1070: http://llvm.org/PR1070 : Revert previous patch now that llvm-upgrade can handle collapsed type plane conversion properly. --- Diffs of the changes: (+1 -0) SwitchLowering.ll | 1 + 1 files changed, 1 insertion(+) Index: llvm/test/Regression/CodeGen/Generic/SwitchLowering.ll diff -u llvm/test/Regression/CodeGen/Generic/SwitchLowering.ll:1.3 llvm/test/Regression/CodeGen/Generic/SwitchLowering.ll:1.4 --- llvm/test/Regression/CodeGen/Generic/SwitchLowering.ll:1.3 Sun Dec 31 00:01:59 2006 +++ llvm/test/Regression/CodeGen/Generic/SwitchLowering.ll Mon Jan 1 23:53:06 2007 @@ -19,6 +19,7 @@ ] bb7: ; preds = %bb, %bb + %tmp = cast sbyte %tmp to ubyte ; [#uses=1] tail call void %foo( ubyte %tmp ) ret sbyte* %tmp2 } From reid at x10sys.com Mon Jan 1 23:53:26 2007 From: reid at x10sys.com (Reid Spencer) Date: Mon, 1 Jan 2007 23:53:26 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/CodeGen/X86/2006-05-02-InstrSched1.ll Message-ID: <200701020553.l025rQna007847@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/CodeGen/X86: 2006-05-02-InstrSched1.ll updated: 1.3 -> 1.4 --- Log message: For PR1070: http://llvm.org/PR1070 : Revert previous patch now that llvm-upgrade can handle collapsed type plane conversion properly. --- Diffs of the changes: (+4 -2) 2006-05-02-InstrSched1.ll | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-) Index: llvm/test/Regression/CodeGen/X86/2006-05-02-InstrSched1.ll diff -u llvm/test/Regression/CodeGen/X86/2006-05-02-InstrSched1.ll:1.3 llvm/test/Regression/CodeGen/X86/2006-05-02-InstrSched1.ll:1.4 --- llvm/test/Regression/CodeGen/X86/2006-05-02-InstrSched1.ll:1.3 Sun Dec 31 00:01:59 2006 +++ llvm/test/Regression/CodeGen/X86/2006-05-02-InstrSched1.ll Mon Jan 1 23:53:06 2007 @@ -11,8 +11,10 @@ %tmp4 = getelementptr ubyte* %tmp, uint %tmp3 ; [#uses=1] %tmp7 = load uint* %tmp ; [#uses=1] %tmp8 = getelementptr ubyte* %tmp, uint %tmp7 ; [#uses=1] - %result = tail call int %memcmp( sbyte* %tmp8, sbyte* %tmp4, uint %tmp ) ; [#uses=1] - ret int %result + %tmp8 = cast ubyte* %tmp8 to sbyte* ; [#uses=1] + %tmp4 = cast ubyte* %tmp4 to sbyte* ; [#uses=1] + %tmp = tail call int %memcmp( sbyte* %tmp8, sbyte* %tmp4, uint %tmp ) ; [#uses=1] + ret int %tmp } declare int %memcmp(sbyte*, sbyte*, uint) From reid at x10sys.com Mon Jan 1 23:53:27 2007 From: reid at x10sys.com (Reid Spencer) Date: Mon, 1 Jan 2007 23:53:27 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/Transforms/InstCombine/2006-05-06-Infloop.ll Message-ID: <200701020553.l025rR8Z007853@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/Transforms/InstCombine: 2006-05-06-Infloop.ll updated: 1.3 -> 1.4 --- Log message: For PR1070: http://llvm.org/PR1070 : Revert previous patch now that llvm-upgrade can handle collapsed type plane conversion properly. --- Diffs of the changes: (+14 -4) 2006-05-06-Infloop.ll | 18 ++++++++++++++---- 1 files changed, 14 insertions(+), 4 deletions(-) Index: llvm/test/Regression/Transforms/InstCombine/2006-05-06-Infloop.ll diff -u llvm/test/Regression/Transforms/InstCombine/2006-05-06-Infloop.ll:1.3 llvm/test/Regression/Transforms/InstCombine/2006-05-06-Infloop.ll:1.4 --- llvm/test/Regression/Transforms/InstCombine/2006-05-06-Infloop.ll:1.3 Sun Dec 31 00:01:59 2006 +++ llvm/test/Regression/Transforms/InstCombine/2006-05-06-Infloop.ll Mon Jan 1 23:53:06 2007 @@ -10,7 +10,7 @@ int %mem_mono_copy_mono(%struct.gx_device* %dev, ubyte* %base, int %sourcex, int %raster, int %x, int %y, int %w, int %h, uint %zero, uint %one) { entry: - %raster.ui = cast int %raster to uint ; [#uses=3] + %raster = cast int %raster to uint ; [#uses=3] %tmp = seteq uint %one, %zero ; [#uses=1] br bool %tmp, label %cond_true, label %cond_next @@ -146,6 +146,7 @@ %optr.3.2 = phi ubyte* [ %tmp232, %cond_true249 ], [ %dest.1.0, %cond_true249.preheader ] ; [#uses=1] %bptr.3.2 = phi ubyte* [ %tmp226, %cond_true249 ], [ %line.1.0, %cond_true249.preheader ] ; [#uses=1] %tmp. = add int %tmp109, %w ; [#uses=1] + %indvar = cast uint %indvar to int ; [#uses=1] %tmp.58 = mul int %indvar, -8 ; [#uses=1] %tmp.57 = add int %tmp., -16 ; [#uses=1] %tmp246.2 = add int %tmp.58, %tmp.57 ; [#uses=1] @@ -235,8 +236,10 @@ %dest.1.0.us = phi ubyte* [ %tmp286.us, %cond_next280.us ], [ %tmp100, %cond_true295.preheader.split.us ] ; [#uses=3] %dest_line.1.0.us = phi ubyte** [ %tmp282.us, %cond_next280.us ], [ %tmp96, %cond_true295.preheader.split.us ] ; [#uses=1] %tmp.89 = sub uint 0, %indvar86 ; [#uses=1] + %tmp.89 = cast uint %tmp.89 to int ; [#uses=1] %tmp292.0.us = add int %tmp.89, %tmp29222 ; [#uses=1] - %tmp.91 = mul uint %indvar86, %raster.ui ; [#uses=1] + %tmp.91 = mul uint %indvar86, %raster ; [#uses=1] + %tmp.91 = cast uint %tmp.91 to int ; [#uses=1] %tmp104.sum101 = add int %tmp102, %tmp.91 ; [#uses=1] %line.1.0.us = getelementptr ubyte* %base, int %tmp104.sum101 ; [#uses=2] %tmp.us = load ubyte* %line.1.0.us ; [#uses=1] @@ -310,8 +313,10 @@ %dest.1.0 = phi ubyte* [ %tmp286, %cond_next280 ], [ %tmp100, %cond_true295.preheader.split ] ; [#uses=4] %dest_line.1.0 = phi ubyte** [ %tmp282, %cond_next280 ], [ %tmp96, %cond_true295.preheader.split ] ; [#uses=1] %tmp.63 = sub uint 0, %indvar60 ; [#uses=1] + %tmp.63 = cast uint %tmp.63 to int ; [#uses=1] %tmp292.0 = add int %tmp.63, %tmp29222 ; [#uses=1] - %tmp.65 = mul uint %indvar60, %raster.ui ; [#uses=1] + %tmp.65 = mul uint %indvar60, %raster ; [#uses=1] + %tmp.65 = cast uint %tmp.65 to int ; [#uses=1] %tmp104.sum97 = add int %tmp102, %tmp.65 ; [#uses=1] %line.1.0 = getelementptr ubyte* %base, int %tmp104.sum97 ; [#uses=3] %tmp = load ubyte* %line.1.0 ; [#uses=1] @@ -381,6 +386,7 @@ %optr309.3.0 = phi ubyte* [ %optr309.3, %cond_true398 ], [ %optr309.353, %cond_true398.preheader ] ; [#uses=2] %optr309.3.in.0 = add uint %indvar66, %optr309.3.in51 ; [#uses=1] %tmp.70 = add int %tmp109, %w ; [#uses=1] + %indvar66 = cast uint %indvar66 to int ; [#uses=1] %tmp.72 = mul int %indvar66, -8 ; [#uses=1] %tmp.71 = add int %tmp.70, -8 ; [#uses=1] %count308.3.0 = add int %tmp.72, %tmp.71 ; [#uses=1] @@ -434,6 +440,7 @@ %tmp416 = load ubyte* %tmp410 ; [#uses=1] %tmp416 = cast ubyte %tmp416 to uint ; [#uses=1] %tmp418 = shr uint %tmp416, ubyte %tmp319 ; [#uses=1] + %tmp418 = cast uint %tmp418 to int ; [#uses=1] %tmp420 = add int %tmp418, %tmp408 ; [#uses=1] br label %cond_next422 @@ -472,6 +479,7 @@ %tmp354 = and uint %iftmp.37.0, %mask.1.1 ; [#uses=1] %tmp361 = sub int %w, %tmp110 ; [#uses=2] %tmp39755 = setgt int %tmp361, 7 ; [#uses=1] + %iftmp.35.0 = cast uint %iftmp.35.0 to int ; [#uses=1] %tmp426 = cast uint %rmask.0.1 to ubyte ; [#uses=1] %tmp426not = xor ubyte %tmp426, 255 ; [#uses=1] %tmp428 = or ubyte %tmp347, %tmp426not ; [#uses=1] @@ -484,8 +492,10 @@ %dest.3.0 = phi ubyte* [ %tmp448, %cond_next442 ], [ %tmp100, %cond_true457.preheader ] ; [#uses=3] %dest_line.3.0 = phi ubyte** [ %tmp444, %cond_next442 ], [ %tmp96, %cond_true457.preheader ] ; [#uses=1] %tmp.77 = sub uint 0, %indvar74 ; [#uses=1] + %tmp.77 = cast uint %tmp.77 to int ; [#uses=1] %tmp454.0 = add int %tmp.77, %tmp45438 ; [#uses=1] - %tmp.79 = mul uint %indvar74, %raster.ui ; [#uses=1] + %tmp.79 = mul uint %indvar74, %raster ; [#uses=1] + %tmp.79 = cast uint %tmp.79 to int ; [#uses=1] %tmp104.sum = add int %tmp102, %tmp.79 ; [#uses=1] %line.3.0 = getelementptr ubyte* %base, int %tmp104.sum ; [#uses=3] %tmp318 = load ubyte* %line.3.0 ; [#uses=2] From reid at x10sys.com Mon Jan 1 23:55:28 2007 From: reid at x10sys.com (Reid Spencer) Date: Mon, 1 Jan 2007 23:55:28 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/Linker/weakextern.ll Message-ID: <200701020555.l025tSku007924@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/Linker: weakextern.ll updated: 1.3 -> 1.4 --- Log message: For PR1070: http://llvm.org/PR1070 : Tweak the RUN: lines of these tests to accommodate the renaming of variables done by llvm-upgrade. The renaming occurs as a result of avoiding name collisons for collapsed type planes. Conflicting names have a .u (unsigned) or .s (signed) suffix added. This patch updates the grep expression to accommodate the new names. --- Diffs of the changes: (+2 -2) weakextern.ll | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) Index: llvm/test/Regression/Linker/weakextern.ll diff -u llvm/test/Regression/Linker/weakextern.ll:1.3 llvm/test/Regression/Linker/weakextern.ll:1.4 --- llvm/test/Regression/Linker/weakextern.ll:1.3 Sun Dec 31 00:01:59 2006 +++ llvm/test/Regression/Linker/weakextern.ll Mon Jan 1 23:55:05 2007 @@ -2,8 +2,8 @@ ; RUN: llvm-upgrade < `dirname %s`/testlink1.ll | llvm-as > %t2.bc ; RUN: llvm-link %t.bc %t.bc %t2.bc -o %t1.bc -f ; RUN: llvm-dis < %t1.bc | grep "kallsyms_names = extern_weak" && -; RUN: llvm-dis < %t1.bc | grep "MyVar = external global i32" && -; RUN: llvm-dis < %t1.bc | grep "Inte = global i32" +; RUN: llvm-dis < %t1.bc | grep "MyVar.s = external global i32" && +; RUN: llvm-dis < %t1.bc | grep "Inte.s = global i32" %kallsyms_names = extern_weak global [0 x ubyte] %MyVar = extern_weak global int From reid at x10sys.com Mon Jan 1 23:55:30 2007 From: reid at x10sys.com (Reid Spencer) Date: Mon, 1 Jan 2007 23:55:30 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/CodeGen/ARM/constants.ll Message-ID: <200701020555.l025tUsW007929@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/CodeGen/ARM: constants.ll updated: 1.6 -> 1.7 --- Log message: For PR1070: http://llvm.org/PR1070 : Tweak the RUN: lines of these tests to accommodate the renaming of variables done by llvm-upgrade. The renaming occurs as a result of avoiding name collisons for collapsed type planes. Conflicting names have a .u (unsigned) or .s (signed) suffix added. This patch updates the grep expression to accommodate the new names. --- Diffs of the changes: (+9 -9) constants.ll | 18 +++++++++--------- 1 files changed, 9 insertions(+), 9 deletions(-) Index: llvm/test/Regression/CodeGen/ARM/constants.ll diff -u llvm/test/Regression/CodeGen/ARM/constants.ll:1.6 llvm/test/Regression/CodeGen/ARM/constants.ll:1.7 --- llvm/test/Regression/CodeGen/ARM/constants.ll:1.6 Thu Dec 14 12:58:37 2006 +++ llvm/test/Regression/CodeGen/ARM/constants.ll Mon Jan 1 23:55:05 2007 @@ -1,12 +1,12 @@ -; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm && -; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep "mov r0, #0" | wc -l | grep 1 && -; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep "mov r0, #255" | wc -l | grep 1 && -; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep "mov r0, #256" | wc -l | grep 1 && -; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep ".word.*257" | wc -l | grep 1 && -; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep "mov r0, #-1073741761" | wc -l | grep 1 && -; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep "mov r0, #1008" | wc -l | grep 1 && -; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep "cmp r0, #65536" | wc -l | grep 1 && -; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep "\.comm.*a,4,4" | wc -l | grep 1 +; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -o %t.s -f && +; RUN: grep "mov r0, #0" %t.s | wc -l | grep 1 && +; RUN: grep "mov r0, #255" %t.s | wc -l | grep 1 && +; RUN: grep "mov r0, #256" %t.s | wc -l | grep 1 && +; RUN: grep ".word.*257" %t.s | wc -l | grep 1 && +; RUN: grep "mov r0, #-1073741761" %t.s | wc -l | grep 1 && +; RUN: grep "mov r0, #1008" %t.s | wc -l | grep 1 && +; RUN: grep "cmp r0, #65536" %t.s | wc -l | grep 1 && +; RUN: grep "\.comm.*a.s,4,4" %t.s | wc -l | grep 1 %a = internal global int 0 From reid at x10sys.com Mon Jan 1 23:55:30 2007 From: reid at x10sys.com (Reid Spencer) Date: Mon, 1 Jan 2007 23:55:30 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/Transforms/LCSSA/2006-06-12-MultipleExitsSameBlock.ll basictest.ll Message-ID: <200701020555.l025tUpO007943@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/Transforms/LCSSA: 2006-06-12-MultipleExitsSameBlock.ll updated: 1.2 -> 1.3 basictest.ll updated: 1.6 -> 1.7 --- Log message: For PR1070: http://llvm.org/PR1070 : Tweak the RUN: lines of these tests to accommodate the renaming of variables done by llvm-upgrade. The renaming occurs as a result of avoiding name collisons for collapsed type planes. Conflicting names have a .u (unsigned) or .s (signed) suffix added. This patch updates the grep expression to accommodate the new names. --- Diffs of the changes: (+8 -4) 2006-06-12-MultipleExitsSameBlock.ll | 6 ++++-- basictest.ll | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) Index: llvm/test/Regression/Transforms/LCSSA/2006-06-12-MultipleExitsSameBlock.ll diff -u llvm/test/Regression/Transforms/LCSSA/2006-06-12-MultipleExitsSameBlock.ll:1.2 llvm/test/Regression/Transforms/LCSSA/2006-06-12-MultipleExitsSameBlock.ll:1.3 --- llvm/test/Regression/Transforms/LCSSA/2006-06-12-MultipleExitsSameBlock.ll:1.2 Fri Dec 1 22:23:09 2006 +++ llvm/test/Regression/Transforms/LCSSA/2006-06-12-MultipleExitsSameBlock.ll Mon Jan 1 23:55:05 2007 @@ -1,5 +1,7 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -lcssa | llvm-dis | grep "%X.1.lcssa" && -; RUN: llvm-upgrade < %s | llvm-as | opt -lcssa | llvm-dis | not grep "%X.1.lcssa1" +; RUN: llvm-upgrade < %s | llvm-as | opt -lcssa | llvm-dis | \ +; RUN: grep "%X.1.s.lcssa" && +; RUN: llvm-upgrade < %s | llvm-as | opt -lcssa | llvm-dis | \ +; RUN: not grep "%X.1.s.lcssa1" declare bool %c1() declare bool %c2() Index: llvm/test/Regression/Transforms/LCSSA/basictest.ll diff -u llvm/test/Regression/Transforms/LCSSA/basictest.ll:1.6 llvm/test/Regression/Transforms/LCSSA/basictest.ll:1.7 --- llvm/test/Regression/Transforms/LCSSA/basictest.ll:1.6 Sun Dec 31 00:01:59 2006 +++ llvm/test/Regression/Transforms/LCSSA/basictest.ll Mon Jan 1 23:55:05 2007 @@ -1,5 +1,7 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -lcssa | llvm-dis | grep "X3.lcssa = phi i32" && -; RUN: llvm-upgrade < %s | llvm-as | opt -lcssa | llvm-dis | grep "%X4 = add i32 3, %X3.lcssa" +; RUN: llvm-upgrade < %s | llvm-as | opt -lcssa | llvm-dis | \ +; RUN: grep "X3.s.lcssa = phi i32" && +; RUN: llvm-upgrade < %s | llvm-as | opt -lcssa | llvm-dis | \ +; RUN: grep "%X4.s = add i32 3, %X3.s.lcssa" void %lcssa(bool %S2) { entry: From reid at x10sys.com Mon Jan 1 23:55:30 2007 From: reid at x10sys.com (Reid Spencer) Date: Mon, 1 Jan 2007 23:55:30 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/Transforms/InstCombine/sub.ll zeroext-and-reduce.ll Message-ID: <200701020555.l025tUAj007934@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/Transforms/InstCombine: sub.ll updated: 1.24 -> 1.25 zeroext-and-reduce.ll updated: 1.3 -> 1.4 --- Log message: For PR1070: http://llvm.org/PR1070 : Tweak the RUN: lines of these tests to accommodate the renaming of variables done by llvm-upgrade. The renaming occurs as a result of avoiding name collisons for collapsed type planes. Conflicting names have a .u (unsigned) or .s (signed) suffix added. This patch updates the grep expression to accommodate the new names. --- Diffs of the changes: (+4 -2) sub.ll | 3 ++- zeroext-and-reduce.ll | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) Index: llvm/test/Regression/Transforms/InstCombine/sub.ll diff -u llvm/test/Regression/Transforms/InstCombine/sub.ll:1.24 llvm/test/Regression/Transforms/InstCombine/sub.ll:1.25 --- llvm/test/Regression/Transforms/InstCombine/sub.ll:1.24 Sun Dec 31 00:01:59 2006 +++ llvm/test/Regression/Transforms/InstCombine/sub.ll Mon Jan 1 23:55:05 2007 @@ -1,7 +1,8 @@ ; This test makes sure that these instructions are properly eliminated. ; -; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine | llvm-dis | grep -v 'sub i32 %Cok, %Bok' | not grep sub +; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine | llvm-dis | \ +; RUN: grep -v 'sub i32 %Cok.s, %Bok.s' | not grep sub implementation Index: llvm/test/Regression/Transforms/InstCombine/zeroext-and-reduce.ll diff -u llvm/test/Regression/Transforms/InstCombine/zeroext-and-reduce.ll:1.3 llvm/test/Regression/Transforms/InstCombine/zeroext-and-reduce.ll:1.4 --- llvm/test/Regression/Transforms/InstCombine/zeroext-and-reduce.ll:1.3 Sun Dec 31 00:01:59 2006 +++ llvm/test/Regression/Transforms/InstCombine/zeroext-and-reduce.ll Mon Jan 1 23:55:05 2007 @@ -1,4 +1,5 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine | llvm-dis | grep 'and i32 %Y, 8' +; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine | llvm-dis | \ +; RUN: grep 'and i32 %Y.s, 8' int %test1(ubyte %X) { %Y = cast ubyte %X to int From reid at x10sys.com Mon Jan 1 23:55:31 2007 From: reid at x10sys.com (Reid Spencer) Date: Mon, 1 Jan 2007 23:55:31 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/Assembler/2004-11-28-InvalidTypeCrash.ll Message-ID: <200701020555.l025tV4k007948@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/Assembler: 2004-11-28-InvalidTypeCrash.ll updated: 1.2 -> 1.3 --- Log message: For PR1070: http://llvm.org/PR1070 : Tweak the RUN: lines of these tests to accommodate the renaming of variables done by llvm-upgrade. The renaming occurs as a result of avoiding name collisons for collapsed type planes. Conflicting names have a .u (unsigned) or .s (signed) suffix added. This patch updates the grep expression to accommodate the new names. --- Diffs of the changes: (+1 -1) 2004-11-28-InvalidTypeCrash.ll | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/test/Regression/Assembler/2004-11-28-InvalidTypeCrash.ll diff -u llvm/test/Regression/Assembler/2004-11-28-InvalidTypeCrash.ll:1.2 llvm/test/Regression/Assembler/2004-11-28-InvalidTypeCrash.ll:1.3 --- llvm/test/Regression/Assembler/2004-11-28-InvalidTypeCrash.ll:1.2 Sat Dec 2 14:34:08 2006 +++ llvm/test/Regression/Assembler/2004-11-28-InvalidTypeCrash.ll Mon Jan 1 23:55:05 2007 @@ -1,3 +1,3 @@ -; RUN: (llvm-upgrade < %s | llvm-as -o /dev/null -f) 2>&1 | grep 'Cannot create a' +; RUN: (llvm-upgrade < %s | llvm-as -o /dev/null -f) 2>&1 | grep 'Cannot resolve type' ; Test for PR463. This program is erroneous, but should not crash llvm-as. %.FOO = internal global %struct.none zeroinitializer From reid at x10sys.com Mon Jan 1 23:55:24 2007 From: reid at x10sys.com (Reid Spencer) Date: Mon, 1 Jan 2007 23:55:24 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/CodeGen/PowerPC/darwin-labels.ll Message-ID: <200701020555.l025tOXK007917@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/CodeGen/PowerPC: darwin-labels.ll updated: 1.2 -> 1.3 --- Log message: For PR1070: http://llvm.org/PR1070 : Tweak the RUN: lines of these tests to accommodate the renaming of variables done by llvm-upgrade. The renaming occurs as a result of avoiding name collisons for collapsed type planes. Conflicting names have a .u (unsigned) or .s (signed) suffix added. This patch updates the grep expression to accommodate the new names. --- Diffs of the changes: (+1 -1) darwin-labels.ll | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/test/Regression/CodeGen/PowerPC/darwin-labels.ll diff -u llvm/test/Regression/CodeGen/PowerPC/darwin-labels.ll:1.2 llvm/test/Regression/CodeGen/PowerPC/darwin-labels.ll:1.3 --- llvm/test/Regression/CodeGen/PowerPC/darwin-labels.ll:1.2 Fri Dec 1 22:23:08 2006 +++ llvm/test/Regression/CodeGen/PowerPC/darwin-labels.ll Mon Jan 1 23:55:05 2007 @@ -1,4 +1,4 @@ -; RUN: llvm-upgrade < %s | llvm-as | llc | grep 'foo bar":' +; RUN: llvm-upgrade < %s | llvm-as | llc | grep 'foo bar.s":' target endian = big target pointersize = 32 From reid at x10sys.com Tue Jan 2 00:33:18 2007 From: reid at x10sys.com (Reid Spencer) Date: Tue, 2 Jan 2007 00:33:18 -0600 Subject: [llvm-commits] CVS: llvm/tools/llvm-upgrade/UpgradeParser.y Message-ID: <200701020633.l026XIHu008515@zion.cs.uiuc.edu> Changes in directory llvm/tools/llvm-upgrade: UpgradeParser.y updated: 1.29 -> 1.30 --- Log message: Permit signed and unsigned integer constants to be used with either signed or unsigned integer types. --- Diffs of the changes: (+1 -1) UpgradeParser.y | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/tools/llvm-upgrade/UpgradeParser.y diff -u llvm/tools/llvm-upgrade/UpgradeParser.y:1.29 llvm/tools/llvm-upgrade/UpgradeParser.y:1.30 --- llvm/tools/llvm-upgrade/UpgradeParser.y:1.29 Mon Jan 1 23:44:33 2007 +++ llvm/tools/llvm-upgrade/UpgradeParser.y Tue Jan 2 00:33:02 2007 @@ -708,7 +708,7 @@ *$$.cnst += " " + *$2; delete $2; } - | UIntType EUINT64VAL { // integral constants + | UIntType EInt64Val { // integral constants $$.type = $1; $$.cnst = new std::string($1->getNewTy()); *$$.cnst += " " + *$2; From reid at x10sys.com Tue Jan 2 00:34:24 2007 From: reid at x10sys.com (Reid Spencer) Date: Tue, 2 Jan 2007 00:34:24 -0600 Subject: [llvm-commits] CVS: llvm/tools/llvm-upgrade/UpgradeParser.cpp UpgradeParser.cpp.cvs UpgradeParser.y.cvs Message-ID: <200701020634.l026YO3Y008545@zion.cs.uiuc.edu> Changes in directory llvm/tools/llvm-upgrade: UpgradeParser.cpp updated: 1.31 -> 1.32 UpgradeParser.cpp.cvs updated: 1.29 -> 1.30 UpgradeParser.y.cvs updated: 1.28 -> 1.29 --- Log message: Regenerate. --- Diffs of the changes: (+211 -211) UpgradeParser.cpp | 210 +++++++++++++++++++++++++------------------------- UpgradeParser.cpp.cvs | 210 +++++++++++++++++++++++++------------------------- UpgradeParser.y.cvs | 2 3 files changed, 211 insertions(+), 211 deletions(-) Index: llvm/tools/llvm-upgrade/UpgradeParser.cpp diff -u llvm/tools/llvm-upgrade/UpgradeParser.cpp:1.31 llvm/tools/llvm-upgrade/UpgradeParser.cpp:1.32 --- llvm/tools/llvm-upgrade/UpgradeParser.cpp:1.31 Mon Jan 1 23:45:11 2007 +++ llvm/tools/llvm-upgrade/UpgradeParser.cpp Tue Jan 2 00:34:08 2007 @@ -1043,7 +1043,7 @@ 190, 159, 197, 160, -1, 190, 161, 197, 162, -1, 190, 161, 162, -1, 190, 22, -1, 190, 23, -1, 190, 222, -1, 190, 196, -1, 190, 24, -1, 175, - 167, -1, 176, 18, -1, 4, 25, -1, 4, 26, + 167, -1, 176, 167, -1, 4, 25, -1, 4, 26, -1, 178, 21, -1, 174, 154, 195, 39, 190, 155, -1, 127, 154, 195, 237, 155, -1, 129, 154, 195, 152, 195, 152, 195, 155, -1, 168, 154, 195, 152, @@ -1375,72 +1375,72 @@ 132, 146, -513, -513, -513, -513, -513, -513, 873, -26, -513, -18, -513, 47, 19, 23, 39, 67, -513, 77, 132, 873, 81, 81, -513, -513, 81, 81, -513, -513, - -513, -513, -513, 86, -513, -513, -513, -513, -513, -513, - -513, -513, -513, -513, -513, -513, -513, -513, -513, 223, - 225, -9, 506, -513, 133, 91, -513, -513, -111, -513, + -513, -513, -513, 89, -513, -513, -513, -513, -513, -513, + -513, -513, -513, -513, -513, -513, -513, -513, -513, 227, + 229, -9, 506, -513, 133, 95, -513, -513, -111, -513, -513, -513, -513, -513, -513, -513, -513, -513, 901, 36, - 148, -513, -513, -513, 1336, -513, -513, -513, 219, 76, - 229, 222, 224, -513, -513, -513, -513, -513, 933, 933, - 963, 933, -513, 98, 100, 614, -513, -513, -111, -104, - 104, 216, -513, 86, 1134, -513, 1134, 1134, -513, -513, + 148, -513, -513, -513, 1336, -513, -513, -513, 222, 76, + 250, 239, 241, -513, -513, -513, -513, -513, 933, 933, + 963, 933, -513, 115, 116, 614, -513, -513, -111, -104, + 120, 216, -513, 89, 1134, -513, 1134, 1134, -513, -513, -513, -513, -513, -513, -513, -513, -513, -513, 1134, -513, - 933, -513, 206, 111, -513, -513, -513, -513, -513, -513, + 933, -513, 218, 111, -513, -513, -513, -513, -513, -513, -513, -513, -513, -513, -513, -513, -513, -513, -513, -513, -513, -513, -513, -513, 195, 84, 933, 933, 933, 933, 933, 933, -513, -513, -513, -513, 933, 933, 933, 933, -513, -513, -513, -513, -513, -513, -513, -513, -513, -513, -513, -513, -513, 933, 933, 933, 933, 933, 111, -513, 11, -513, -513, -513, -513, -513, -513, -513, -513, -93, - 115, 115, 121, 166, 250, 169, 251, 191, 253, 193, - 254, 252, 257, 220, 256, 260, 1045, 115, 115, 933, - 933, 122, -73, 933, -513, 701, -513, 134, 129, -513, - -513, -513, -513, -513, -513, -513, -513, 221, 195, 84, - 136, 137, 138, 140, 150, 963, 154, 156, 158, 167, - 168, -513, -513, -513, -513, 171, -513, 172, -513, -513, + 129, 129, 121, 166, 169, 191, 193, 220, 223, 237, + 240, 261, 263, 249, 249, 264, 1045, 129, 129, 933, + 933, 126, -73, 933, -513, 701, -513, 138, 136, -513, + -513, -513, -513, -513, -513, -513, -513, 228, 195, 84, + 140, 150, 154, 156, 158, 963, 167, 168, 170, 171, + 172, -513, -513, -513, -513, 175, -513, 176, -513, -513, 873, -513, -513, -513, -513, -513, -513, -513, -513, -513, -513, 933, -513, -513, -513, -513, -513, -513, -513, -513, - -513, -513, -513, -513, -513, -513, -513, -513, 933, 173, - 174, -513, 1134, 164, 175, 176, 177, 178, 179, 182, - 1134, 1134, 1134, 183, 297, 873, 933, 933, 308, -513, + -513, -513, -513, -513, -513, -513, -513, -513, 933, 177, + 178, -513, 1134, 164, 179, 182, 183, 184, 186, 188, + 1134, 1134, 1134, 189, 284, 873, 933, 933, 312, -513, -8, -513, -513, -513, -513, -513, -513, -513, -513, -513, - -513, -513, -513, 741, 963, 673, 310, -513, -513, -513, - -513, -113, -99, -513, 181, -111, -513, 133, -513, 190, - 189, 774, -513, -513, 315, 192, 194, 963, 963, 963, - 963, 963, -513, -58, 963, 963, 963, 963, 963, 332, - 337, 1134, 1134, 1134, -2, -513, 9, -513, 207, 1134, - 204, 933, 933, 933, 933, 933, 211, 212, 213, 933, - 933, 1134, 1134, 214, -513, 338, 349, -513, 115, -513, + -513, -513, -513, 741, 963, 673, 314, -513, -513, -513, + -513, -113, -99, -513, 185, -111, -513, 133, -513, 194, + 192, 774, -513, -513, 318, 198, 205, 963, 963, 963, + 963, 963, -513, -58, 963, 963, 963, 963, 963, 345, + 348, 1134, 1134, 1134, -2, -513, 9, -513, 212, 1134, + 209, 933, 933, 933, 933, 933, 214, 215, 219, 933, + 933, 1134, 1134, 221, -513, 338, 352, -513, 129, -513, -61, -57, -513, -70, -513, -513, -513, -513, -513, -513, - 833, 333, -513, 231, 963, 963, 207, 235, 236, 237, - 238, 963, -513, 240, 241, 242, 243, 334, 1134, 1134, - 227, 244, 245, 1134, 353, 1134, 933, -513, 249, 1134, - 255, -513, -513, 258, 262, 1134, 1134, 1134, -513, -513, + 833, 337, -513, 224, 963, 963, 212, 231, 235, 236, + 238, 963, -513, 242, 243, 244, 245, 342, 1134, 1134, + 247, 251, 252, 1134, 371, 1134, 933, -513, 253, 1134, + 254, -513, -513, 255, 257, 1134, 1134, 1134, -513, -513, 248, -513, 933, -513, -513, -513, -513, -513, -513, -513, - -513, -513, 317, 346, 263, 264, 265, 963, 963, 963, - 963, -513, 963, 963, 963, 963, 933, 266, 247, 933, - 1134, 1134, 267, -513, 267, -513, 269, 1134, 270, 933, - 933, 933, -513, -513, -513, 933, 1134, 386, -513, -513, + -513, -513, 335, 363, 258, 262, 260, 963, 963, 963, + 963, -513, 963, 963, 963, 963, 933, 265, 266, 933, + 1134, 1134, 267, -513, 267, -513, 268, 1134, 269, 933, + 933, 933, -513, -513, -513, 933, 1134, 398, -513, -513, 963, 963, -513, 271, 273, 277, 278, 276, 279, 282, - 283, 284, 390, 15, 269, 286, -513, -513, 352, -513, - -513, 933, 259, 1134, -513, -513, -513, 289, -513, -513, - 292, 294, 963, -513, 963, 963, -513, -513, -513, -513, - -513, 1134, -513, 1223, 27, 367, -513, -513, 274, -513, - -513, -513, 295, 300, 303, -513, 281, -513, 1223, 444, - -513, -513, -513, -513, 445, 312, 1134, 1134, 450, 135, - -513, 1134, 451, -513, 1134, -513 + 283, 286, 403, 15, 268, 289, -513, -513, 375, -513, + -513, 933, 275, 1134, -513, -513, -513, 292, -513, -513, + 294, 295, 963, -513, 963, 963, -513, -513, -513, -513, + -513, 1134, -513, 1223, 27, 400, -513, -513, 297, -513, + -513, -513, 303, 304, 305, -513, 313, -513, 1223, 449, + -513, -513, -513, -513, 451, 316, 1134, 1134, 454, 135, + -513, 1134, 457, -513, 1134, -513 }; /* YYPGOTO[NTERM-NUM]. */ static const short int yypgoto[] = { - -513, -513, -513, 364, 365, 368, 215, 218, 370, 372, - -98, -97, -507, -513, 436, 456, -141, -513, -303, 60, + -513, -513, 246, 369, 370, 372, 225, 226, 373, 377, + -98, -97, -507, -513, 436, 458, -141, -513, -303, 63, -513, -220, -513, -46, -513, -38, -513, -68, -20, -513, - 130, 246, -230, 51, -513, -513, -513, -513, 433, -513, - -513, -513, -513, 1, -513, 64, -513, -513, 457, -513, - -513, -513, -513, -513, 482, -513, -512, -106, -3, -88, - -513, 448, -513, -89, -513, -513, -513, -513, 45, -13, - -513, -513, 69, -513, -513 + 130, 256, -230, 51, -513, -513, -513, -513, 439, -513, + -513, -513, -513, 1, -513, 66, -513, -513, 461, -513, + -513, -513, -513, -513, 488, -513, -512, -106, -3, -88, + -513, 455, -513, -84, -513, -513, -513, -513, 56, 18, + -513, -513, 98, -513, -513 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If @@ -1468,41 +1468,41 @@ 134, 134, 125, 138, 139, 140, 141, 142, 143, 144, 145, 19, 60, 20, 62, 320, 321, 322, 134, 134, 108, 351, 352, 552, 109, 355, 31, 32, 33, 34, - 35, 36, 37, -72, -72, 567, -71, -71, 465, 529, + 35, 36, 37, -72, -72, 567, -76, -76, 465, 529, 110, 530, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 273, 357, -70, -70, - -69, -69, 101, 102, 273, 273, 273, -177, 111, 126, + 302, 303, 304, 305, 306, 307, 273, 357, -71, -71, + -75, -75, 101, 102, 273, 273, 273, -177, 111, 126, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 112, 381, 77, 78, 335, 336, 403, - -113, 122, 86, 123, 19, 131, 20, 216, 5, 212, - 237, 6, 217, 382, 218, 239, 246, 240, 245, 7, - 8, 9, 10, 11, 12, 13, 279, 330, -76, -75, - 383, -74, -73, -79, 338, 273, 273, 273, -80, 401, - 14, 339, 353, 273, 362, 363, 361, 86, 402, 134, - 367, 368, 369, 355, 370, 273, 273, 281, 282, 283, - 284, 285, 286, 450, 371, 452, 453, 454, 374, 388, - 375, 458, 376, 287, 288, 289, 290, 396, 397, 398, - 389, 377, 378, 379, 380, 384, 386, 390, 391, 392, - 393, 394, 273, 273, 395, 399, 400, 273, 404, 273, - 414, 417, 420, 273, 421, 423, 424, 438, 425, 273, - 273, 273, 439, 134, 451, 134, 134, 134, 418, 446, - 449, 134, 459, 455, 456, 457, 462, 464, 463, 79, - 405, 493, 80, 486, 507, 81, 509, 82, 440, 441, - 442, 489, 357, 473, 273, 273, 448, 477, 478, 479, - 480, 273, 482, 483, 484, 485, 490, 491, 460, 461, - 273, 497, 505, 523, 539, 551, 569, 499, 134, 444, - 500, 534, 535, 536, 501, 510, 511, 557, 522, 528, - 512, 531, 533, 542, 506, 146, 147, 273, 543, 544, - 545, 546, 570, 574, 547, 487, 488, 548, 549, 550, - 492, 555, 494, 556, 559, 273, 498, 560, 521, 561, - 571, 134, 502, 503, 504, 572, 146, 147, 573, 576, - 577, 134, 134, 134, 578, 581, 584, 134, 203, 204, - 273, 273, 205, 365, 206, 273, 207, 366, 273, 104, - 56, 471, 347, 114, 470, 26, 59, 526, 527, 97, - 582, 496, 537, 134, 532, 476, 0, 426, 427, 428, - 429, 430, 0, 538, 433, 434, 435, 436, 437, 126, + 74, 75, 76, 112, 381, 77, 78, -70, -70, 403, + -74, -74, 86, -113, 19, 122, 20, 123, 5, 131, + 237, 6, 212, 382, -69, -69, 246, -73, -73, 7, + 8, 9, 10, 11, 12, 13, 335, 336, 216, 217, + 383, 218, 239, 240, 245, 273, 273, 273, 279, 401, + 14, 330, -79, 273, -80, 339, 353, 86, 402, 134, + 361, 362, 363, 355, 367, 273, 273, 281, 282, 283, + 284, 285, 286, 450, 368, 452, 453, 454, 369, 388, + 370, 458, 371, 287, 288, 289, 290, 396, 397, 398, + 389, 374, 375, 400, 376, 377, 378, 379, 380, 384, + 386, 390, 273, 273, 391, 392, 393, 273, 394, 273, + 395, 399, 404, 273, 414, 417, 420, 421, 423, 273, + 273, 273, 424, 134, 451, 134, 134, 134, 418, 425, + 438, 134, 459, 439, 446, 449, 455, 456, 463, 79, + 464, 457, 80, 462, 405, 81, 473, 82, 440, 441, + 442, 486, 357, 477, 273, 273, 448, 478, 479, 493, + 480, 273, 507, 509, 482, 483, 484, 485, 460, 461, + 273, 489, 505, 490, 491, 497, 499, 500, 134, 501, + 510, 534, 535, 536, 511, 512, 539, 522, 551, 528, + 531, 533, 523, 542, 506, 146, 147, 273, 543, 544, + 545, 546, 444, 557, 547, 487, 488, 548, 549, 569, + 492, 550, 494, 556, 555, 273, 498, 559, 521, 560, + 561, 134, 502, 503, 504, 570, 146, 147, 571, 572, + 573, 134, 134, 134, 576, 574, 577, 134, 578, 581, + 273, 273, 584, 203, 204, 273, 205, 206, 273, 104, + 338, 207, 56, 365, 471, 366, 470, 526, 527, 114, + 59, 26, 347, 134, 532, 582, 97, 426, 427, 428, + 429, 430, 496, 538, 433, 434, 435, 436, 437, 126, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 0, 0, 77, 78, 0, 0, 0, + 74, 75, 76, 537, 476, 77, 78, 0, 0, 0, 558, 0, 0, 0, 19, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 565, 0, 0, 0, 0, 0, 474, 475, 0, 0, 0, 0, @@ -1627,35 +1627,35 @@ 17, 18, 77, 78, 320, 321, 322, 0, 151, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 156, 280, 19, 20, 17, 18, 327, - 154, 18, 280, 18, 28, 154, 30, 18, 31, 30, - 120, 34, 30, 291, 30, 157, 40, 157, 154, 42, - 43, 44, 45, 46, 47, 48, 60, 152, 18, 18, - 308, 18, 18, 21, 18, 381, 382, 383, 21, 325, - 63, 21, 160, 389, 155, 64, 152, 325, 326, 327, - 154, 154, 154, 361, 154, 401, 402, 102, 103, 104, + 17, 18, 280, 154, 28, 18, 30, 18, 31, 154, + 120, 34, 30, 291, 17, 18, 40, 17, 18, 42, + 43, 44, 45, 46, 47, 48, 17, 18, 18, 30, + 308, 30, 157, 157, 154, 381, 382, 383, 60, 325, + 63, 152, 21, 389, 21, 21, 160, 325, 326, 327, + 152, 155, 64, 361, 154, 401, 402, 102, 103, 104, 105, 106, 107, 391, 154, 393, 394, 395, 154, 312, 154, 399, 154, 118, 119, 120, 121, 320, 321, 322, - 156, 154, 154, 152, 152, 152, 152, 152, 152, 152, - 152, 152, 438, 439, 152, 152, 39, 443, 30, 445, - 30, 160, 152, 449, 155, 30, 154, 15, 154, 455, - 456, 457, 15, 391, 392, 393, 394, 395, 357, 152, - 156, 399, 400, 152, 152, 152, 152, 18, 30, 153, - 37, 18, 156, 39, 57, 159, 30, 161, 381, 382, - 383, 154, 420, 152, 490, 491, 389, 152, 152, 152, - 152, 497, 152, 152, 152, 152, 152, 152, 401, 402, - 506, 152, 154, 156, 18, 15, 39, 152, 446, 57, - 152, 499, 500, 501, 152, 152, 152, 158, 152, 152, - 155, 152, 152, 152, 462, 523, 523, 533, 155, 152, - 152, 155, 158, 152, 155, 438, 439, 155, 155, 155, + 156, 154, 154, 39, 154, 154, 154, 152, 152, 152, + 152, 152, 438, 439, 152, 152, 152, 443, 152, 445, + 152, 152, 30, 449, 30, 160, 152, 155, 30, 455, + 456, 457, 154, 391, 392, 393, 394, 395, 357, 154, + 15, 399, 400, 15, 152, 156, 152, 152, 30, 153, + 18, 152, 156, 152, 37, 159, 152, 161, 381, 382, + 383, 39, 420, 152, 490, 491, 389, 152, 152, 18, + 152, 497, 57, 30, 152, 152, 152, 152, 401, 402, + 506, 154, 154, 152, 152, 152, 152, 152, 446, 152, + 152, 499, 500, 501, 152, 155, 18, 152, 15, 152, + 152, 152, 156, 152, 462, 523, 523, 533, 155, 152, + 152, 155, 57, 158, 155, 438, 439, 155, 155, 39, 443, 155, 445, 531, 155, 551, 449, 155, 486, 155, - 155, 489, 455, 456, 457, 155, 554, 554, 155, 15, - 15, 499, 500, 501, 152, 15, 15, 505, 104, 104, - 576, 577, 104, 258, 104, 581, 104, 259, 584, 43, - 24, 421, 236, 50, 420, 3, 29, 490, 491, 41, - 579, 446, 505, 531, 497, 426, -1, 367, 368, 369, - 370, 371, -1, 506, 374, 375, 376, 377, 378, 3, + 155, 489, 455, 456, 457, 158, 554, 554, 155, 155, + 155, 499, 500, 501, 15, 152, 15, 505, 152, 15, + 576, 577, 15, 104, 104, 581, 104, 104, 584, 43, + 234, 104, 24, 258, 421, 259, 420, 490, 491, 50, + 29, 3, 236, 531, 497, 579, 41, 367, 368, 369, + 370, 371, 446, 506, 374, 375, 376, 377, 378, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, -1, -1, 19, 20, -1, -1, -1, + 14, 15, 16, 505, 426, 19, 20, -1, -1, -1, 533, -1, -1, -1, 28, -1, 30, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 551, -1, -1, -1, -1, -1, 424, 425, -1, -1, -1, -1, @@ -1791,7 +1791,7 @@ 114, 115, 116, 117, 118, 119, 120, 121, 172, 190, 190, 224, 190, 190, 232, 224, 224, 224, 224, 224, 190, 190, 190, 224, 224, 181, 125, 126, 152, 158, - 152, 186, 186, 25, 26, 17, 18, 167, 18, 21, + 152, 186, 186, 25, 26, 17, 18, 167, 167, 21, 22, 23, 24, 156, 159, 161, 164, 196, 222, 186, 186, 192, 192, 160, 162, 192, 40, 190, 210, 211, 212, 152, 155, 64, 220, 171, 172, 154, 154, 154, Index: llvm/tools/llvm-upgrade/UpgradeParser.cpp.cvs diff -u llvm/tools/llvm-upgrade/UpgradeParser.cpp.cvs:1.29 llvm/tools/llvm-upgrade/UpgradeParser.cpp.cvs:1.30 --- llvm/tools/llvm-upgrade/UpgradeParser.cpp.cvs:1.29 Mon Jan 1 23:45:11 2007 +++ llvm/tools/llvm-upgrade/UpgradeParser.cpp.cvs Tue Jan 2 00:34:08 2007 @@ -1043,7 +1043,7 @@ 190, 159, 197, 160, -1, 190, 161, 197, 162, -1, 190, 161, 162, -1, 190, 22, -1, 190, 23, -1, 190, 222, -1, 190, 196, -1, 190, 24, -1, 175, - 167, -1, 176, 18, -1, 4, 25, -1, 4, 26, + 167, -1, 176, 167, -1, 4, 25, -1, 4, 26, -1, 178, 21, -1, 174, 154, 195, 39, 190, 155, -1, 127, 154, 195, 237, 155, -1, 129, 154, 195, 152, 195, 152, 195, 155, -1, 168, 154, 195, 152, @@ -1375,72 +1375,72 @@ 132, 146, -513, -513, -513, -513, -513, -513, 873, -26, -513, -18, -513, 47, 19, 23, 39, 67, -513, 77, 132, 873, 81, 81, -513, -513, 81, 81, -513, -513, - -513, -513, -513, 86, -513, -513, -513, -513, -513, -513, - -513, -513, -513, -513, -513, -513, -513, -513, -513, 223, - 225, -9, 506, -513, 133, 91, -513, -513, -111, -513, + -513, -513, -513, 89, -513, -513, -513, -513, -513, -513, + -513, -513, -513, -513, -513, -513, -513, -513, -513, 227, + 229, -9, 506, -513, 133, 95, -513, -513, -111, -513, -513, -513, -513, -513, -513, -513, -513, -513, 901, 36, - 148, -513, -513, -513, 1336, -513, -513, -513, 219, 76, - 229, 222, 224, -513, -513, -513, -513, -513, 933, 933, - 963, 933, -513, 98, 100, 614, -513, -513, -111, -104, - 104, 216, -513, 86, 1134, -513, 1134, 1134, -513, -513, + 148, -513, -513, -513, 1336, -513, -513, -513, 222, 76, + 250, 239, 241, -513, -513, -513, -513, -513, 933, 933, + 963, 933, -513, 115, 116, 614, -513, -513, -111, -104, + 120, 216, -513, 89, 1134, -513, 1134, 1134, -513, -513, -513, -513, -513, -513, -513, -513, -513, -513, 1134, -513, - 933, -513, 206, 111, -513, -513, -513, -513, -513, -513, + 933, -513, 218, 111, -513, -513, -513, -513, -513, -513, -513, -513, -513, -513, -513, -513, -513, -513, -513, -513, -513, -513, -513, -513, 195, 84, 933, 933, 933, 933, 933, 933, -513, -513, -513, -513, 933, 933, 933, 933, -513, -513, -513, -513, -513, -513, -513, -513, -513, -513, -513, -513, -513, 933, 933, 933, 933, 933, 111, -513, 11, -513, -513, -513, -513, -513, -513, -513, -513, -93, - 115, 115, 121, 166, 250, 169, 251, 191, 253, 193, - 254, 252, 257, 220, 256, 260, 1045, 115, 115, 933, - 933, 122, -73, 933, -513, 701, -513, 134, 129, -513, - -513, -513, -513, -513, -513, -513, -513, 221, 195, 84, - 136, 137, 138, 140, 150, 963, 154, 156, 158, 167, - 168, -513, -513, -513, -513, 171, -513, 172, -513, -513, + 129, 129, 121, 166, 169, 191, 193, 220, 223, 237, + 240, 261, 263, 249, 249, 264, 1045, 129, 129, 933, + 933, 126, -73, 933, -513, 701, -513, 138, 136, -513, + -513, -513, -513, -513, -513, -513, -513, 228, 195, 84, + 140, 150, 154, 156, 158, 963, 167, 168, 170, 171, + 172, -513, -513, -513, -513, 175, -513, 176, -513, -513, 873, -513, -513, -513, -513, -513, -513, -513, -513, -513, -513, 933, -513, -513, -513, -513, -513, -513, -513, -513, - -513, -513, -513, -513, -513, -513, -513, -513, 933, 173, - 174, -513, 1134, 164, 175, 176, 177, 178, 179, 182, - 1134, 1134, 1134, 183, 297, 873, 933, 933, 308, -513, + -513, -513, -513, -513, -513, -513, -513, -513, 933, 177, + 178, -513, 1134, 164, 179, 182, 183, 184, 186, 188, + 1134, 1134, 1134, 189, 284, 873, 933, 933, 312, -513, -8, -513, -513, -513, -513, -513, -513, -513, -513, -513, - -513, -513, -513, 741, 963, 673, 310, -513, -513, -513, - -513, -113, -99, -513, 181, -111, -513, 133, -513, 190, - 189, 774, -513, -513, 315, 192, 194, 963, 963, 963, - 963, 963, -513, -58, 963, 963, 963, 963, 963, 332, - 337, 1134, 1134, 1134, -2, -513, 9, -513, 207, 1134, - 204, 933, 933, 933, 933, 933, 211, 212, 213, 933, - 933, 1134, 1134, 214, -513, 338, 349, -513, 115, -513, + -513, -513, -513, 741, 963, 673, 314, -513, -513, -513, + -513, -113, -99, -513, 185, -111, -513, 133, -513, 194, + 192, 774, -513, -513, 318, 198, 205, 963, 963, 963, + 963, 963, -513, -58, 963, 963, 963, 963, 963, 345, + 348, 1134, 1134, 1134, -2, -513, 9, -513, 212, 1134, + 209, 933, 933, 933, 933, 933, 214, 215, 219, 933, + 933, 1134, 1134, 221, -513, 338, 352, -513, 129, -513, -61, -57, -513, -70, -513, -513, -513, -513, -513, -513, - 833, 333, -513, 231, 963, 963, 207, 235, 236, 237, - 238, 963, -513, 240, 241, 242, 243, 334, 1134, 1134, - 227, 244, 245, 1134, 353, 1134, 933, -513, 249, 1134, - 255, -513, -513, 258, 262, 1134, 1134, 1134, -513, -513, + 833, 337, -513, 224, 963, 963, 212, 231, 235, 236, + 238, 963, -513, 242, 243, 244, 245, 342, 1134, 1134, + 247, 251, 252, 1134, 371, 1134, 933, -513, 253, 1134, + 254, -513, -513, 255, 257, 1134, 1134, 1134, -513, -513, 248, -513, 933, -513, -513, -513, -513, -513, -513, -513, - -513, -513, 317, 346, 263, 264, 265, 963, 963, 963, - 963, -513, 963, 963, 963, 963, 933, 266, 247, 933, - 1134, 1134, 267, -513, 267, -513, 269, 1134, 270, 933, - 933, 933, -513, -513, -513, 933, 1134, 386, -513, -513, + -513, -513, 335, 363, 258, 262, 260, 963, 963, 963, + 963, -513, 963, 963, 963, 963, 933, 265, 266, 933, + 1134, 1134, 267, -513, 267, -513, 268, 1134, 269, 933, + 933, 933, -513, -513, -513, 933, 1134, 398, -513, -513, 963, 963, -513, 271, 273, 277, 278, 276, 279, 282, - 283, 284, 390, 15, 269, 286, -513, -513, 352, -513, - -513, 933, 259, 1134, -513, -513, -513, 289, -513, -513, - 292, 294, 963, -513, 963, 963, -513, -513, -513, -513, - -513, 1134, -513, 1223, 27, 367, -513, -513, 274, -513, - -513, -513, 295, 300, 303, -513, 281, -513, 1223, 444, - -513, -513, -513, -513, 445, 312, 1134, 1134, 450, 135, - -513, 1134, 451, -513, 1134, -513 + 283, 286, 403, 15, 268, 289, -513, -513, 375, -513, + -513, 933, 275, 1134, -513, -513, -513, 292, -513, -513, + 294, 295, 963, -513, 963, 963, -513, -513, -513, -513, + -513, 1134, -513, 1223, 27, 400, -513, -513, 297, -513, + -513, -513, 303, 304, 305, -513, 313, -513, 1223, 449, + -513, -513, -513, -513, 451, 316, 1134, 1134, 454, 135, + -513, 1134, 457, -513, 1134, -513 }; /* YYPGOTO[NTERM-NUM]. */ static const short int yypgoto[] = { - -513, -513, -513, 364, 365, 368, 215, 218, 370, 372, - -98, -97, -507, -513, 436, 456, -141, -513, -303, 60, + -513, -513, 246, 369, 370, 372, 225, 226, 373, 377, + -98, -97, -507, -513, 436, 458, -141, -513, -303, 63, -513, -220, -513, -46, -513, -38, -513, -68, -20, -513, - 130, 246, -230, 51, -513, -513, -513, -513, 433, -513, - -513, -513, -513, 1, -513, 64, -513, -513, 457, -513, - -513, -513, -513, -513, 482, -513, -512, -106, -3, -88, - -513, 448, -513, -89, -513, -513, -513, -513, 45, -13, - -513, -513, 69, -513, -513 + 130, 256, -230, 51, -513, -513, -513, -513, 439, -513, + -513, -513, -513, 1, -513, 66, -513, -513, 461, -513, + -513, -513, -513, -513, 488, -513, -512, -106, -3, -88, + -513, 455, -513, -84, -513, -513, -513, -513, 56, 18, + -513, -513, 98, -513, -513 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If @@ -1468,41 +1468,41 @@ 134, 134, 125, 138, 139, 140, 141, 142, 143, 144, 145, 19, 60, 20, 62, 320, 321, 322, 134, 134, 108, 351, 352, 552, 109, 355, 31, 32, 33, 34, - 35, 36, 37, -72, -72, 567, -71, -71, 465, 529, + 35, 36, 37, -72, -72, 567, -76, -76, 465, 529, 110, 530, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 273, 357, -70, -70, - -69, -69, 101, 102, 273, 273, 273, -177, 111, 126, + 302, 303, 304, 305, 306, 307, 273, 357, -71, -71, + -75, -75, 101, 102, 273, 273, 273, -177, 111, 126, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 112, 381, 77, 78, 335, 336, 403, - -113, 122, 86, 123, 19, 131, 20, 216, 5, 212, - 237, 6, 217, 382, 218, 239, 246, 240, 245, 7, - 8, 9, 10, 11, 12, 13, 279, 330, -76, -75, - 383, -74, -73, -79, 338, 273, 273, 273, -80, 401, - 14, 339, 353, 273, 362, 363, 361, 86, 402, 134, - 367, 368, 369, 355, 370, 273, 273, 281, 282, 283, - 284, 285, 286, 450, 371, 452, 453, 454, 374, 388, - 375, 458, 376, 287, 288, 289, 290, 396, 397, 398, - 389, 377, 378, 379, 380, 384, 386, 390, 391, 392, - 393, 394, 273, 273, 395, 399, 400, 273, 404, 273, - 414, 417, 420, 273, 421, 423, 424, 438, 425, 273, - 273, 273, 439, 134, 451, 134, 134, 134, 418, 446, - 449, 134, 459, 455, 456, 457, 462, 464, 463, 79, - 405, 493, 80, 486, 507, 81, 509, 82, 440, 441, - 442, 489, 357, 473, 273, 273, 448, 477, 478, 479, - 480, 273, 482, 483, 484, 485, 490, 491, 460, 461, - 273, 497, 505, 523, 539, 551, 569, 499, 134, 444, - 500, 534, 535, 536, 501, 510, 511, 557, 522, 528, - 512, 531, 533, 542, 506, 146, 147, 273, 543, 544, - 545, 546, 570, 574, 547, 487, 488, 548, 549, 550, - 492, 555, 494, 556, 559, 273, 498, 560, 521, 561, - 571, 134, 502, 503, 504, 572, 146, 147, 573, 576, - 577, 134, 134, 134, 578, 581, 584, 134, 203, 204, - 273, 273, 205, 365, 206, 273, 207, 366, 273, 104, - 56, 471, 347, 114, 470, 26, 59, 526, 527, 97, - 582, 496, 537, 134, 532, 476, 0, 426, 427, 428, - 429, 430, 0, 538, 433, 434, 435, 436, 437, 126, + 74, 75, 76, 112, 381, 77, 78, -70, -70, 403, + -74, -74, 86, -113, 19, 122, 20, 123, 5, 131, + 237, 6, 212, 382, -69, -69, 246, -73, -73, 7, + 8, 9, 10, 11, 12, 13, 335, 336, 216, 217, + 383, 218, 239, 240, 245, 273, 273, 273, 279, 401, + 14, 330, -79, 273, -80, 339, 353, 86, 402, 134, + 361, 362, 363, 355, 367, 273, 273, 281, 282, 283, + 284, 285, 286, 450, 368, 452, 453, 454, 369, 388, + 370, 458, 371, 287, 288, 289, 290, 396, 397, 398, + 389, 374, 375, 400, 376, 377, 378, 379, 380, 384, + 386, 390, 273, 273, 391, 392, 393, 273, 394, 273, + 395, 399, 404, 273, 414, 417, 420, 421, 423, 273, + 273, 273, 424, 134, 451, 134, 134, 134, 418, 425, + 438, 134, 459, 439, 446, 449, 455, 456, 463, 79, + 464, 457, 80, 462, 405, 81, 473, 82, 440, 441, + 442, 486, 357, 477, 273, 273, 448, 478, 479, 493, + 480, 273, 507, 509, 482, 483, 484, 485, 460, 461, + 273, 489, 505, 490, 491, 497, 499, 500, 134, 501, + 510, 534, 535, 536, 511, 512, 539, 522, 551, 528, + 531, 533, 523, 542, 506, 146, 147, 273, 543, 544, + 545, 546, 444, 557, 547, 487, 488, 548, 549, 569, + 492, 550, 494, 556, 555, 273, 498, 559, 521, 560, + 561, 134, 502, 503, 504, 570, 146, 147, 571, 572, + 573, 134, 134, 134, 576, 574, 577, 134, 578, 581, + 273, 273, 584, 203, 204, 273, 205, 206, 273, 104, + 338, 207, 56, 365, 471, 366, 470, 526, 527, 114, + 59, 26, 347, 134, 532, 582, 97, 426, 427, 428, + 429, 430, 496, 538, 433, 434, 435, 436, 437, 126, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 0, 0, 77, 78, 0, 0, 0, + 74, 75, 76, 537, 476, 77, 78, 0, 0, 0, 558, 0, 0, 0, 19, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 565, 0, 0, 0, 0, 0, 474, 475, 0, 0, 0, 0, @@ -1627,35 +1627,35 @@ 17, 18, 77, 78, 320, 321, 322, 0, 151, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 156, 280, 19, 20, 17, 18, 327, - 154, 18, 280, 18, 28, 154, 30, 18, 31, 30, - 120, 34, 30, 291, 30, 157, 40, 157, 154, 42, - 43, 44, 45, 46, 47, 48, 60, 152, 18, 18, - 308, 18, 18, 21, 18, 381, 382, 383, 21, 325, - 63, 21, 160, 389, 155, 64, 152, 325, 326, 327, - 154, 154, 154, 361, 154, 401, 402, 102, 103, 104, + 17, 18, 280, 154, 28, 18, 30, 18, 31, 154, + 120, 34, 30, 291, 17, 18, 40, 17, 18, 42, + 43, 44, 45, 46, 47, 48, 17, 18, 18, 30, + 308, 30, 157, 157, 154, 381, 382, 383, 60, 325, + 63, 152, 21, 389, 21, 21, 160, 325, 326, 327, + 152, 155, 64, 361, 154, 401, 402, 102, 103, 104, 105, 106, 107, 391, 154, 393, 394, 395, 154, 312, 154, 399, 154, 118, 119, 120, 121, 320, 321, 322, - 156, 154, 154, 152, 152, 152, 152, 152, 152, 152, - 152, 152, 438, 439, 152, 152, 39, 443, 30, 445, - 30, 160, 152, 449, 155, 30, 154, 15, 154, 455, - 456, 457, 15, 391, 392, 393, 394, 395, 357, 152, - 156, 399, 400, 152, 152, 152, 152, 18, 30, 153, - 37, 18, 156, 39, 57, 159, 30, 161, 381, 382, - 383, 154, 420, 152, 490, 491, 389, 152, 152, 152, - 152, 497, 152, 152, 152, 152, 152, 152, 401, 402, - 506, 152, 154, 156, 18, 15, 39, 152, 446, 57, - 152, 499, 500, 501, 152, 152, 152, 158, 152, 152, - 155, 152, 152, 152, 462, 523, 523, 533, 155, 152, - 152, 155, 158, 152, 155, 438, 439, 155, 155, 155, + 156, 154, 154, 39, 154, 154, 154, 152, 152, 152, + 152, 152, 438, 439, 152, 152, 152, 443, 152, 445, + 152, 152, 30, 449, 30, 160, 152, 155, 30, 455, + 456, 457, 154, 391, 392, 393, 394, 395, 357, 154, + 15, 399, 400, 15, 152, 156, 152, 152, 30, 153, + 18, 152, 156, 152, 37, 159, 152, 161, 381, 382, + 383, 39, 420, 152, 490, 491, 389, 152, 152, 18, + 152, 497, 57, 30, 152, 152, 152, 152, 401, 402, + 506, 154, 154, 152, 152, 152, 152, 152, 446, 152, + 152, 499, 500, 501, 152, 155, 18, 152, 15, 152, + 152, 152, 156, 152, 462, 523, 523, 533, 155, 152, + 152, 155, 57, 158, 155, 438, 439, 155, 155, 39, 443, 155, 445, 531, 155, 551, 449, 155, 486, 155, - 155, 489, 455, 456, 457, 155, 554, 554, 155, 15, - 15, 499, 500, 501, 152, 15, 15, 505, 104, 104, - 576, 577, 104, 258, 104, 581, 104, 259, 584, 43, - 24, 421, 236, 50, 420, 3, 29, 490, 491, 41, - 579, 446, 505, 531, 497, 426, -1, 367, 368, 369, - 370, 371, -1, 506, 374, 375, 376, 377, 378, 3, + 155, 489, 455, 456, 457, 158, 554, 554, 155, 155, + 155, 499, 500, 501, 15, 152, 15, 505, 152, 15, + 576, 577, 15, 104, 104, 581, 104, 104, 584, 43, + 234, 104, 24, 258, 421, 259, 420, 490, 491, 50, + 29, 3, 236, 531, 497, 579, 41, 367, 368, 369, + 370, 371, 446, 506, 374, 375, 376, 377, 378, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, -1, -1, 19, 20, -1, -1, -1, + 14, 15, 16, 505, 426, 19, 20, -1, -1, -1, 533, -1, -1, -1, 28, -1, 30, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 551, -1, -1, -1, -1, -1, 424, 425, -1, -1, -1, -1, @@ -1791,7 +1791,7 @@ 114, 115, 116, 117, 118, 119, 120, 121, 172, 190, 190, 224, 190, 190, 232, 224, 224, 224, 224, 224, 190, 190, 190, 224, 224, 181, 125, 126, 152, 158, - 152, 186, 186, 25, 26, 17, 18, 167, 18, 21, + 152, 186, 186, 25, 26, 17, 18, 167, 167, 21, 22, 23, 24, 156, 159, 161, 164, 196, 222, 186, 186, 192, 192, 160, 162, 192, 40, 190, 210, 211, 212, 152, 155, 64, 220, 171, 172, 154, 154, 154, Index: llvm/tools/llvm-upgrade/UpgradeParser.y.cvs diff -u llvm/tools/llvm-upgrade/UpgradeParser.y.cvs:1.28 llvm/tools/llvm-upgrade/UpgradeParser.y.cvs:1.29 --- llvm/tools/llvm-upgrade/UpgradeParser.y.cvs:1.28 Mon Jan 1 23:45:11 2007 +++ llvm/tools/llvm-upgrade/UpgradeParser.y.cvs Tue Jan 2 00:34:08 2007 @@ -708,7 +708,7 @@ *$$.cnst += " " + *$2; delete $2; } - | UIntType EUINT64VAL { // integral constants + | UIntType EInt64Val { // integral constants $$.type = $1; $$.cnst = new std::string($1->getNewTy()); *$$.cnst += " " + *$2; From rspencer at reidspencer.com Tue Jan 2 01:08:28 2007 From: rspencer at reidspencer.com (Reid Spencer) Date: Tue, 02 Jan 2007 07:08:28 +0000 Subject: [llvm-commits] CVS: llvm/tools/llvm-upgrade/ParserInternals.h UpgradeLexer.l UpgradeParser.y In-Reply-To: References: <200701020544.l025imcG007605@zion.cs.uiuc.edu> Message-ID: <1167721708.25999.182.camel@bashful.x10sys.com> Hi Gordon, On Tue, 2007-01-02 at 01:31 -0500, Gordon Henriksen wrote: > Would it save much work to simply disambiguate all variable > definitions which rely on type planes for uniqueness? That is, essentially, what llvm-upgrade is doing. > There would be no need to identify %t1 and %t2 as identical types, and > the program would be immune to problems of this class. llvm-upgrade > would still have to track the obsolete type planes in order to > accurately update uses, though. Yup, that's what it does. Note however, that I've cited a fairly easy case (that I'm working on now). However, consider something like this: "struct.kc::hashtable_level" = type { bool, "struct.__gnu_cxx::hash_set >", "struct.std::map, std::allocator >,kc::impl_path*,std::less, std::allocator > >,std::allocator, std::allocator >, kc::impl_path*> > >", "struct.std::map, std::allocator >,kc::impl_path*,std::less, std::allocator > >,std::allocator, std::allocator >, kc::impl_path*> > >", "struct.std::map, std::allocator >,kc::impl_path*,std::less, std::allocator > >,std::allocator, std::allocator >, kc::impl_path*> > >", "struct.std::map, std::allocator >,kc::impl_path*,std::less, std::allocator > >,std::allocator, std::allocator >, kc::impl_path*> > >", "struct.std::map, std::allocator >,kc::impl_path*,std::less, std::allocator > >,std::allocator, std::allocator >, kc::impl_path*> > >" } Now, is that signed, or unsigned? :) The problem is that two types could differ only by sign at some very complex level of nesting and its entirely possible that variables with the same name for the two types could be used. I'm trying to peel that onion slowly so as not to break llvm-upgrade in the process. More to come. Reid. > > > On 2007-01-02, at 00:44, Reid Spencer wrote: > > > For PR1070: http://llvm.org/PR1070 : > > > > Revise the upgrade parser to keep track of types more faithfully and > > use > > > > this information to resolve name conflicts resulting from collapsed > > type > > > > planes. The type planes have collapsed because the integer types are > > now > > > > signless so that uint and int became i32. Where two planes existed > > for uint > > > > and int, only i32 exists. Any variable names depending on the type > > planes > > > > to pmake the identifier unique would cause a conflict. This patch > > resolves > > > > that conflict for many but not all cases. > > > > > > Situations involving the integer types and pointers to them are > > handled > > > > by this patch. However, there are corner cases that are not > > handled > > > > well, such as: > > > > > > %t1 = type { uint, int } > > > > %t2 = type { int, uint } > > > > > > void %myfunc(%t1* one, %t2* two) { > > > > %var = load %t1* one > > > > %var = load %t2* two > > > > } > > > > > > In the scenario above, %t1 and %t2 are really the same type: { i32, > > i32 } > > > > Consequently attempting to name %var twice will yield a redefinition > > error > > > > when assembled. > > > > > > While this patch is sufficien to allow the llvm/test suite to pass, > > More > > > > work needs to be to complete the handling of these corner cases. > > > > > From jlaskey at apple.com Tue Jan 2 05:54:08 2007 From: jlaskey at apple.com (Jim Laskey) Date: Tue, 2 Jan 2007 05:54:08 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/DebugInfo/2007-01-02-UnboundedArray.cpp Message-ID: <200701021154.l02Bs8BQ022441@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/DebugInfo: 2007-01-02-UnboundedArray.cpp added (r1.1) --- Log message: PR1068: http://llvm.org/PR1068 - Unbounded array debug info. --- Diffs of the changes: (+14 -0) 2007-01-02-UnboundedArray.cpp | 14 ++++++++++++++ 1 files changed, 14 insertions(+) Index: llvm/test/Regression/DebugInfo/2007-01-02-UnboundedArray.cpp diff -c /dev/null llvm/test/Regression/DebugInfo/2007-01-02-UnboundedArray.cpp:1.1 *** /dev/null Tue Jan 2 05:54:02 2007 --- llvm/test/Regression/DebugInfo/2007-01-02-UnboundedArray.cpp Tue Jan 2 05:53:52 2007 *************** *** 0 **** --- 1,14 ---- + // Make sure unbounded arrays compile with debug information. + // + // RUN: %llvmgcc -O0 -c -g %s + + // PR1068 + + struct Object { + char buffer[]; + }; + + int main(int argc, char** argv) { + new Object; + return 0; + } From reid at x10sys.com Tue Jan 2 14:48:06 2007 From: reid at x10sys.com (Reid Spencer) Date: Tue, 2 Jan 2007 14:48:06 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/Assembler/2007-01-02-Undefined-Arg-Type.ll Message-ID: <200701022048.l02Km6mW031241@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/Assembler: 2007-01-02-Undefined-Arg-Type.ll added (r1.1) --- Log message: Add a test case for abstract parameter and result types in function definitions. The assembler should produce an error on this input. --- Diffs of the changes: (+10 -0) 2007-01-02-Undefined-Arg-Type.ll | 10 ++++++++++ 1 files changed, 10 insertions(+) Index: llvm/test/Regression/Assembler/2007-01-02-Undefined-Arg-Type.ll diff -c /dev/null llvm/test/Regression/Assembler/2007-01-02-Undefined-Arg-Type.ll:1.1 *** /dev/null Tue Jan 2 14:48:01 2007 --- llvm/test/Regression/Assembler/2007-01-02-Undefined-Arg-Type.ll Tue Jan 2 14:47:51 2007 *************** *** 0 **** --- 1,10 ---- + ; The assembler should catch an undefined argument type . + ; RUN: llvm-as < %s -o /dev/null -f 2>&1 | grep "Reference to abstract argument" + + ; %typedef.bc_struct = type opaque + + implementation ; Functions: + + define bool %someFunc(i32* %tmp.71.reload, %typedef.bc_struct* %n1) { + ret bool true + } From evan.cheng at apple.com Tue Jan 2 14:55:32 2007 From: evan.cheng at apple.com (Evan Cheng) Date: Tue, 2 Jan 2007 14:55:32 -0600 Subject: [llvm-commits] CVS: llvm/include/llvm/Target/MRegisterInfo.h Message-ID: <200701022055.l02KtW0B031416@zion.cs.uiuc.edu> Changes in directory llvm/include/llvm/Target: MRegisterInfo.h updated: 1.84 -> 1.85 --- Log message: Add virtual method spillCalleeSaveRegisters() and restoreCalleeSaveRegisters() to MRegisterInfo. These allow the target to issue instructions to spill and restore callee saved registers in case where individual stores / loads aren't the correct / profitable choice. --- Diffs of the changes: (+21 -0) MRegisterInfo.h | 21 +++++++++++++++++++++ 1 files changed, 21 insertions(+) Index: llvm/include/llvm/Target/MRegisterInfo.h diff -u llvm/include/llvm/Target/MRegisterInfo.h:1.84 llvm/include/llvm/Target/MRegisterInfo.h:1.85 --- llvm/include/llvm/Target/MRegisterInfo.h:1.84 Wed Sep 27 19:07:19 2006 +++ llvm/include/llvm/Target/MRegisterInfo.h Tue Jan 2 14:55:17 2007 @@ -29,6 +29,7 @@ class MachineLocation; class MachineMove; class TargetRegisterClass; +class CalleeSavedInfo; /// TargetRegisterDesc - This record contains all of the information known about /// a particular register. The AliasSet field (if not null) contains a pointer @@ -319,6 +320,26 @@ // immediates and memory. FIXME: Move these to TargetInstrInfo.h. // + /// spillCalleeSaveRegisters - Issues instruction(s) to spill all callee saved + /// registers and returns true if it isn't possible / profitable to do so by + /// issuing a series of store instructions via storeRegToStackSlot(). Returns + /// false otherwise. + virtual bool spillCalleeSaveRegisters(MachineBasicBlock &MBB, + MachineBasicBlock::iterator MI, + const std::vector &CSI) const { + return false; + } + + /// restoreCalleeSaveRegisters - Issues instruction(s) to restore all callee + /// saved registers and returns true if it isn't possible / profitable to do + /// so by issuing a series of load instructions via loadRegToStackSlot(). + /// Returns false otherwise. + virtual bool restoreCalleeSaveRegisters(MachineBasicBlock &MBB, + MachineBasicBlock::iterator MI, + const std::vector &CSI) const { + return false; + } + virtual void storeRegToStackSlot(MachineBasicBlock &MBB, MachineBasicBlock::iterator MI, unsigned SrcReg, int FrameIndex, From evan.cheng at apple.com Tue Jan 2 15:30:32 2007 From: evan.cheng at apple.com (Evan Cheng) Date: Tue, 2 Jan 2007 15:30:32 -0600 Subject: [llvm-commits] CVS: llvm/include/llvm/Target/MRegisterInfo.h TargetFrameInfo.h Message-ID: <200701022130.l02LUWe3032000@zion.cs.uiuc.edu> Changes in directory llvm/include/llvm/Target: MRegisterInfo.h updated: 1.85 -> 1.86 TargetFrameInfo.h updated: 1.21 -> 1.22 --- Log message: Fix naming inconsistency: calleesave -> calleesaved. --- Diffs of the changes: (+18 -18) MRegisterInfo.h | 30 +++++++++++++++--------------- TargetFrameInfo.h | 6 +++--- 2 files changed, 18 insertions(+), 18 deletions(-) Index: llvm/include/llvm/Target/MRegisterInfo.h diff -u llvm/include/llvm/Target/MRegisterInfo.h:1.85 llvm/include/llvm/Target/MRegisterInfo.h:1.86 --- llvm/include/llvm/Target/MRegisterInfo.h:1.85 Tue Jan 2 14:55:17 2007 +++ llvm/include/llvm/Target/MRegisterInfo.h Tue Jan 2 15:30:17 2007 @@ -283,16 +283,16 @@ return false; } - /// getCalleeSaveRegs - Return a null-terminated list of all of the - /// callee-save registers on this target. The register should be in the + /// getCalleeSavedRegs - Return a null-terminated list of all of the + /// callee saved registers on this target. The register should be in the /// order of desired callee-save stack frame offset. The first register is /// closed to the incoming stack pointer if stack grows down, and vice versa. - virtual const unsigned* getCalleeSaveRegs() const = 0; + virtual const unsigned* getCalleeSavedRegs() const = 0; - /// getCalleeSaveRegClasses - Return a null-terminated list of the preferred - /// register classes to spill each callee-saved register with. The order and + /// getCalleeSavedRegClasses - Return a null-terminated list of the preferred + /// register classes to spill each callee saved register with. The order and /// length of this list match the getCalleeSaveRegs() list. - virtual const TargetRegisterClass* const *getCalleeSaveRegClasses() const = 0; + virtual const TargetRegisterClass* const *getCalleeSavedRegClasses() const =0; //===--------------------------------------------------------------------===// // Register Class Information @@ -320,22 +320,22 @@ // immediates and memory. FIXME: Move these to TargetInstrInfo.h. // - /// spillCalleeSaveRegisters - Issues instruction(s) to spill all callee saved + /// spillCalleeSavedRegisters - Issues instruction(s) to spill all callee saved /// registers and returns true if it isn't possible / profitable to do so by /// issuing a series of store instructions via storeRegToStackSlot(). Returns /// false otherwise. - virtual bool spillCalleeSaveRegisters(MachineBasicBlock &MBB, - MachineBasicBlock::iterator MI, + virtual bool spillCalleeSavedRegisters(MachineBasicBlock &MBB, + MachineBasicBlock::iterator MI, const std::vector &CSI) const { return false; } - /// restoreCalleeSaveRegisters - Issues instruction(s) to restore all callee + /// restoreCalleeSavedRegisters - Issues instruction(s) to restore all callee /// saved registers and returns true if it isn't possible / profitable to do /// so by issuing a series of load instructions via loadRegToStackSlot(). /// Returns false otherwise. - virtual bool restoreCalleeSaveRegisters(MachineBasicBlock &MBB, - MachineBasicBlock::iterator MI, + virtual bool restoreCalleeSavedRegisters(MachineBasicBlock &MBB, + MachineBasicBlock::iterator MI, const std::vector &CSI) const { return false; } @@ -394,10 +394,10 @@ assert(0 && "Call Frame Pseudo Instructions do not exist on this target!"); } - /// processFunctionBeforeCalleeSaveScan - This method is called immediately + /// processFunctionBeforeCalleeSavedScan - This method is called immediately /// before PrologEpilogInserter scans the physical registers used to determine - /// what callee-save registers should be spilled. This method is optional. - virtual void processFunctionBeforeCalleeSaveScan(MachineFunction &MF) const { + /// what callee saved registers should be spilled. This method is optional. + virtual void processFunctionBeforeCalleeSavedScan(MachineFunction &MF) const { } /// processFunctionBeforeFrameFinalized - This method is called immediately Index: llvm/include/llvm/Target/TargetFrameInfo.h diff -u llvm/include/llvm/Target/TargetFrameInfo.h:1.21 llvm/include/llvm/Target/TargetFrameInfo.h:1.22 --- llvm/include/llvm/Target/TargetFrameInfo.h:1.21 Thu Aug 3 13:55:44 2006 +++ llvm/include/llvm/Target/TargetFrameInfo.h Tue Jan 2 15:30:17 2007 @@ -61,8 +61,8 @@ /// int getOffsetOfLocalArea() const { return LocalAreaOffset; } - /// getCalleeSaveSpillSlots - This method returns a pointer to an array of - /// pairs, that contains an entry for each callee save register that must be + /// getCalleeSavedSpillSlots - This method returns a pointer to an array of + /// pairs, that contains an entry for each callee saved register that must be /// spilled to a particular stack location if it is spilled. /// /// Each entry in this array contains a pair, indicating the @@ -71,7 +71,7 @@ /// allowed to spill it anywhere it chooses. /// virtual const std::pair * - getCalleeSaveSpillSlots(unsigned &NumEntries) const { + getCalleeSavedSpillSlots(unsigned &NumEntries) const { NumEntries = 0; return 0; } From evan.cheng at apple.com Tue Jan 2 15:31:30 2007 From: evan.cheng at apple.com (Evan Cheng) Date: Tue, 2 Jan 2007 15:31:30 -0600 Subject: [llvm-commits] CVS: llvm/lib/CodeGen/PrologEpilogInserter.cpp Message-ID: <200701022131.l02LVU3s032028@zion.cs.uiuc.edu> Changes in directory llvm/lib/CodeGen: PrologEpilogInserter.cpp updated: 1.62 -> 1.63 --- Log message: - Fixing naming inconsistency: calleesave -> calleesaved. - Make use of spillCalleeSavedRegisters() and restoreCalleeSavedRegisters(). --- Diffs of the changes: (+30 -24) PrologEpilogInserter.cpp | 54 ++++++++++++++++++++++++++--------------------- 1 files changed, 30 insertions(+), 24 deletions(-) Index: llvm/lib/CodeGen/PrologEpilogInserter.cpp diff -u llvm/lib/CodeGen/PrologEpilogInserter.cpp:1.62 llvm/lib/CodeGen/PrologEpilogInserter.cpp:1.63 --- llvm/lib/CodeGen/PrologEpilogInserter.cpp:1.62 Wed Dec 6 20:25:34 2006 +++ llvm/lib/CodeGen/PrologEpilogInserter.cpp Tue Jan 2 15:31:15 2007 @@ -46,7 +46,8 @@ // Allow the target machine to make some adjustments to the function // e.g. UsedPhysRegs before calculateCalleeSavedRegisters. - Fn.getTarget().getRegisterInfo()->processFunctionBeforeCalleeSaveScan(Fn); + Fn.getTarget().getRegisterInfo() + ->processFunctionBeforeCalleeSavedScan(Fn); // Scan the function for modified callee saved registers and insert spill // code for any callee saved registers that are modified. Also calculate @@ -80,7 +81,7 @@ } private: - // MinCSFrameIndex, MaxCSFrameIndex - Keeps the range of callee save + // MinCSFrameIndex, MaxCSFrameIndex - Keeps the range of callee saved // stack frame indexes. unsigned MinCSFrameIndex, MaxCSFrameIndex; @@ -109,7 +110,7 @@ const TargetFrameInfo *TFI = Fn.getTarget().getFrameInfo(); // Get the callee saved register list... - const unsigned *CSRegs = RegInfo->getCalleeSaveRegs(); + const unsigned *CSRegs = RegInfo->getCalleeSavedRegs(); // Get the function call frame set-up and tear-down instruction opcode int FrameSetupOpcode = RegInfo->getCallFrameSetupOpcode(); @@ -151,7 +152,7 @@ // const bool *PhysRegsUsed = Fn.getUsedPhysregs(); const TargetRegisterClass* const *CSRegClasses = - RegInfo->getCalleeSaveRegClasses(); + RegInfo->getCalleeSavedRegClasses(); std::vector CSI; for (unsigned i = 0; CSRegs[i]; ++i) { unsigned Reg = CSRegs[i]; @@ -174,7 +175,7 @@ unsigned NumFixedSpillSlots; const std::pair *FixedSpillSlots = - TFI->getCalleeSaveSpillSlots(NumFixedSpillSlots); + TFI->getCalleeSavedSpillSlots(NumFixedSpillSlots); // Now that we know which registers need to be saved and restored, allocate // stack slots for them. @@ -228,10 +229,13 @@ // code into the entry block. MachineBasicBlock *MBB = Fn.begin(); MachineBasicBlock::iterator I = MBB->begin(); - for (unsigned i = 0, e = CSI.size(); i != e; ++i) { - // Insert the spill to the stack frame. - RegInfo->storeRegToStackSlot(*MBB, I, CSI[i].getReg(), CSI[i].getFrameIdx(), - CSI[i].getRegClass()); + if (!RegInfo->spillCalleeSavedRegisters(*MBB, I, CSI)) { + for (unsigned i = 0, e = CSI.size(); i != e; ++i) { + // Insert the spill to the stack frame. + RegInfo->storeRegToStackSlot(*MBB, I, CSI[i].getReg(), + CSI[i].getFrameIdx(), + CSI[i].getRegClass()); + } } // Add code to restore the callee-save registers in each exiting block. @@ -255,19 +259,21 @@ // Restore all registers immediately before the return and any terminators // that preceed it. - for (unsigned i = 0, e = CSI.size(); i != e; ++i) { - RegInfo->loadRegFromStackSlot(*MBB, I, CSI[i].getReg(), - CSI[i].getFrameIdx(), - CSI[i].getRegClass()); - assert(I != MBB->begin() && - "loadRegFromStackSlot didn't insert any code!"); - // Insert in reverse order. loadRegFromStackSlot can insert multiple - // instructions. - if (AtStart) - I = MBB->begin(); - else { - I = BeforeI; - ++I; + if (!RegInfo->restoreCalleeSavedRegisters(*MBB, I, CSI)) { + for (unsigned i = 0, e = CSI.size(); i != e; ++i) { + RegInfo->loadRegFromStackSlot(*MBB, I, CSI[i].getReg(), + CSI[i].getFrameIdx(), + CSI[i].getRegClass()); + assert(I != MBB->begin() && + "loadRegFromStackSlot didn't insert any code!"); + // Insert in reverse order. loadRegFromStackSlot can insert multiple + // instructions. + if (AtStart) + I = MBB->begin(); + else { + I = BeforeI; + ++I; + } } } } @@ -319,7 +325,7 @@ } // First assign frame offsets to stack objects that are used to spill - // callee save registers. + // callee saved registers. if (StackGrowsDown) { for (unsigned i = 0, e = FFI->getObjectIndexEnd(); i != e; ++i) { if (i < MinCSFrameIndex || i > MaxCSFrameIndex) @@ -356,7 +362,7 @@ } // Then assign frame offsets to stack objects that are not used to spill - // callee save registers. + // callee saved registers. for (unsigned i = 0, e = FFI->getObjectIndexEnd(); i != e; ++i) { if (i >= MinCSFrameIndex && i <= MaxCSFrameIndex) continue; From evan.cheng at apple.com Tue Jan 2 15:32:11 2007 From: evan.cheng at apple.com (Evan Cheng) Date: Tue, 2 Jan 2007 15:32:11 -0600 Subject: [llvm-commits] CVS: llvm/lib/Target/ARM/ARMRegisterInfo.cpp ARMRegisterInfo.h Message-ID: <200701022132.l02LWB5Q032055@zion.cs.uiuc.edu> Changes in directory llvm/lib/Target/ARM: ARMRegisterInfo.cpp updated: 1.30 -> 1.31 ARMRegisterInfo.h updated: 1.3 -> 1.4 --- Log message: Fix naming inconsistency. --- Diffs of the changes: (+8 -8) ARMRegisterInfo.cpp | 12 ++++++------ ARMRegisterInfo.h | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) Index: llvm/lib/Target/ARM/ARMRegisterInfo.cpp diff -u llvm/lib/Target/ARM/ARMRegisterInfo.cpp:1.30 llvm/lib/Target/ARM/ARMRegisterInfo.cpp:1.31 --- llvm/lib/Target/ARM/ARMRegisterInfo.cpp:1.30 Mon Dec 18 05:07:09 2006 +++ llvm/lib/Target/ARM/ARMRegisterInfo.cpp Tue Jan 2 15:31:55 2007 @@ -157,23 +157,23 @@ return NULL; } -const unsigned* ARMRegisterInfo::getCalleeSaveRegs() const { - static const unsigned CalleeSaveRegs[] = { +const unsigned* ARMRegisterInfo::getCalleeSavedRegs() const { + static const unsigned CalleeSavedRegs[] = { ARM::R4, ARM::R5, ARM::R6, ARM::R7, ARM::R8, ARM::R9, ARM::R10, ARM::R11, ARM::R14, 0 }; - return CalleeSaveRegs; + return CalleeSavedRegs; } const TargetRegisterClass* const * -ARMRegisterInfo::getCalleeSaveRegClasses() const { - static const TargetRegisterClass * const CalleeSaveRegClasses[] = { +ARMRegisterInfo::getCalleeSavedRegClasses() const { + static const TargetRegisterClass * const CalleeSavedRegClasses[] = { &ARM::IntRegsRegClass, &ARM::IntRegsRegClass, &ARM::IntRegsRegClass, &ARM::IntRegsRegClass, &ARM::IntRegsRegClass, &ARM::IntRegsRegClass, &ARM::IntRegsRegClass, &ARM::IntRegsRegClass, &ARM::IntRegsRegClass, 0 }; - return CalleeSaveRegClasses; + return CalleeSavedRegClasses; } void ARMRegisterInfo:: Index: llvm/lib/Target/ARM/ARMRegisterInfo.h diff -u llvm/lib/Target/ARM/ARMRegisterInfo.h:1.3 llvm/lib/Target/ARM/ARMRegisterInfo.h:1.4 --- llvm/lib/Target/ARM/ARMRegisterInfo.h:1.3 Mon Nov 27 17:37:22 2006 +++ llvm/lib/Target/ARM/ARMRegisterInfo.h Tue Jan 2 15:31:55 2007 @@ -47,9 +47,9 @@ unsigned OpNum, int FrameIndex) const; - const unsigned *getCalleeSaveRegs() const; + const unsigned *getCalleeSavedRegs() const; - const TargetRegisterClass* const* getCalleeSaveRegClasses() const; + const TargetRegisterClass* const* getCalleeSavedRegClasses() const; void eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB, From evan.cheng at apple.com Tue Jan 2 15:32:41 2007 From: evan.cheng at apple.com (Evan Cheng) Date: Tue, 2 Jan 2007 15:32:41 -0600 Subject: [llvm-commits] CVS: llvm/lib/Target/Alpha/AlphaRegisterInfo.cpp AlphaRegisterInfo.h Message-ID: <200701022132.l02LWf1h032076@zion.cs.uiuc.edu> Changes in directory llvm/lib/Target/Alpha: AlphaRegisterInfo.cpp updated: 1.54 -> 1.55 AlphaRegisterInfo.h updated: 1.15 -> 1.16 --- Log message: Fix naming inconsistency. --- Diffs of the changes: (+8 -8) AlphaRegisterInfo.cpp | 12 ++++++------ AlphaRegisterInfo.h | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) Index: llvm/lib/Target/Alpha/AlphaRegisterInfo.cpp diff -u llvm/lib/Target/Alpha/AlphaRegisterInfo.cpp:1.54 llvm/lib/Target/Alpha/AlphaRegisterInfo.cpp:1.55 --- llvm/lib/Target/Alpha/AlphaRegisterInfo.cpp:1.54 Thu Dec 7 16:21:48 2006 +++ llvm/lib/Target/Alpha/AlphaRegisterInfo.cpp Tue Jan 2 15:32:26 2007 @@ -151,8 +151,8 @@ } } -const unsigned* AlphaRegisterInfo::getCalleeSaveRegs() const { - static const unsigned CalleeSaveRegs[] = { +const unsigned* AlphaRegisterInfo::getCalleeSavedRegs() const { + static const unsigned CalleeSavedRegs[] = { Alpha::R9, Alpha::R10, Alpha::R11, Alpha::R12, Alpha::R13, Alpha::R14, @@ -161,12 +161,12 @@ Alpha::F6, Alpha::F7, Alpha::F8, Alpha::F9, 0 }; - return CalleeSaveRegs; + return CalleeSavedRegs; } const TargetRegisterClass* const* -AlphaRegisterInfo::getCalleeSaveRegClasses() const { - static const TargetRegisterClass * const CalleeSaveRegClasses[] = { +AlphaRegisterInfo::getCalleeSavedRegClasses() const { + static const TargetRegisterClass * const CalleeSavedRegClasses[] = { &Alpha::GPRCRegClass, &Alpha::GPRCRegClass, &Alpha::GPRCRegClass, &Alpha::GPRCRegClass, &Alpha::GPRCRegClass, &Alpha::GPRCRegClass, @@ -175,7 +175,7 @@ &Alpha::F8RCRegClass, &Alpha::F8RCRegClass, &Alpha::F8RCRegClass, &Alpha::F8RCRegClass, 0 }; - return CalleeSaveRegClasses; + return CalleeSavedRegClasses; } //===----------------------------------------------------------------------===// Index: llvm/lib/Target/Alpha/AlphaRegisterInfo.h diff -u llvm/lib/Target/Alpha/AlphaRegisterInfo.h:1.15 llvm/lib/Target/Alpha/AlphaRegisterInfo.h:1.16 --- llvm/lib/Target/Alpha/AlphaRegisterInfo.h:1.15 Mon Nov 27 17:37:22 2006 +++ llvm/lib/Target/Alpha/AlphaRegisterInfo.h Tue Jan 2 15:32:26 2007 @@ -45,9 +45,9 @@ unsigned DestReg, unsigned SrcReg, const TargetRegisterClass *RC) const; - const unsigned *getCalleeSaveRegs() const; + const unsigned *getCalleeSavedRegs() const; - const TargetRegisterClass* const* getCalleeSaveRegClasses() const; + const TargetRegisterClass* const* getCalleeSavedRegClasses() const; void eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB, From evan.cheng at apple.com Tue Jan 2 15:32:59 2007 From: evan.cheng at apple.com (Evan Cheng) Date: Tue, 2 Jan 2007 15:32:59 -0600 Subject: [llvm-commits] CVS: llvm/lib/Target/IA64/IA64RegisterInfo.cpp IA64RegisterInfo.h Message-ID: <200701022132.l02LWxFb032098@zion.cs.uiuc.edu> Changes in directory llvm/lib/Target/IA64: IA64RegisterInfo.cpp updated: 1.25 -> 1.26 IA64RegisterInfo.h updated: 1.9 -> 1.10 --- Log message: Fix naming inconsistency. --- Diffs of the changes: (+8 -8) IA64RegisterInfo.cpp | 12 ++++++------ IA64RegisterInfo.h | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) Index: llvm/lib/Target/IA64/IA64RegisterInfo.cpp diff -u llvm/lib/Target/IA64/IA64RegisterInfo.cpp:1.25 llvm/lib/Target/IA64/IA64RegisterInfo.cpp:1.26 --- llvm/lib/Target/IA64/IA64RegisterInfo.cpp:1.25 Thu Dec 7 16:21:48 2006 +++ llvm/lib/Target/IA64/IA64RegisterInfo.cpp Tue Jan 2 15:32:44 2007 @@ -91,19 +91,19 @@ BuildMI(MBB, MI, TII.get(IA64::MOV), DestReg).addReg(SrcReg); } -const unsigned* IA64RegisterInfo::getCalleeSaveRegs() const { - static const unsigned CalleeSaveRegs[] = { +const unsigned* IA64RegisterInfo::getCalleeSavedRegs() const { + static const unsigned CalleeSavedRegs[] = { IA64::r5, 0 }; - return CalleeSaveRegs; + return CalleeSavedRegs; } const TargetRegisterClass* const* -IA64RegisterInfo::getCalleeSaveRegClasses() const { - static const TargetRegisterClass * const CalleeSaveRegClasses[] = { +IA64RegisterInfo::getCalleeSavedRegClasses() const { + static const TargetRegisterClass * const CalleeSavedRegClasses[] = { &IA64::GRRegClass, 0 }; - return CalleeSaveRegClasses; + return CalleeSavedRegClasses; } //===----------------------------------------------------------------------===// Index: llvm/lib/Target/IA64/IA64RegisterInfo.h diff -u llvm/lib/Target/IA64/IA64RegisterInfo.h:1.9 llvm/lib/Target/IA64/IA64RegisterInfo.h:1.10 --- llvm/lib/Target/IA64/IA64RegisterInfo.h:1.9 Mon Nov 27 17:37:22 2006 +++ llvm/lib/Target/IA64/IA64RegisterInfo.h Tue Jan 2 15:32:44 2007 @@ -44,9 +44,9 @@ unsigned DestReg, unsigned SrcReg, const TargetRegisterClass *RC) const; - const unsigned *getCalleeSaveRegs() const; + const unsigned *getCalleeSavedRegs() const; - const TargetRegisterClass* const* getCalleeSaveRegClasses() const; + const TargetRegisterClass* const* getCalleeSavedRegClasses() const; void eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB, From evan.cheng at apple.com Tue Jan 2 15:33:16 2007 From: evan.cheng at apple.com (Evan Cheng) Date: Tue, 2 Jan 2007 15:33:16 -0600 Subject: [llvm-commits] CVS: llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp PPCRegisterInfo.h Message-ID: <200701022133.l02LXG3U032116@zion.cs.uiuc.edu> Changes in directory llvm/lib/Target/PowerPC: PPCRegisterInfo.cpp updated: 1.94 -> 1.95 PPCRegisterInfo.h updated: 1.20 -> 1.21 --- Log message: Fix naming inconsistency. --- Diffs of the changes: (+12 -12) PPCRegisterInfo.cpp | 20 ++++++++++---------- PPCRegisterInfo.h | 4 ++-- 2 files changed, 12 insertions(+), 12 deletions(-) Index: llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp diff -u llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp:1.94 llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp:1.95 --- llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp:1.94 Thu Dec 7 16:21:48 2006 +++ llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp Tue Jan 2 15:33:01 2007 @@ -238,9 +238,9 @@ } } -const unsigned* PPCRegisterInfo::getCalleeSaveRegs() const { +const unsigned* PPCRegisterInfo::getCalleeSavedRegs() const { // 32-bit Darwin calling convention. - static const unsigned Darwin32_CalleeSaveRegs[] = { + static const unsigned Darwin32_CalleeSavedRegs[] = { PPC::R13, PPC::R14, PPC::R15, PPC::R16, PPC::R17, PPC::R18, PPC::R19, PPC::R20, PPC::R21, PPC::R22, PPC::R23, @@ -261,7 +261,7 @@ PPC::LR, 0 }; // 64-bit Darwin calling convention. - static const unsigned Darwin64_CalleeSaveRegs[] = { + static const unsigned Darwin64_CalleeSavedRegs[] = { PPC::X14, PPC::X15, PPC::X16, PPC::X17, PPC::X18, PPC::X19, PPC::X20, PPC::X21, PPC::X22, PPC::X23, @@ -282,14 +282,14 @@ PPC::LR8, 0 }; - return Subtarget.isPPC64() ? Darwin64_CalleeSaveRegs : - Darwin32_CalleeSaveRegs; + return Subtarget.isPPC64() ? Darwin64_CalleeSavedRegs : + Darwin32_CalleeSavedRegs; } const TargetRegisterClass* const* -PPCRegisterInfo::getCalleeSaveRegClasses() const { +PPCRegisterInfo::getCalleeSavedRegClasses() const { // 32-bit Darwin calling convention. - static const TargetRegisterClass * const Darwin32_CalleeSaveRegClasses[] = { + static const TargetRegisterClass * const Darwin32_CalleeSavedRegClasses[] = { &PPC::GPRCRegClass,&PPC::GPRCRegClass,&PPC::GPRCRegClass, &PPC::GPRCRegClass,&PPC::GPRCRegClass,&PPC::GPRCRegClass,&PPC::GPRCRegClass, &PPC::GPRCRegClass,&PPC::GPRCRegClass,&PPC::GPRCRegClass,&PPC::GPRCRegClass, @@ -312,7 +312,7 @@ }; // 64-bit Darwin calling convention. - static const TargetRegisterClass * const Darwin64_CalleeSaveRegClasses[] = { + static const TargetRegisterClass * const Darwin64_CalleeSavedRegClasses[] = { &PPC::G8RCRegClass,&PPC::G8RCRegClass, &PPC::G8RCRegClass,&PPC::G8RCRegClass,&PPC::G8RCRegClass,&PPC::G8RCRegClass, &PPC::G8RCRegClass,&PPC::G8RCRegClass,&PPC::G8RCRegClass,&PPC::G8RCRegClass, @@ -334,8 +334,8 @@ &PPC::G8RCRegClass, 0 }; - return Subtarget.isPPC64() ? Darwin64_CalleeSaveRegClasses : - Darwin32_CalleeSaveRegClasses; + return Subtarget.isPPC64() ? Darwin64_CalleeSavedRegClasses : + Darwin32_CalleeSavedRegClasses; } /// foldMemoryOperand - PowerPC (like most RISC's) can only fold spills into Index: llvm/lib/Target/PowerPC/PPCRegisterInfo.h diff -u llvm/lib/Target/PowerPC/PPCRegisterInfo.h:1.20 llvm/lib/Target/PowerPC/PPCRegisterInfo.h:1.21 --- llvm/lib/Target/PowerPC/PPCRegisterInfo.h:1.20 Wed Dec 6 11:42:06 2006 +++ llvm/lib/Target/PowerPC/PPCRegisterInfo.h Tue Jan 2 15:33:01 2007 @@ -54,9 +54,9 @@ virtual MachineInstr* foldMemoryOperand(MachineInstr* MI, unsigned OpNum, int FrameIndex) const; - const unsigned *getCalleeSaveRegs() const; + const unsigned *getCalleeSavedRegs() const; - const TargetRegisterClass* const* getCalleeSaveRegClasses() const; + const TargetRegisterClass* const* getCalleeSavedRegClasses() const; void eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB, From evan.cheng at apple.com Tue Jan 2 15:33:32 2007 From: evan.cheng at apple.com (Evan Cheng) Date: Tue, 2 Jan 2007 15:33:32 -0600 Subject: [llvm-commits] CVS: llvm/lib/Target/Sparc/SparcRegisterInfo.cpp SparcRegisterInfo.h Message-ID: <200701022133.l02LXWJg032134@zion.cs.uiuc.edu> Changes in directory llvm/lib/Target/Sparc: SparcRegisterInfo.cpp updated: 1.49 -> 1.50 SparcRegisterInfo.h updated: 1.15 -> 1.16 --- Log message: Fix naming inconsistency. --- Diffs of the changes: (+8 -8) SparcRegisterInfo.cpp | 12 ++++++------ SparcRegisterInfo.h | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) Index: llvm/lib/Target/Sparc/SparcRegisterInfo.cpp diff -u llvm/lib/Target/Sparc/SparcRegisterInfo.cpp:1.49 llvm/lib/Target/Sparc/SparcRegisterInfo.cpp:1.50 --- llvm/lib/Target/Sparc/SparcRegisterInfo.cpp:1.49 Thu Dec 7 16:21:48 2006 +++ llvm/lib/Target/Sparc/SparcRegisterInfo.cpp Tue Jan 2 15:33:17 2007 @@ -111,15 +111,15 @@ return NewMI; } -const unsigned* SparcRegisterInfo::getCalleeSaveRegs() const { - static const unsigned CalleeSaveRegs[] = { 0 }; - return CalleeSaveRegs; +const unsigned* SparcRegisterInfo::getCalleeSavedRegs() const { + static const unsigned CalleeSavedRegs[] = { 0 }; + return CalleeSavedRegs; } const TargetRegisterClass* const* -SparcRegisterInfo::getCalleeSaveRegClasses() const { - static const TargetRegisterClass * const CalleeSaveRegClasses[] = { 0 }; - return CalleeSaveRegClasses; +SparcRegisterInfo::getCalleeSavedRegClasses() const { + static const TargetRegisterClass * const CalleeSavedRegClasses[] = { 0 }; + return CalleeSavedRegClasses; } Index: llvm/lib/Target/Sparc/SparcRegisterInfo.h diff -u llvm/lib/Target/Sparc/SparcRegisterInfo.h:1.15 llvm/lib/Target/Sparc/SparcRegisterInfo.h:1.16 --- llvm/lib/Target/Sparc/SparcRegisterInfo.h:1.15 Mon Nov 27 17:37:22 2006 +++ llvm/lib/Target/Sparc/SparcRegisterInfo.h Tue Jan 2 15:33:17 2007 @@ -48,9 +48,9 @@ unsigned OpNum, int FrameIndex) const; - const unsigned *getCalleeSaveRegs() const; + const unsigned *getCalleeSavedRegs() const; - const TargetRegisterClass* const* getCalleeSaveRegClasses() const; + const TargetRegisterClass* const* getCalleeSavedRegClasses() const; void eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB, From evan.cheng at apple.com Tue Jan 2 15:33:56 2007 From: evan.cheng at apple.com (Evan Cheng) Date: Tue, 2 Jan 2007 15:33:56 -0600 Subject: [llvm-commits] CVS: llvm/lib/Target/X86/X86RegisterInfo.cpp X86RegisterInfo.h Message-ID: <200701022133.l02LXuxl032153@zion.cs.uiuc.edu> Changes in directory llvm/lib/Target/X86: X86RegisterInfo.cpp updated: 1.186 -> 1.187 X86RegisterInfo.h updated: 1.42 -> 1.43 --- Log message: Fix naming inconsistency. --- Diffs of the changes: (+13 -13) X86RegisterInfo.cpp | 16 ++++++++-------- X86RegisterInfo.h | 10 +++++----- 2 files changed, 13 insertions(+), 13 deletions(-) Index: llvm/lib/Target/X86/X86RegisterInfo.cpp diff -u llvm/lib/Target/X86/X86RegisterInfo.cpp:1.186 llvm/lib/Target/X86/X86RegisterInfo.cpp:1.187 --- llvm/lib/Target/X86/X86RegisterInfo.cpp:1.186 Thu Dec 14 15:55:39 2006 +++ llvm/lib/Target/X86/X86RegisterInfo.cpp Tue Jan 2 15:33:40 2007 @@ -853,30 +853,30 @@ } -const unsigned *X86RegisterInfo::getCalleeSaveRegs() const { - static const unsigned CalleeSaveRegs32Bit[] = { +const unsigned *X86RegisterInfo::getCalleeSavedRegs() const { + static const unsigned CalleeSavedRegs32Bit[] = { X86::ESI, X86::EDI, X86::EBX, X86::EBP, 0 }; - static const unsigned CalleeSaveRegs64Bit[] = { + static const unsigned CalleeSavedRegs64Bit[] = { X86::RBX, X86::R12, X86::R13, X86::R14, X86::R15, X86::RBP, 0 }; - return Is64Bit ? CalleeSaveRegs64Bit : CalleeSaveRegs32Bit; + return Is64Bit ? CalleeSavedRegs64Bit : CalleeSavedRegs32Bit; } const TargetRegisterClass* const* -X86RegisterInfo::getCalleeSaveRegClasses() const { - static const TargetRegisterClass * const CalleeSaveRegClasses32Bit[] = { +X86RegisterInfo::getCalleeSavedRegClasses() const { + static const TargetRegisterClass * const CalleeSavedRegClasses32Bit[] = { &X86::GR32RegClass, &X86::GR32RegClass, &X86::GR32RegClass, &X86::GR32RegClass, 0 }; - static const TargetRegisterClass * const CalleeSaveRegClasses64Bit[] = { + static const TargetRegisterClass * const CalleeSavedRegClasses64Bit[] = { &X86::GR64RegClass, &X86::GR64RegClass, &X86::GR64RegClass, &X86::GR64RegClass, &X86::GR64RegClass, &X86::GR64RegClass, 0 }; - return Is64Bit ? CalleeSaveRegClasses64Bit : CalleeSaveRegClasses32Bit; + return Is64Bit ? CalleeSavedRegClasses64Bit : CalleeSavedRegClasses32Bit; } //===----------------------------------------------------------------------===// Index: llvm/lib/Target/X86/X86RegisterInfo.h diff -u llvm/lib/Target/X86/X86RegisterInfo.h:1.42 llvm/lib/Target/X86/X86RegisterInfo.h:1.43 --- llvm/lib/Target/X86/X86RegisterInfo.h:1.42 Sun Nov 5 13:31:28 2006 +++ llvm/lib/Target/X86/X86RegisterInfo.h Tue Jan 2 15:33:40 2007 @@ -69,14 +69,14 @@ unsigned OpNum, int FrameIndex) const; - /// getCalleeSaveRegs - Return a null-terminated list of all of the + /// getCalleeSavedRegs - Return a null-terminated list of all of the /// callee-save registers on this target. - const unsigned *getCalleeSaveRegs() const; + const unsigned *getCalleeSavedRegs() const; - /// getCalleeSaveRegClasses - Return a null-terminated list of the preferred + /// getCalleeSavedRegClasses - Return a null-terminated list of the preferred /// register classes to spill each callee-saved register with. The order and - /// length of this list match the getCalleeSaveRegs() list. - const TargetRegisterClass* const* getCalleeSaveRegClasses() const; + /// length of this list match the getCalleeSavedRegs() list. + const TargetRegisterClass* const* getCalleeSavedRegClasses() const; void eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB, From reid at x10sys.com Tue Jan 2 15:53:59 2007 From: reid at x10sys.com (Reid Spencer) Date: Tue, 2 Jan 2007 15:53:59 -0600 Subject: [llvm-commits] CVS: llvm/lib/AsmParser/llvmAsmParser.y Message-ID: <200701022153.l02Lrxd6032609@zion.cs.uiuc.edu> Changes in directory llvm/lib/AsmParser: llvmAsmParser.y updated: 1.295 -> 1.296 --- Log message: Implement checking for unresolved types in the argument types and result type of function definitions. This fixes test/Regression/Assember/2007-01-02-Undefined-Arg-Type.ll --- Diffs of the changes: (+59 -0) llvmAsmParser.y | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 59 insertions(+) Index: llvm/lib/AsmParser/llvmAsmParser.y diff -u llvm/lib/AsmParser/llvmAsmParser.y:1.295 llvm/lib/AsmParser/llvmAsmParser.y:1.296 --- llvm/lib/AsmParser/llvmAsmParser.y:1.295 Sun Dec 31 15:46:36 2006 +++ llvm/lib/AsmParser/llvmAsmParser.y Tue Jan 2 15:53:43 2007 @@ -149,6 +149,58 @@ } return Ret; } + + bool TypeIsUnresolved(PATypeHolder* PATy) { + // If it isn't abstract, its resolved + const Type* Ty = PATy->get(); + if (!Ty->isAbstract()) + return false; + // Traverse the type looking for abstract types. If it isn't abstract then + // we don't need to traverse that leg of the type. + std::vector WorkList, SeenList; + WorkList.push_back(Ty); + while (!WorkList.empty()) { + const Type* Ty = WorkList.back(); + SeenList.push_back(Ty); + WorkList.pop_back(); + if (const OpaqueType* OpTy = dyn_cast(Ty)) { + // Check to see if this is an unresolved type + std::map::iterator I = LateResolveTypes.begin(); + std::map::iterator E = LateResolveTypes.end(); + for ( ; I != E; ++I) { + if (I->second.get() == OpTy) + return true; + } + } else if (const SequentialType* SeqTy = dyn_cast(Ty)) { + const Type* TheTy = SeqTy->getElementType(); + if (TheTy->isAbstract() && TheTy != Ty) { + std::vector::iterator I = SeenList.begin(), + E = SeenList.end(); + for ( ; I != E; ++I) + if (*I == TheTy) + break; + if (I == E) + WorkList.push_back(TheTy); + } + } else if (const StructType* StrTy = dyn_cast(Ty)) { + for (unsigned i = 0; i < StrTy->getNumElements(); ++i) { + const Type* TheTy = StrTy->getElementType(i); + if (TheTy->isAbstract() && TheTy != Ty) { + std::vector::iterator I = SeenList.begin(), + E = SeenList.end(); + for ( ; I != E; ++I) + if (*I == TheTy) + break; + if (I == E) + WorkList.push_back(TheTy); + } + } + } + } + return false; + } + + } CurModule; static struct PerFunctionInfo { @@ -1943,12 +1995,19 @@ std::string FunctionName($3); free($3); // Free strdup'd memory! + // Check the function result for abstractness if this is a define. We should + // have no abstract types at this point + if (!CurFun.isDeclare && CurModule.TypeIsUnresolved($2.Ty)) + GEN_ERROR("Reference to abstract result: "+ $2.Ty->get()->getDescription()); + std::vector ParamTypeList; std::vector ParamAttrs; ParamAttrs.push_back($2.Attrs); if ($5) { // If there are arguments... for (ArgListType::iterator I = $5->begin(); I != $5->end(); ++I) { const Type* Ty = I->Ty->get(); + if (!CurFun.isDeclare && CurModule.TypeIsUnresolved(I->Ty)) + GEN_ERROR("Reference to abstract argument: " + Ty->getDescription()); ParamTypeList.push_back(Ty); if (Ty != Type::VoidTy) ParamAttrs.push_back(I->Attrs); From reid at x10sys.com Tue Jan 2 15:54:28 2007 From: reid at x10sys.com (Reid Spencer) Date: Tue, 2 Jan 2007 15:54:28 -0600 Subject: [llvm-commits] CVS: llvm/lib/AsmParser/llvmAsmParser.cpp.cvs llvmAsmParser.h.cvs llvmAsmParser.y.cvs Message-ID: <200701022154.l02LsSSO032631@zion.cs.uiuc.edu> Changes in directory llvm/lib/AsmParser: llvmAsmParser.cpp.cvs updated: 1.41 -> 1.42 llvmAsmParser.h.cvs updated: 1.33 -> 1.34 llvmAsmParser.y.cvs updated: 1.42 -> 1.43 --- Log message: Regenerate. --- Diffs of the changes: (+385 -267) llvmAsmParser.cpp.cvs | 591 +++++++++++++++++++++++++++----------------------- llvmAsmParser.h.cvs | 2 llvmAsmParser.y.cvs | 59 ++++ 3 files changed, 385 insertions(+), 267 deletions(-) Index: llvm/lib/AsmParser/llvmAsmParser.cpp.cvs diff -u llvm/lib/AsmParser/llvmAsmParser.cpp.cvs:1.41 llvm/lib/AsmParser/llvmAsmParser.cpp.cvs:1.42 --- llvm/lib/AsmParser/llvmAsmParser.cpp.cvs:1.41 Sun Dec 31 15:47:02 2006 +++ llvm/lib/AsmParser/llvmAsmParser.cpp.cvs Tue Jan 2 15:54:12 2007 @@ -475,6 +475,58 @@ } return Ret; } + + bool TypeIsUnresolved(PATypeHolder* PATy) { + // If it isn't abstract, its resolved + const Type* Ty = PATy->get(); + if (!Ty->isAbstract()) + return false; + // Traverse the type looking for abstract types. If it isn't abstract then + // we don't need to traverse that leg of the type. + std::vector WorkList, SeenList; + WorkList.push_back(Ty); + while (!WorkList.empty()) { + const Type* Ty = WorkList.back(); + SeenList.push_back(Ty); + WorkList.pop_back(); + if (const OpaqueType* OpTy = dyn_cast(Ty)) { + // Check to see if this is an unresolved type + std::map::iterator I = LateResolveTypes.begin(); + std::map::iterator E = LateResolveTypes.end(); + for ( ; I != E; ++I) { + if (I->second.get() == OpTy) + return true; + } + } else if (const SequentialType* SeqTy = dyn_cast(Ty)) { + const Type* TheTy = SeqTy->getElementType(); + if (TheTy->isAbstract() && TheTy != Ty) { + std::vector::iterator I = SeenList.begin(), + E = SeenList.end(); + for ( ; I != E; ++I) + if (*I == TheTy) + break; + if (I == E) + WorkList.push_back(TheTy); + } + } else if (const StructType* StrTy = dyn_cast(Ty)) { + for (unsigned i = 0; i < StrTy->getNumElements(); ++i) { + const Type* TheTy = StrTy->getElementType(i); + if (TheTy->isAbstract() && TheTy != Ty) { + std::vector::iterator I = SeenList.begin(), + E = SeenList.end(); + for ( ; I != E; ++I) + if (*I == TheTy) + break; + if (I == E) + WorkList.push_back(TheTy); + } + } + } + } + return false; + } + + } CurModule; static struct PerFunctionInfo { @@ -1185,7 +1237,7 @@ #endif #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) -#line 843 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 895 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" typedef union YYSTYPE { llvm::Module *ModuleVal; llvm::Function *FunctionVal; @@ -1232,7 +1284,7 @@ llvm::FCmpInst::Predicate FPredicate; } YYSTYPE; /* Line 196 of yacc.c. */ -#line 1236 "llvmAsmParser.tab.c" +#line 1288 "llvmAsmParser.tab.c" # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_TRIVIAL 1 @@ -1244,7 +1296,7 @@ /* Line 219 of yacc.c. */ -#line 1248 "llvmAsmParser.tab.c" +#line 1300 "llvmAsmParser.tab.c" #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__) # define YYSIZE_T __SIZE_TYPE__ @@ -1593,35 +1645,35 @@ /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const unsigned short int yyrline[] = { - 0, 983, 983, 984, 994, 994, 994, 994, 994, 994, - 994, 994, 994, 995, 995, 995, 996, 996, 996, 996, - 996, 996, 997, 997, 997, 997, 997, 997, 998, 998, - 998, 1000, 1000, 1001, 1001, 1002, 1002, 1003, 1003, 1004, - 1004, 1008, 1008, 1009, 1009, 1010, 1010, 1011, 1011, 1012, - 1012, 1013, 1013, 1014, 1014, 1015, 1016, 1021, 1021, 1021, - 1021, 1022, 1022, 1025, 1029, 1035, 1036, 1037, 1038, 1039, - 1043, 1044, 1045, 1049, 1050, 1051, 1055, 1056, 1057, 1058, - 1059, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1076, - 1077, 1080, 1081, 1086, 1087, 1088, 1093, 1094, 1100, 1101, - 1109, 1117, 1118, 1123, 1124, 1125, 1130, 1143, 1143, 1143, - 1143, 1143, 1143, 1143, 1143, 1146, 1150, 1154, 1161, 1166, - 1174, 1192, 1210, 1215, 1227, 1237, 1241, 1251, 1258, 1265, - 1273, 1279, 1284, 1291, 1292, 1299, 1306, 1314, 1319, 1330, - 1358, 1374, 1403, 1431, 1452, 1467, 1479, 1486, 1549, 1558, - 1568, 1574, 1580, 1584, 1588, 1596, 1610, 1631, 1639, 1645, - 1656, 1661, 1666, 1675, 1681, 1687, 1696, 1700, 1708, 1708, - 1719, 1724, 1732, 1733, 1737, 1737, 1741, 1741, 1744, 1747, - 1759, 1783, 1794, 1794, 1803, 1803, 1811, 1811, 1821, 1824, - 1830, 1843, 1844, 1846, 1850, 1859, 1863, 1868, 1870, 1875, - 1880, 1889, 1889, 1890, 1890, 1892, 1902, 1913, 1917, 1926, - 1935, 1940, 2038, 2038, 2040, 2048, 2048, 2050, 2055, 2066, - 2070, 2075, 2079, 2083, 2087, 2091, 2095, 2099, 2103, 2107, - 2132, 2136, 2150, 2154, 2160, 2160, 2166, 2175, 2179, 2188, - 2199, 2208, 2220, 2233, 2237, 2241, 2246, 2255, 2274, 2283, - 2350, 2354, 2361, 2372, 2385, 2394, 2405, 2415, 2423, 2431, - 2434, 2435, 2442, 2446, 2451, 2472, 2489, 2502, 2515, 2528, - 2537, 2550, 2558, 2565, 2571, 2577, 2583, 2598, 2660, 2665, - 2669, 2676, 2683, 2691, 2698, 2706, 2714, 2728, 2745 + 0, 1035, 1035, 1036, 1046, 1046, 1046, 1046, 1046, 1046, + 1046, 1046, 1046, 1047, 1047, 1047, 1048, 1048, 1048, 1048, + 1048, 1048, 1049, 1049, 1049, 1049, 1049, 1049, 1050, 1050, + 1050, 1052, 1052, 1053, 1053, 1054, 1054, 1055, 1055, 1056, + 1056, 1060, 1060, 1061, 1061, 1062, 1062, 1063, 1063, 1064, + 1064, 1065, 1065, 1066, 1066, 1067, 1068, 1073, 1073, 1073, + 1073, 1074, 1074, 1077, 1081, 1087, 1088, 1089, 1090, 1091, + 1095, 1096, 1097, 1101, 1102, 1103, 1107, 1108, 1109, 1110, + 1111, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1128, + 1129, 1132, 1133, 1138, 1139, 1140, 1145, 1146, 1152, 1153, + 1161, 1169, 1170, 1175, 1176, 1177, 1182, 1195, 1195, 1195, + 1195, 1195, 1195, 1195, 1195, 1198, 1202, 1206, 1213, 1218, + 1226, 1244, 1262, 1267, 1279, 1289, 1293, 1303, 1310, 1317, + 1325, 1331, 1336, 1343, 1344, 1351, 1358, 1366, 1371, 1382, + 1410, 1426, 1455, 1483, 1504, 1519, 1531, 1538, 1601, 1610, + 1620, 1626, 1632, 1636, 1640, 1648, 1662, 1683, 1691, 1697, + 1708, 1713, 1718, 1727, 1733, 1739, 1748, 1752, 1760, 1760, + 1771, 1776, 1784, 1785, 1789, 1789, 1793, 1793, 1796, 1799, + 1811, 1835, 1846, 1846, 1855, 1855, 1863, 1863, 1873, 1876, + 1882, 1895, 1896, 1898, 1902, 1911, 1915, 1920, 1922, 1927, + 1932, 1941, 1941, 1942, 1942, 1944, 1954, 1965, 1969, 1978, + 1987, 1992, 2097, 2097, 2099, 2107, 2107, 2109, 2114, 2125, + 2129, 2134, 2138, 2142, 2146, 2150, 2154, 2158, 2162, 2166, + 2191, 2195, 2209, 2213, 2219, 2219, 2225, 2234, 2238, 2247, + 2258, 2267, 2279, 2292, 2296, 2300, 2305, 2314, 2333, 2342, + 2409, 2413, 2420, 2431, 2444, 2453, 2464, 2474, 2482, 2490, + 2493, 2494, 2501, 2505, 2510, 2531, 2548, 2561, 2574, 2587, + 2596, 2609, 2617, 2624, 2630, 2636, 2642, 2657, 2719, 2724, + 2728, 2735, 2742, 2750, 2757, 2765, 2773, 2787, 2804 }; #endif @@ -2964,7 +3016,7 @@ switch (yyn) { case 3: -#line 984 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1036 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[0].UIntVal) > (uint32_t)INT32_MAX) // Outside of my range! GEN_ERROR("Value too large for type!"); @@ -2974,137 +3026,137 @@ break; case 31: -#line 1000 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1052 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.IPredicate) = ICmpInst::ICMP_EQ; ;} break; case 32: -#line 1000 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1052 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.IPredicate) = ICmpInst::ICMP_NE; ;} break; case 33: -#line 1001 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1053 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.IPredicate) = ICmpInst::ICMP_SLT; ;} break; case 34: -#line 1001 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1053 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.IPredicate) = ICmpInst::ICMP_SGT; ;} break; case 35: -#line 1002 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1054 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.IPredicate) = ICmpInst::ICMP_SLE; ;} break; case 36: -#line 1002 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1054 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.IPredicate) = ICmpInst::ICMP_SGE; ;} break; case 37: -#line 1003 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1055 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.IPredicate) = ICmpInst::ICMP_ULT; ;} break; case 38: -#line 1003 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1055 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.IPredicate) = ICmpInst::ICMP_UGT; ;} break; case 39: -#line 1004 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1056 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.IPredicate) = ICmpInst::ICMP_ULE; ;} break; case 40: -#line 1004 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1056 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.IPredicate) = ICmpInst::ICMP_UGE; ;} break; case 41: -#line 1008 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1060 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_OEQ; ;} break; case 42: -#line 1008 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1060 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_ONE; ;} break; case 43: -#line 1009 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1061 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_OLT; ;} break; case 44: -#line 1009 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1061 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_OGT; ;} break; case 45: -#line 1010 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1062 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_OLE; ;} break; case 46: -#line 1010 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1062 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_OGE; ;} break; case 47: -#line 1011 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1063 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_ORD; ;} break; case 48: -#line 1011 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1063 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_UNO; ;} break; case 49: -#line 1012 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1064 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_UEQ; ;} break; case 50: -#line 1012 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1064 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_UNE; ;} break; case 51: -#line 1013 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1065 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_ULT; ;} break; case 52: -#line 1013 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1065 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_UGT; ;} break; case 53: -#line 1014 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1066 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_ULE; ;} break; case 54: -#line 1014 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1066 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_UGE; ;} break; case 55: -#line 1015 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1067 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_TRUE; ;} break; case 56: -#line 1016 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1068 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_FALSE; ;} break; case 63: -#line 1025 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1077 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.StrVal) = (yyvsp[-1].StrVal); CHECK_FOR_ERROR @@ -3112,7 +3164,7 @@ break; case 64: -#line 1029 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1081 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.StrVal) = 0; CHECK_FOR_ERROR @@ -3120,122 +3172,122 @@ break; case 65: -#line 1035 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1087 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::InternalLinkage; ;} break; case 66: -#line 1036 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1088 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::WeakLinkage; ;} break; case 67: -#line 1037 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1089 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::LinkOnceLinkage; ;} break; case 68: -#line 1038 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1090 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::AppendingLinkage; ;} break; case 69: -#line 1039 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1091 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::DLLExportLinkage; ;} break; case 70: -#line 1043 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1095 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::DLLImportLinkage; ;} break; case 71: -#line 1044 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1096 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::ExternalWeakLinkage; ;} break; case 72: -#line 1045 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1097 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;} break; case 73: -#line 1049 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1101 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;} break; case 74: -#line 1050 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1102 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::DLLImportLinkage; ;} break; case 75: -#line 1051 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1103 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::ExternalWeakLinkage; ;} break; case 76: -#line 1055 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1107 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;} break; case 77: -#line 1056 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1108 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::InternalLinkage; ;} break; case 78: -#line 1057 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1109 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::LinkOnceLinkage; ;} break; case 79: -#line 1058 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1110 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::WeakLinkage; ;} break; case 80: -#line 1059 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1111 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::DLLExportLinkage; ;} break; case 81: -#line 1062 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1114 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.UIntVal) = CallingConv::C; ;} break; case 82: -#line 1063 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1115 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.UIntVal) = CallingConv::C; ;} break; case 83: -#line 1064 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1116 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.UIntVal) = CallingConv::CSRet; ;} break; case 84: -#line 1065 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1117 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.UIntVal) = CallingConv::Fast; ;} break; case 85: -#line 1066 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1118 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.UIntVal) = CallingConv::Cold; ;} break; case 86: -#line 1067 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1119 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.UIntVal) = CallingConv::X86_StdCall; ;} break; case 87: -#line 1068 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1120 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.UIntVal) = CallingConv::X86_FastCall; ;} break; case 88: -#line 1069 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1121 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if ((unsigned)(yyvsp[0].UInt64Val) != (yyvsp[0].UInt64Val)) GEN_ERROR("Calling conv too large!"); @@ -3245,49 +3297,49 @@ break; case 89: -#line 1076 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1128 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ParamAttrs) = FunctionType::ZExtAttribute; ;} break; case 90: -#line 1077 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1129 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ParamAttrs) = FunctionType::SExtAttribute; ;} break; case 91: -#line 1080 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1132 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ParamAttrs) = (yyvsp[0].ParamAttrs); ;} break; case 92: -#line 1081 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1133 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ParamAttrs) = FunctionType::ParameterAttributes((yyvsp[-2].ParamAttrs) | (yyvsp[0].ParamAttrs)); ;} break; case 93: -#line 1086 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1138 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ParamAttrs) = FunctionType::NoAttributeSet; ;} break; case 94: -#line 1087 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1139 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ParamAttrs) = (yyvsp[0].ParamAttrs); ;} break; case 95: -#line 1088 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1140 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ParamAttrs) = (yyvsp[-1].ParamAttrs); ;} break; case 96: -#line 1093 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1145 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.UIntVal) = 0; ;} break; case 97: -#line 1094 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1146 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.UIntVal) = (yyvsp[0].UInt64Val); if ((yyval.UIntVal) != 0 && !isPowerOf2_32((yyval.UIntVal))) @@ -3297,12 +3349,12 @@ break; case 98: -#line 1100 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1152 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.UIntVal) = 0; ;} break; case 99: -#line 1101 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1153 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.UIntVal) = (yyvsp[0].UInt64Val); if ((yyval.UIntVal) != 0 && !isPowerOf2_32((yyval.UIntVal))) @@ -3312,7 +3364,7 @@ break; case 100: -#line 1109 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1161 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { for (unsigned i = 0, e = strlen((yyvsp[0].StrVal)); i != e; ++i) if ((yyvsp[0].StrVal)[i] == '"' || (yyvsp[0].StrVal)[i] == '\\') @@ -3323,27 +3375,27 @@ break; case 101: -#line 1117 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1169 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.StrVal) = 0; ;} break; case 102: -#line 1118 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1170 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.StrVal) = (yyvsp[0].StrVal); ;} break; case 103: -#line 1123 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1175 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" {;} break; case 104: -#line 1124 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1176 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" {;} break; case 105: -#line 1125 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1177 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CurGV->setSection((yyvsp[0].StrVal)); free((yyvsp[0].StrVal)); @@ -3352,7 +3404,7 @@ break; case 106: -#line 1130 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1182 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[0].UInt64Val) != 0 && !isPowerOf2_32((yyvsp[0].UInt64Val))) GEN_ERROR("Alignment must be a power of two!"); @@ -3362,7 +3414,7 @@ break; case 115: -#line 1146 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1198 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.TypeVal) = new PATypeHolder(OpaqueType::get()); CHECK_FOR_ERROR @@ -3370,7 +3422,7 @@ break; case 116: -#line 1150 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1202 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.TypeVal) = new PATypeHolder((yyvsp[0].PrimType)); CHECK_FOR_ERROR @@ -3378,7 +3430,7 @@ break; case 117: -#line 1154 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1206 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Pointer type? if (*(yyvsp[-1].TypeVal) == Type::LabelTy) GEN_ERROR("Cannot form a pointer to a basic block"); @@ -3389,7 +3441,7 @@ break; case 118: -#line 1161 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1213 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Named types are also simple types... const Type* tmp = getTypeVal((yyvsp[0].ValIDVal)); CHECK_FOR_ERROR @@ -3398,7 +3450,7 @@ break; case 119: -#line 1166 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1218 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Type UpReference if ((yyvsp[0].UInt64Val) > (uint64_t)~0U) GEN_ERROR("Value out of range!"); OpaqueType *OT = OpaqueType::get(); // Use temporary placeholder @@ -3410,7 +3462,7 @@ break; case 120: -#line 1174 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1226 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { std::vector Params; std::vector Attrs; @@ -3432,7 +3484,7 @@ break; case 121: -#line 1192 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1244 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { std::vector Params; std::vector Attrs; @@ -3453,7 +3505,7 @@ break; case 122: -#line 1210 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1262 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Sized array type? (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(ArrayType::get(*(yyvsp[-1].TypeVal), (unsigned)(yyvsp[-3].UInt64Val)))); delete (yyvsp[-1].TypeVal); @@ -3462,7 +3514,7 @@ break; case 123: -#line 1215 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1267 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Packed array type? const llvm::Type* ElemTy = (yyvsp[-1].TypeVal)->get(); if ((unsigned)(yyvsp[-3].UInt64Val) != (yyvsp[-3].UInt64Val)) @@ -3478,7 +3530,7 @@ break; case 124: -#line 1227 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1279 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Structure type? std::vector Elements; for (std::list::iterator I = (yyvsp[-1].TypeList)->begin(), @@ -3492,7 +3544,7 @@ break; case 125: -#line 1237 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1289 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Empty structure type? (yyval.TypeVal) = new PATypeHolder(StructType::get(std::vector())); CHECK_FOR_ERROR @@ -3500,7 +3552,7 @@ break; case 126: -#line 1241 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1293 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { std::vector Elements; for (std::list::iterator I = (yyvsp[-2].TypeList)->begin(), @@ -3514,7 +3566,7 @@ break; case 127: -#line 1251 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1303 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Empty structure type? (yyval.TypeVal) = new PATypeHolder(StructType::get(std::vector(), true)); CHECK_FOR_ERROR @@ -3522,7 +3574,7 @@ break; case 128: -#line 1258 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1310 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.TypeWithAttrs).Ty = (yyvsp[-1].TypeVal); (yyval.TypeWithAttrs).Attrs = (yyvsp[0].ParamAttrs); @@ -3530,7 +3582,7 @@ break; case 129: -#line 1265 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1317 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); @@ -3542,7 +3594,7 @@ break; case 130: -#line 1273 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1325 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.TypeWithAttrs).Ty = new PATypeHolder(Type::VoidTy); (yyval.TypeWithAttrs).Attrs = (yyvsp[0].ParamAttrs); @@ -3550,7 +3602,7 @@ break; case 131: -#line 1279 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1331 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.TypeWithAttrsList) = new TypeWithAttrsList(); (yyval.TypeWithAttrsList)->push_back((yyvsp[0].TypeWithAttrs)); @@ -3559,7 +3611,7 @@ break; case 132: -#line 1284 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1336 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { ((yyval.TypeWithAttrsList)=(yyvsp[-2].TypeWithAttrsList))->push_back((yyvsp[0].TypeWithAttrs)); CHECK_FOR_ERROR @@ -3567,7 +3619,7 @@ break; case 134: -#line 1292 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1344 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.TypeWithAttrsList)=(yyvsp[-2].TypeWithAttrsList); TypeWithAttrs TWA; TWA.Attrs = FunctionType::NoAttributeSet; @@ -3578,7 +3630,7 @@ break; case 135: -#line 1299 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1351 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.TypeWithAttrsList) = new TypeWithAttrsList; TypeWithAttrs TWA; TWA.Attrs = FunctionType::NoAttributeSet; @@ -3589,7 +3641,7 @@ break; case 136: -#line 1306 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1358 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.TypeWithAttrsList) = new TypeWithAttrsList(); CHECK_FOR_ERROR @@ -3597,7 +3649,7 @@ break; case 137: -#line 1314 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1366 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.TypeList) = new std::list(); (yyval.TypeList)->push_back(*(yyvsp[0].TypeVal)); delete (yyvsp[0].TypeVal); @@ -3606,7 +3658,7 @@ break; case 138: -#line 1319 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1371 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { ((yyval.TypeList)=(yyvsp[-2].TypeList))->push_back(*(yyvsp[0].TypeVal)); delete (yyvsp[0].TypeVal); CHECK_FOR_ERROR @@ -3614,7 +3666,7 @@ break; case 139: -#line 1330 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1382 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Nonempty unsized arr if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription()); @@ -3646,7 +3698,7 @@ break; case 140: -#line 1358 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1410 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription()); @@ -3666,7 +3718,7 @@ break; case 141: -#line 1374 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1426 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription()); @@ -3699,7 +3751,7 @@ break; case 142: -#line 1403 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1455 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Nonempty unsized arr if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription()); @@ -3731,7 +3783,7 @@ break; case 143: -#line 1431 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1483 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { const StructType *STy = dyn_cast((yyvsp[-3].TypeVal)->get()); if (STy == 0) @@ -3756,7 +3808,7 @@ break; case 144: -#line 1452 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1504 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription()); @@ -3775,7 +3827,7 @@ break; case 145: -#line 1467 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1519 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); @@ -3791,7 +3843,7 @@ break; case 146: -#line 1479 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1531 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); @@ -3802,7 +3854,7 @@ break; case 147: -#line 1486 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1538 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); @@ -3869,7 +3921,7 @@ break; case 148: -#line 1549 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1601 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); @@ -3882,7 +3934,7 @@ break; case 149: -#line 1558 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1610 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); @@ -3896,7 +3948,7 @@ break; case 150: -#line 1568 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1620 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // integral constants if (!ConstantInt::isValueValidForType((yyvsp[-1].PrimType), (yyvsp[0].SInt64Val))) GEN_ERROR("Constant value doesn't fit in type!"); @@ -3906,7 +3958,7 @@ break; case 151: -#line 1574 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1626 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // integral constants if (!ConstantInt::isValueValidForType((yyvsp[-1].PrimType), (yyvsp[0].UInt64Val))) GEN_ERROR("Constant value doesn't fit in type!"); @@ -3916,7 +3968,7 @@ break; case 152: -#line 1580 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1632 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Boolean constants (yyval.ConstVal) = ConstantBool::getTrue(); CHECK_FOR_ERROR @@ -3924,7 +3976,7 @@ break; case 153: -#line 1584 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1636 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Boolean constants (yyval.ConstVal) = ConstantBool::getFalse(); CHECK_FOR_ERROR @@ -3932,7 +3984,7 @@ break; case 154: -#line 1588 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1640 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Float & Double constants if (!ConstantFP::isValueValidForType((yyvsp[-1].PrimType), (yyvsp[0].FPVal))) GEN_ERROR("Floating point constant invalid for type!!"); @@ -3942,7 +3994,7 @@ break; case 155: -#line 1596 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1648 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); @@ -3960,7 +4012,7 @@ break; case 156: -#line 1610 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1662 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!isa((yyvsp[-2].ConstVal)->getType())) GEN_ERROR("GetElementPtr requires a pointer operand!"); @@ -3985,7 +4037,7 @@ break; case 157: -#line 1631 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1683 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[-5].ConstVal)->getType() != Type::BoolTy) GEN_ERROR("Select condition must be of boolean type!"); @@ -3997,7 +4049,7 @@ break; case 158: -#line 1639 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1691 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType()) GEN_ERROR("Binary operator types must match!"); @@ -4007,7 +4059,7 @@ break; case 159: -#line 1645 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1697 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType()) GEN_ERROR("Logical operator types must match!"); @@ -4022,7 +4074,7 @@ break; case 160: -#line 1656 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1708 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType()) GEN_ERROR("icmp operand types must match!"); @@ -4031,7 +4083,7 @@ break; case 161: -#line 1661 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1713 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType()) GEN_ERROR("fcmp operand types must match!"); @@ -4040,7 +4092,7 @@ break; case 162: -#line 1666 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1718 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[-1].ConstVal)->getType() != Type::Int8Ty) GEN_ERROR("Shift count for shift constant must be i8 type!"); @@ -4053,7 +4105,7 @@ break; case 163: -#line 1675 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1727 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!ExtractElementInst::isValidOperands((yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal))) GEN_ERROR("Invalid extractelement operands!"); @@ -4063,7 +4115,7 @@ break; case 164: -#line 1681 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1733 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!InsertElementInst::isValidOperands((yyvsp[-5].ConstVal), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal))) GEN_ERROR("Invalid insertelement operands!"); @@ -4073,7 +4125,7 @@ break; case 165: -#line 1687 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1739 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!ShuffleVectorInst::isValidOperands((yyvsp[-5].ConstVal), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal))) GEN_ERROR("Invalid shufflevector operands!"); @@ -4083,7 +4135,7 @@ break; case 166: -#line 1696 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1748 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { ((yyval.ConstVector) = (yyvsp[-2].ConstVector))->push_back((yyvsp[0].ConstVal)); CHECK_FOR_ERROR @@ -4091,7 +4143,7 @@ break; case 167: -#line 1700 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1752 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ConstVector) = new std::vector(); (yyval.ConstVector)->push_back((yyvsp[0].ConstVal)); @@ -4100,17 +4152,17 @@ break; case 168: -#line 1708 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1760 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = false; ;} break; case 169: -#line 1708 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1760 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = true; ;} break; case 170: -#line 1719 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1771 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ModuleVal) = ParserResult = CurModule.CurrentModule; CurModule.ModuleDone(); @@ -4119,7 +4171,7 @@ break; case 171: -#line 1724 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1776 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ModuleVal) = ParserResult = CurModule.CurrentModule; CurModule.ModuleDone(); @@ -4128,12 +4180,12 @@ break; case 174: -#line 1737 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1789 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CurFun.isDeclare = false ;} break; case 175: -#line 1737 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1789 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CurFun.FunctionDone(); CHECK_FOR_ERROR @@ -4141,26 +4193,26 @@ break; case 176: -#line 1741 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1793 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CurFun.isDeclare = true; ;} break; case 177: -#line 1741 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1793 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CHECK_FOR_ERROR ;} break; case 178: -#line 1744 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1796 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CHECK_FOR_ERROR ;} break; case 179: -#line 1747 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1799 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Emit an error if there are any unresolved types left. if (!CurModule.LateResolveTypes.empty()) { @@ -4176,7 +4228,7 @@ break; case 180: -#line 1759 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1811 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription()); @@ -4204,7 +4256,7 @@ break; case 181: -#line 1783 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1835 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { ResolveTypeTo((yyvsp[-2].StrVal), (yyvsp[0].PrimType)); @@ -4219,7 +4271,7 @@ break; case 182: -#line 1794 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1846 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { /* "Externally Visible" Linkage */ if ((yyvsp[0].ConstVal) == 0) GEN_ERROR("Global value initializer is not a constant!"); @@ -4230,14 +4282,14 @@ break; case 183: -#line 1800 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1852 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CurGV = 0; ;} break; case 184: -#line 1803 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1855 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[0].ConstVal) == 0) GEN_ERROR("Global value initializer is not a constant!"); @@ -4247,14 +4299,14 @@ break; case 185: -#line 1808 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1860 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CurGV = 0; ;} break; case 186: -#line 1811 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1863 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription()); @@ -4265,7 +4317,7 @@ break; case 187: -#line 1817 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1869 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CurGV = 0; CHECK_FOR_ERROR @@ -4273,21 +4325,21 @@ break; case 188: -#line 1821 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1873 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CHECK_FOR_ERROR ;} break; case 189: -#line 1824 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1876 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CHECK_FOR_ERROR ;} break; case 190: -#line 1830 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1882 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { const std::string &AsmSoFar = CurModule.CurrentModule->getModuleInlineAsm(); char *EndStr = UnEscapeLexed((yyvsp[0].StrVal), true); @@ -4303,17 +4355,17 @@ break; case 191: -#line 1843 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1895 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.Endianness) = Module::BigEndian; ;} break; case 192: -#line 1844 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1896 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.Endianness) = Module::LittleEndian; ;} break; case 193: -#line 1846 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1898 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CurModule.CurrentModule->setEndianness((yyvsp[0].Endianness)); CHECK_FOR_ERROR @@ -4321,7 +4373,7 @@ break; case 194: -#line 1850 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1902 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[0].UInt64Val) == 32) CurModule.CurrentModule->setPointerSize(Module::Pointer32); @@ -4334,7 +4386,7 @@ break; case 195: -#line 1859 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1911 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CurModule.CurrentModule->setTargetTriple((yyvsp[0].StrVal)); free((yyvsp[0].StrVal)); @@ -4342,7 +4394,7 @@ break; case 196: -#line 1863 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1915 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CurModule.CurrentModule->setDataLayout((yyvsp[0].StrVal)); free((yyvsp[0].StrVal)); @@ -4350,7 +4402,7 @@ break; case 198: -#line 1870 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1922 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CurModule.CurrentModule->addLibrary((yyvsp[0].StrVal)); free((yyvsp[0].StrVal)); @@ -4359,7 +4411,7 @@ break; case 199: -#line 1875 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1927 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CurModule.CurrentModule->addLibrary((yyvsp[0].StrVal)); free((yyvsp[0].StrVal)); @@ -4368,19 +4420,19 @@ break; case 200: -#line 1880 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1932 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CHECK_FOR_ERROR ;} break; case 204: -#line 1890 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1942 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.StrVal) = 0; ;} break; case 205: -#line 1892 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1944 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription()); @@ -4394,7 +4446,7 @@ break; case 206: -#line 1902 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1954 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription()); @@ -4408,7 +4460,7 @@ break; case 207: -#line 1913 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1965 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ArgList) = (yyvsp[0].ArgList); CHECK_FOR_ERROR @@ -4416,7 +4468,7 @@ break; case 208: -#line 1917 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1969 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ArgList) = (yyvsp[-2].ArgList); struct ArgListEntry E; @@ -4429,7 +4481,7 @@ break; case 209: -#line 1926 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1978 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ArgList) = new ArgListType; struct ArgListEntry E; @@ -4442,7 +4494,7 @@ break; case 210: -#line 1935 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1987 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ArgList) = 0; CHECK_FOR_ERROR @@ -4450,18 +4502,25 @@ break; case 211: -#line 1941 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1993 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { UnEscapeLexed((yyvsp[-5].StrVal)); std::string FunctionName((yyvsp[-5].StrVal)); free((yyvsp[-5].StrVal)); // Free strdup'd memory! + // Check the function result for abstractness if this is a define. We should + // have no abstract types at this point + if (!CurFun.isDeclare && CurModule.TypeIsUnresolved((yyvsp[-6].TypeWithAttrs).Ty)) + GEN_ERROR("Reference to abstract result: "+ (yyvsp[-6].TypeWithAttrs).Ty->get()->getDescription()); + std::vector ParamTypeList; std::vector ParamAttrs; ParamAttrs.push_back((yyvsp[-6].TypeWithAttrs).Attrs); if ((yyvsp[-3].ArgList)) { // If there are arguments... for (ArgListType::iterator I = (yyvsp[-3].ArgList)->begin(); I != (yyvsp[-3].ArgList)->end(); ++I) { const Type* Ty = I->Ty->get(); + if (!CurFun.isDeclare && CurModule.TypeIsUnresolved(I->Ty)) + GEN_ERROR("Reference to abstract argument: " + Ty->getDescription()); ParamTypeList.push_back(Ty); if (Ty != Type::VoidTy) ParamAttrs.push_back(I->Attrs); @@ -4550,7 +4609,7 @@ break; case 214: -#line 2040 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2099 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.FunctionVal) = CurFun.CurrentFunction; @@ -4561,7 +4620,7 @@ break; case 217: -#line 2050 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2109 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.FunctionVal) = (yyvsp[-1].FunctionVal); CHECK_FOR_ERROR @@ -4569,7 +4628,7 @@ break; case 218: -#line 2055 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2114 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CurFun.CurrentFunction->setLinkage((yyvsp[-1].Linkage)); (yyval.FunctionVal) = CurFun.CurrentFunction; @@ -4579,7 +4638,7 @@ break; case 219: -#line 2066 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2125 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = false; CHECK_FOR_ERROR @@ -4587,7 +4646,7 @@ break; case 220: -#line 2070 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2129 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = true; CHECK_FOR_ERROR @@ -4595,7 +4654,7 @@ break; case 221: -#line 2075 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2134 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // A reference to a direct constant (yyval.ValIDVal) = ValID::create((yyvsp[0].SInt64Val)); CHECK_FOR_ERROR @@ -4603,7 +4662,7 @@ break; case 222: -#line 2079 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2138 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ValIDVal) = ValID::create((yyvsp[0].UInt64Val)); CHECK_FOR_ERROR @@ -4611,7 +4670,7 @@ break; case 223: -#line 2083 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2142 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Perhaps it's an FP constant? (yyval.ValIDVal) = ValID::create((yyvsp[0].FPVal)); CHECK_FOR_ERROR @@ -4619,7 +4678,7 @@ break; case 224: -#line 2087 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2146 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ValIDVal) = ValID::create(ConstantBool::getTrue()); CHECK_FOR_ERROR @@ -4627,7 +4686,7 @@ break; case 225: -#line 2091 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2150 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ValIDVal) = ValID::create(ConstantBool::getFalse()); CHECK_FOR_ERROR @@ -4635,7 +4694,7 @@ break; case 226: -#line 2095 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2154 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ValIDVal) = ValID::createNull(); CHECK_FOR_ERROR @@ -4643,7 +4702,7 @@ break; case 227: -#line 2099 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2158 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ValIDVal) = ValID::createUndef(); CHECK_FOR_ERROR @@ -4651,7 +4710,7 @@ break; case 228: -#line 2103 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2162 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // A vector zero constant. (yyval.ValIDVal) = ValID::createZeroInit(); CHECK_FOR_ERROR @@ -4659,7 +4718,7 @@ break; case 229: -#line 2107 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2166 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Nonempty unsized packed vector const Type *ETy = (*(yyvsp[-1].ConstVector))[0]->getType(); int NumElements = (yyvsp[-1].ConstVector)->size(); @@ -4688,7 +4747,7 @@ break; case 230: -#line 2132 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2191 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ValIDVal) = ValID::create((yyvsp[0].ConstVal)); CHECK_FOR_ERROR @@ -4696,7 +4755,7 @@ break; case 231: -#line 2136 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2195 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { char *End = UnEscapeLexed((yyvsp[-2].StrVal), true); std::string AsmStr = std::string((yyvsp[-2].StrVal), End); @@ -4710,7 +4769,7 @@ break; case 232: -#line 2150 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2209 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Is it an integer reference...? (yyval.ValIDVal) = ValID::create((yyvsp[0].SIntVal)); CHECK_FOR_ERROR @@ -4718,7 +4777,7 @@ break; case 233: -#line 2154 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2213 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Is it a named reference...? (yyval.ValIDVal) = ValID::create((yyvsp[0].StrVal)); CHECK_FOR_ERROR @@ -4726,7 +4785,7 @@ break; case 236: -#line 2166 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2225 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); @@ -4737,7 +4796,7 @@ break; case 237: -#line 2175 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2234 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.FunctionVal) = (yyvsp[-1].FunctionVal); CHECK_FOR_ERROR @@ -4745,7 +4804,7 @@ break; case 238: -#line 2179 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2238 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Do not allow functions with 0 basic blocks (yyval.FunctionVal) = (yyvsp[-1].FunctionVal); CHECK_FOR_ERROR @@ -4753,7 +4812,7 @@ break; case 239: -#line 2188 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2247 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { setValueName((yyvsp[0].TermInstVal), (yyvsp[-1].StrVal)); CHECK_FOR_ERROR @@ -4767,7 +4826,7 @@ break; case 240: -#line 2199 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2258 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (CastInst *CI1 = dyn_cast((yyvsp[0].InstVal))) if (CastInst *CI2 = dyn_cast(CI1->getOperand(0))) @@ -4780,7 +4839,7 @@ break; case 241: -#line 2208 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2267 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.BasicBlockVal) = getBBVal(ValID::create((int)CurFun.NextBBNum++), true); CHECK_FOR_ERROR @@ -4796,7 +4855,7 @@ break; case 242: -#line 2220 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2279 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.BasicBlockVal) = getBBVal(ValID::create((yyvsp[0].StrVal)), true); CHECK_FOR_ERROR @@ -4812,7 +4871,7 @@ break; case 243: -#line 2233 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2292 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Return with a result... (yyval.TermInstVal) = new ReturnInst((yyvsp[0].ValueVal)); CHECK_FOR_ERROR @@ -4820,7 +4879,7 @@ break; case 244: -#line 2237 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2296 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Return with no result... (yyval.TermInstVal) = new ReturnInst(); CHECK_FOR_ERROR @@ -4828,7 +4887,7 @@ break; case 245: -#line 2241 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2300 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Unconditional Branch... BasicBlock* tmpBB = getBBVal((yyvsp[0].ValIDVal)); CHECK_FOR_ERROR @@ -4837,7 +4896,7 @@ break; case 246: -#line 2246 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2305 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { BasicBlock* tmpBBA = getBBVal((yyvsp[-3].ValIDVal)); CHECK_FOR_ERROR @@ -4850,7 +4909,7 @@ break; case 247: -#line 2255 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2314 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { Value* tmpVal = getVal((yyvsp[-7].PrimType), (yyvsp[-6].ValIDVal)); CHECK_FOR_ERROR @@ -4873,7 +4932,7 @@ break; case 248: -#line 2274 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2333 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { Value* tmpVal = getVal((yyvsp[-6].PrimType), (yyvsp[-5].ValIDVal)); CHECK_FOR_ERROR @@ -4886,7 +4945,7 @@ break; case 249: -#line 2284 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2343 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Handle the short syntax @@ -4956,7 +5015,7 @@ break; case 250: -#line 2350 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2409 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.TermInstVal) = new UnwindInst(); CHECK_FOR_ERROR @@ -4964,7 +5023,7 @@ break; case 251: -#line 2354 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2413 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.TermInstVal) = new UnreachableInst(); CHECK_FOR_ERROR @@ -4972,7 +5031,7 @@ break; case 252: -#line 2361 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2420 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.JumpTable) = (yyvsp[-5].JumpTable); Constant *V = cast(getValNonImprovising((yyvsp[-4].PrimType), (yyvsp[-3].ValIDVal))); @@ -4987,7 +5046,7 @@ break; case 253: -#line 2372 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2431 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.JumpTable) = new std::vector >(); Constant *V = cast(getValNonImprovising((yyvsp[-4].PrimType), (yyvsp[-3].ValIDVal))); @@ -5003,7 +5062,7 @@ break; case 254: -#line 2385 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2444 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Is this definition named?? if so, assign the name... setValueName((yyvsp[0].InstVal), (yyvsp[-1].StrVal)); @@ -5015,7 +5074,7 @@ break; case 255: -#line 2394 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2453 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Used for PHI nodes if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-5].TypeVal))->getDescription()); @@ -5030,7 +5089,7 @@ break; case 256: -#line 2405 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2464 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.PHIList) = (yyvsp[-6].PHIList); Value* tmpVal = getVal((yyvsp[-6].PHIList)->front().first->getType(), (yyvsp[-3].ValIDVal)); @@ -5042,7 +5101,7 @@ break; case 257: -#line 2415 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2474 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription()); @@ -5054,7 +5113,7 @@ break; case 258: -#line 2423 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2482 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription()); @@ -5066,17 +5125,17 @@ break; case 259: -#line 2431 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2490 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ValueRefList) = new ValueRefList(); ;} break; case 260: -#line 2434 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2493 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ValueList) = new std::vector(); ;} break; case 261: -#line 2435 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2494 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ValueList) = (yyvsp[-2].ValueList); (yyval.ValueList)->push_back((yyvsp[0].ValueVal)); @@ -5085,7 +5144,7 @@ break; case 262: -#line 2442 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2501 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = true; CHECK_FOR_ERROR @@ -5093,7 +5152,7 @@ break; case 263: -#line 2446 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2505 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = false; CHECK_FOR_ERROR @@ -5101,7 +5160,7 @@ break; case 264: -#line 2451 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2510 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription()); @@ -5126,7 +5185,7 @@ break; case 265: -#line 2472 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2531 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription()); @@ -5147,7 +5206,7 @@ break; case 266: -#line 2489 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2548 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription()); @@ -5164,7 +5223,7 @@ break; case 267: -#line 2502 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2561 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription()); @@ -5181,7 +5240,7 @@ break; case 268: -#line 2515 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2574 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { cerr << "WARNING: Use of eliminated 'not' instruction:" << " Replacing with 'xor'.\n"; @@ -5198,7 +5257,7 @@ break; case 269: -#line 2528 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2587 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[0].ValueVal)->getType() != Type::Int8Ty) GEN_ERROR("Shift amount must be i8 type!"); @@ -5211,7 +5270,7 @@ break; case 270: -#line 2537 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2596 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription()); @@ -5228,7 +5287,7 @@ break; case 271: -#line 2550 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2609 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[-4].ValueVal)->getType() != Type::BoolTy) GEN_ERROR("select condition must be boolean!"); @@ -5240,7 +5299,7 @@ break; case 272: -#line 2558 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2617 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription()); @@ -5251,7 +5310,7 @@ break; case 273: -#line 2565 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2624 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!ExtractElementInst::isValidOperands((yyvsp[-2].ValueVal), (yyvsp[0].ValueVal))) GEN_ERROR("Invalid extractelement operands!"); @@ -5261,7 +5320,7 @@ break; case 274: -#line 2571 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2630 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!InsertElementInst::isValidOperands((yyvsp[-4].ValueVal), (yyvsp[-2].ValueVal), (yyvsp[0].ValueVal))) GEN_ERROR("Invalid insertelement operands!"); @@ -5271,7 +5330,7 @@ break; case 275: -#line 2577 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2636 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!ShuffleVectorInst::isValidOperands((yyvsp[-4].ValueVal), (yyvsp[-2].ValueVal), (yyvsp[0].ValueVal))) GEN_ERROR("Invalid shufflevector operands!"); @@ -5281,7 +5340,7 @@ break; case 276: -#line 2583 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2642 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { const Type *Ty = (yyvsp[0].PHIList)->front().first->getType(); if (!Ty->isFirstClassType()) @@ -5300,7 +5359,7 @@ break; case 277: -#line 2598 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2657 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Handle the short syntax @@ -5366,7 +5425,7 @@ break; case 278: -#line 2660 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2719 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.InstVal) = (yyvsp[0].InstVal); CHECK_FOR_ERROR @@ -5374,7 +5433,7 @@ break; case 279: -#line 2665 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2724 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = true; CHECK_FOR_ERROR @@ -5382,7 +5441,7 @@ break; case 280: -#line 2669 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2728 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = false; CHECK_FOR_ERROR @@ -5390,7 +5449,7 @@ break; case 281: -#line 2676 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2735 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); @@ -5401,7 +5460,7 @@ break; case 282: -#line 2683 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2742 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-4].TypeVal))->getDescription()); @@ -5413,7 +5472,7 @@ break; case 283: -#line 2691 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2750 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); @@ -5424,7 +5483,7 @@ break; case 284: -#line 2698 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2757 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-4].TypeVal))->getDescription()); @@ -5436,7 +5495,7 @@ break; case 285: -#line 2706 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2765 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!isa((yyvsp[0].ValueVal)->getType())) GEN_ERROR("Trying to free nonpointer type " + @@ -5447,7 +5506,7 @@ break; case 286: -#line 2714 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2773 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); @@ -5465,7 +5524,7 @@ break; case 287: -#line 2728 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2787 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); @@ -5486,7 +5545,7 @@ break; case 288: -#line 2745 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2804 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription()); @@ -5509,7 +5568,7 @@ } /* Line 1126 of yacc.c. */ -#line 5513 "llvmAsmParser.tab.c" +#line 5572 "llvmAsmParser.tab.c" yyvsp -= yylen; yyssp -= yylen; @@ -5777,7 +5836,7 @@ } -#line 2762 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2821 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" // common code from the two 'RunVMAsmParser' functions Index: llvm/lib/AsmParser/llvmAsmParser.h.cvs diff -u llvm/lib/AsmParser/llvmAsmParser.h.cvs:1.33 llvm/lib/AsmParser/llvmAsmParser.h.cvs:1.34 --- llvm/lib/AsmParser/llvmAsmParser.h.cvs:1.33 Sat Dec 30 23:40:51 2006 +++ llvm/lib/AsmParser/llvmAsmParser.h.cvs Tue Jan 2 15:54:12 2007 @@ -301,7 +301,7 @@ #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) -#line 843 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 895 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" typedef union YYSTYPE { llvm::Module *ModuleVal; llvm::Function *FunctionVal; Index: llvm/lib/AsmParser/llvmAsmParser.y.cvs diff -u llvm/lib/AsmParser/llvmAsmParser.y.cvs:1.42 llvm/lib/AsmParser/llvmAsmParser.y.cvs:1.43 --- llvm/lib/AsmParser/llvmAsmParser.y.cvs:1.42 Sun Dec 31 15:47:02 2006 +++ llvm/lib/AsmParser/llvmAsmParser.y.cvs Tue Jan 2 15:54:12 2007 @@ -149,6 +149,58 @@ } return Ret; } + + bool TypeIsUnresolved(PATypeHolder* PATy) { + // If it isn't abstract, its resolved + const Type* Ty = PATy->get(); + if (!Ty->isAbstract()) + return false; + // Traverse the type looking for abstract types. If it isn't abstract then + // we don't need to traverse that leg of the type. + std::vector WorkList, SeenList; + WorkList.push_back(Ty); + while (!WorkList.empty()) { + const Type* Ty = WorkList.back(); + SeenList.push_back(Ty); + WorkList.pop_back(); + if (const OpaqueType* OpTy = dyn_cast(Ty)) { + // Check to see if this is an unresolved type + std::map::iterator I = LateResolveTypes.begin(); + std::map::iterator E = LateResolveTypes.end(); + for ( ; I != E; ++I) { + if (I->second.get() == OpTy) + return true; + } + } else if (const SequentialType* SeqTy = dyn_cast(Ty)) { + const Type* TheTy = SeqTy->getElementType(); + if (TheTy->isAbstract() && TheTy != Ty) { + std::vector::iterator I = SeenList.begin(), + E = SeenList.end(); + for ( ; I != E; ++I) + if (*I == TheTy) + break; + if (I == E) + WorkList.push_back(TheTy); + } + } else if (const StructType* StrTy = dyn_cast(Ty)) { + for (unsigned i = 0; i < StrTy->getNumElements(); ++i) { + const Type* TheTy = StrTy->getElementType(i); + if (TheTy->isAbstract() && TheTy != Ty) { + std::vector::iterator I = SeenList.begin(), + E = SeenList.end(); + for ( ; I != E; ++I) + if (*I == TheTy) + break; + if (I == E) + WorkList.push_back(TheTy); + } + } + } + } + return false; + } + + } CurModule; static struct PerFunctionInfo { @@ -1943,12 +1995,19 @@ std::string FunctionName($3); free($3); // Free strdup'd memory! + // Check the function result for abstractness if this is a define. We should + // have no abstract types at this point + if (!CurFun.isDeclare && CurModule.TypeIsUnresolved($2.Ty)) + GEN_ERROR("Reference to abstract result: "+ $2.Ty->get()->getDescription()); + std::vector ParamTypeList; std::vector ParamAttrs; ParamAttrs.push_back($2.Attrs); if ($5) { // If there are arguments... for (ArgListType::iterator I = $5->begin(); I != $5->end(); ++I) { const Type* Ty = I->Ty->get(); + if (!CurFun.isDeclare && CurModule.TypeIsUnresolved(I->Ty)) + GEN_ERROR("Reference to abstract argument: " + Ty->getDescription()); ParamTypeList.push_back(Ty); if (Ty != Type::VoidTy) ParamAttrs.push_back(I->Attrs); From reid at x10sys.com Tue Jan 2 15:56:42 2007 From: reid at x10sys.com (Reid Spencer) Date: Tue, 2 Jan 2007 15:56:42 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/CodeGen/Alpha/2005-07-12-TwoMallocCalls.ll Message-ID: <200701022156.l02LugXs032685@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/CodeGen/Alpha: 2005-07-12-TwoMallocCalls.ll updated: 1.5 -> 1.6 --- Log message: This test case previously passed the assembler without error even though it used an undefined type name as a parameter argument. This bug in the assembler has been fixed and it is now necessary to define the type. --- Diffs of the changes: (+2 -0) 2005-07-12-TwoMallocCalls.ll | 2 ++ 1 files changed, 2 insertions(+) Index: llvm/test/Regression/CodeGen/Alpha/2005-07-12-TwoMallocCalls.ll diff -u llvm/test/Regression/CodeGen/Alpha/2005-07-12-TwoMallocCalls.ll:1.5 llvm/test/Regression/CodeGen/Alpha/2005-07-12-TwoMallocCalls.ll:1.6 --- llvm/test/Regression/CodeGen/Alpha/2005-07-12-TwoMallocCalls.ll:1.5 Mon Jan 1 22:30:40 2007 +++ llvm/test/Regression/CodeGen/Alpha/2005-07-12-TwoMallocCalls.ll Tue Jan 2 15:56:26 2007 @@ -1,6 +1,8 @@ ; There should be exactly two calls here (memset and malloc), no more. ; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha | grep jsr | wc -l | grep 2 +%typedef.bc_struct = type opaque + implementation ; Functions: declare void %llvm.memset.i64(sbyte*, ubyte, ulong, uint) From jlaskey at apple.com Tue Jan 2 18:11:18 2007 From: jlaskey at apple.com (Jim Laskey) Date: Tue, 2 Jan 2007 18:11:18 -0600 Subject: [llvm-commits] CVS: llvm/lib/Transforms/Scalar/SCCP.cpp Message-ID: <200701030011.l030BI4C002531@zion.cs.uiuc.edu> Changes in directory llvm/lib/Transforms/Scalar: SCCP.cpp updated: 1.145 -> 1.146 --- Log message: Vectors are not supported by ConstantInt::getAllOnesValue. --- Diffs of the changes: (+10 -5) SCCP.cpp | 15 ++++++++++----- 1 files changed, 10 insertions(+), 5 deletions(-) Index: llvm/lib/Transforms/Scalar/SCCP.cpp diff -u llvm/lib/Transforms/Scalar/SCCP.cpp:1.145 llvm/lib/Transforms/Scalar/SCCP.cpp:1.146 --- llvm/lib/Transforms/Scalar/SCCP.cpp:1.145 Sun Dec 31 16:26:06 2006 +++ llvm/lib/Transforms/Scalar/SCCP.cpp Tue Jan 2 18:11:03 2007 @@ -88,6 +88,7 @@ if (LatticeValue != constant) { if (LatticeValue == undefined) { LatticeValue = constant; + assert(V && "Marking constant with NULL"); ConstantVal = V; } else { assert(LatticeValue == forcedconstant && @@ -699,14 +700,15 @@ // Could annihilate value. if (I.getOpcode() == Instruction::And) markConstant(IV, &I, Constant::getNullValue(I.getType())); - else - markConstant(IV, &I, ConstantInt::getAllOnesValue(I.getType())); + else if (Constant *Ones = ConstantInt::getAllOnesValue(I.getType())) { + markConstant(IV, &I, Ones); + } return; } else { if (I.getOpcode() == Instruction::And) { if (NonOverdefVal->getConstant()->isNullValue()) { markConstant(IV, &I, NonOverdefVal->getConstant()); - return; // X or 0 = -1 + return; // X and 0 = 0 } } else { if (ConstantIntegral *CI = @@ -1231,8 +1233,11 @@ case Instruction::Or: // undef | X -> -1. X could be -1. - markForcedConstant(LV, I, ConstantInt::getAllOnesValue(ITy)); - return true; + if (Constant *Ones = ConstantInt::getAllOnesValue(ITy)) { + markForcedConstant(LV, I, Ones); + return true; + } + break; case Instruction::SDiv: case Instruction::UDiv: From reid at x10sys.com Tue Jan 2 22:20:38 2007 From: reid at x10sys.com (Reid Spencer) Date: Tue, 2 Jan 2007 22:20:38 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/CodeGen/Alpha/add.ll i32_sub_1.ll Message-ID: <200701030420.l034KcCG006416@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/CodeGen/Alpha: add.ll updated: 1.3 -> 1.4 i32_sub_1.ll updated: 1.2 -> 1.3 --- Log message: Fix this test cases to use parameter attributes for its parameter and result types. These tests are checking for sext behavior and it won't happen unless requested with the parameter attribute. --- Diffs of the changes: (+111 -114) add.ll | 217 +++++++++++++++++++++++++++++------------------------------ i32_sub_1.ll | 8 +- 2 files changed, 111 insertions(+), 114 deletions(-) Index: llvm/test/Regression/CodeGen/Alpha/add.ll diff -u llvm/test/Regression/CodeGen/Alpha/add.ll:1.3 llvm/test/Regression/CodeGen/Alpha/add.ll:1.4 --- llvm/test/Regression/CodeGen/Alpha/add.ll:1.3 Fri Dec 1 22:23:08 2006 +++ llvm/test/Regression/CodeGen/Alpha/add.ll Tue Jan 2 22:20:23 2007 @@ -1,183 +1,180 @@ ;test all the shifted and signextending adds and subs with and without consts - -; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha | grep ' addl' |wc -l |grep 2 && -; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha | grep ' addq' |wc -l |grep 2 && -; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha | grep ' subl' |wc -l |grep 2 && -; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha | grep ' subq' |wc -l |grep 1 && -; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha | grep 'lda $0,-100($16)' |wc -l |grep 1 && - -; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha | grep 's4addl' |wc -l |grep 2 && -; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha | grep 's8addl' |wc -l |grep 2 && -; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha | grep 's4addq' |wc -l |grep 2 && -; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha | grep 's8addq' |wc -l |grep 2 && - -; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha | grep 's4subl' |wc -l |grep 2 && -; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha | grep 's8subl' |wc -l |grep 2 && -; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha | grep 's4subq' |wc -l |grep 2 && -; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha | grep 's8subq' |wc -l |grep 2 +; +; RUN: llvm-as < %s | llc -march=alpha -o %t.s -f && +; RUN: grep ' addl' %t.s | wc -l | grep 2 && +; RUN: grep ' addq' %t.s | wc -l | grep 2 && +; RUN: grep ' subl' %t.s | wc -l | grep 2 && +; RUN: grep ' subq' %t.s | wc -l | grep 1 && +; +; RUN: grep 'lda $0,-100($16)' %t.s | wc -l | grep 1 && +; RUN: grep 's4addl' %t.s | wc -l | grep 2 && +; RUN: grep 's8addl' %t.s | wc -l | grep 2 && +; RUN: grep 's4addq' %t.s | wc -l | grep 2 && +; RUN: grep 's8addq' %t.s | wc -l | grep 2 && +; +; RUN: grep 's4subl' %t.s | wc -l | grep 2 && +; RUN: grep 's8subl' %t.s | wc -l | grep 2 && +; RUN: grep 's4subq' %t.s | wc -l | grep 2 && +; RUN: grep 's8subq' %t.s | wc -l | grep 2 implementation ; Functions: -int %al(int %x, int %y) { +define i32 @sext %al(i32 @sext %x.s, i32 @sext %y.s) { entry: - %tmp.3 = add int %y, %x - ret int %tmp.3 + %tmp.3.s = add i32 %y.s, %x.s ; [#uses=1] + ret i32 %tmp.3.s } -int %ali(int %x) { +define i32 @sext %ali(i32 @sext %x.s) { entry: - %tmp.3 = add int 100, %x - ret int %tmp.3 + %tmp.3.s = add i32 100, %x.s ; [#uses=1] + ret i32 %tmp.3.s } -long %aq(long %x, long %y) { +define i64 @sext %aq(i64 @sext %x.s, i64 @sext %y.s) { entry: - %tmp.3 = add long %y, %x - ret long %tmp.3 + %tmp.3.s = add i64 %y.s, %x.s ; [#uses=1] + ret i64 %tmp.3.s } -long %aqi(long %x) { + +define i64 %aqi(i64 %x.s) { entry: - %tmp.3 = add long 100, %x - ret long %tmp.3 + %tmp.3.s = add i64 100, %x.s ; [#uses=1] + ret i64 %tmp.3.s } -int %sl(int %x, int %y) { +define i32 @sext %sl(i32 @sext %x.s, i32 @sext %y.s) { entry: - %tmp.3 = sub int %y, %x - ret int %tmp.3 + %tmp.3.s = sub i32 %y.s, %x.s ; [#uses=1] + ret i32 %tmp.3.s } -int %sli(int %x) { +define i32 @sext %sli(i32 @sext %x.s) { entry: - %tmp.3 = sub int %x, 100 - ret int %tmp.3 + %tmp.3.s = sub i32 %x.s, 100 ; [#uses=1] + ret i32 %tmp.3.s } -long %sq(long %x, long %y) { +define i64 %sq(i64 %x.s, i64 %y.s) { entry: - %tmp.3 = sub long %y, %x - ret long %tmp.3 + %tmp.3.s = sub i64 %y.s, %x.s ; [#uses=1] + ret i64 %tmp.3.s } -long %sqi(long %x) { + +define i64 %sqi(i64 %x.s) { entry: - %tmp.3 = sub long %x, 100 - ret long %tmp.3 + %tmp.3.s = sub i64 %x.s, 100 ; [#uses=1] + ret i64 %tmp.3.s } - - -int %a4l(int %x, int %y) { +define i32 @sext %a4l(i32 @sext %x.s, i32 @sext %y.s) { entry: - %tmp.1 = shl int %y, ubyte 2 - %tmp.3 = add int %tmp.1, %x - ret int %tmp.3 + %tmp.1.s = shl i32 %y.s, i8 2 ; [#uses=1] + %tmp.3.s = add i32 %tmp.1.s, %x.s ; [#uses=1] + ret i32 %tmp.3.s } -int %a8l(int %x, int %y) { +define i32 @sext %a8l(i32 @sext %x.s, i32 @sext %y.s) { entry: - %tmp.1 = shl int %y, ubyte 3 - %tmp.3 = add int %tmp.1, %x - ret int %tmp.3 + %tmp.1.s = shl i32 %y.s, i8 3 ; [#uses=1] + %tmp.3.s = add i32 %tmp.1.s, %x.s ; [#uses=1] + ret i32 %tmp.3.s } -long %a4q(long %x, long %y) { +define i64 %a4q(i64 %x.s, i64 %y.s) { entry: - %tmp.1 = shl long %y, ubyte 2 - %tmp.3 = add long %tmp.1, %x - ret long %tmp.3 + %tmp.1.s = shl i64 %y.s, i8 2 ; [#uses=1] + %tmp.3.s = add i64 %tmp.1.s, %x.s ; [#uses=1] + ret i64 %tmp.3.s } -long %a8q(long %x, long %y) { +define i64 %a8q(i64 %x.s, i64 %y.s) { entry: - %tmp.1 = shl long %y, ubyte 3 - %tmp.3 = add long %tmp.1, %x - ret long %tmp.3 + %tmp.1.s = shl i64 %y.s, i8 3 ; [#uses=1] + %tmp.3.s = add i64 %tmp.1.s, %x.s ; [#uses=1] + ret i64 %tmp.3.s } -int %a4li(int %y) { +define i32 @sext %a4li(i32 @sext %y.s) { entry: - %tmp.1 = shl int %y, ubyte 2 - %tmp.3 = add int 100, %tmp.1 - ret int %tmp.3 + %tmp.1.s = shl i32 %y.s, i8 2 ; [#uses=1] + %tmp.3.s = add i32 100, %tmp.1.s ; [#uses=1] + ret i32 %tmp.3.s } -int %a8li(int %y) { +define i32 @sext %a8li(i32 @sext %y.s) { entry: - %tmp.1 = shl int %y, ubyte 3 - %tmp.3 = add int 100, %tmp.1 - ret int %tmp.3 + %tmp.1.s = shl i32 %y.s, i8 3 ; [#uses=1] + %tmp.3.s = add i32 100, %tmp.1.s ; [#uses=1] + ret i32 %tmp.3.s } -long %a4qi(long %y) { +define i64 %a4qi(i64 %y.s) { entry: - %tmp.1 = shl long %y, ubyte 2 - %tmp.3 = add long 100, %tmp.1 - ret long %tmp.3 + %tmp.1.s = shl i64 %y.s, i8 2 ; [#uses=1] + %tmp.3.s = add i64 100, %tmp.1.s ; [#uses=1] + ret i64 %tmp.3.s } -long %a8qi(long %y) { +define i64 %a8qi(i64 %y.s) { entry: - %tmp.1 = shl long %y, ubyte 3 - %tmp.3 = add long 100, %tmp.1 - ret long %tmp.3 + %tmp.1.s = shl i64 %y.s, i8 3 ; [#uses=1] + %tmp.3.s = add i64 100, %tmp.1.s ; [#uses=1] + ret i64 %tmp.3.s } - - - -int %s4l(int %x, int %y) { +define i32 @sext %s4l(i32 @sext %x.s, i32 @sext %y.s) { entry: - %tmp.1 = shl int %y, ubyte 2 - %tmp.3 = sub int %tmp.1, %x - ret int %tmp.3 + %tmp.1.s = shl i32 %y.s, i8 2 ; [#uses=1] + %tmp.3.s = sub i32 %tmp.1.s, %x.s ; [#uses=1] + ret i32 %tmp.3.s } -int %s8l(int %x, int %y) { +define i32 @sext %s8l(i32 @sext %x.s, i32 @sext %y.s) { entry: - %tmp.1 = shl int %y, ubyte 3 - %tmp.3 = sub int %tmp.1, %x - ret int %tmp.3 + %tmp.1.s = shl i32 %y.s, i8 3 ; [#uses=1] + %tmp.3.s = sub i32 %tmp.1.s, %x.s ; [#uses=1] + ret i32 %tmp.3.s } -long %s4q(long %x, long %y) { +define i64 %s4q(i64 %x.s, i64 %y.s) { entry: - %tmp.1 = shl long %y, ubyte 2 - %tmp.3 = sub long %tmp.1, %x - ret long %tmp.3 + %tmp.1.s = shl i64 %y.s, i8 2 ; [#uses=1] + %tmp.3.s = sub i64 %tmp.1.s, %x.s ; [#uses=1] + ret i64 %tmp.3.s } -long %s8q(long %x, long %y) { +define i64 %s8q(i64 %x.s, i64 %y.s) { entry: - %tmp.1 = shl long %y, ubyte 3 - %tmp.3 = sub long %tmp.1, %x - ret long %tmp.3 + %tmp.1.s = shl i64 %y.s, i8 3 ; [#uses=1] + %tmp.3.s = sub i64 %tmp.1.s, %x.s ; [#uses=1] + ret i64 %tmp.3.s } -int %s4li(int %y) { +define i32 @sext %s4li(i32 @sext %y.s) { entry: - %tmp.1 = shl int %y, ubyte 2 - %tmp.3 = sub int %tmp.1, 100 - ret int %tmp.3 + %tmp.1.s = shl i32 %y.s, i8 2 ; [#uses=1] + %tmp.3.s = sub i32 %tmp.1.s, 100 ; [#uses=1] + ret i32 %tmp.3.s } -int %s8li(int %y) { +define i32 @sext %s8li(i32 @sext %y.s) { entry: - %tmp.1 = shl int %y, ubyte 3 - %tmp.3 = sub int %tmp.1, 100 - ret int %tmp.3 + %tmp.1.s = shl i32 %y.s, i8 3 ; [#uses=1] + %tmp.3.s = sub i32 %tmp.1.s, 100 ; [#uses=1] + ret i32 %tmp.3.s } -long %s4qi(long %y) { +define i64 %s4qi(i64 %y.s) { entry: - %tmp.1 = shl long %y, ubyte 2 - %tmp.3 = sub long %tmp.1, 100 - ret long %tmp.3 + %tmp.1.s = shl i64 %y.s, i8 2 ; [#uses=1] + %tmp.3.s = sub i64 %tmp.1.s, 100 ; [#uses=1] + ret i64 %tmp.3.s } -long %s8qi(long %y) { +define i64 %s8qi(i64 %y.s) { entry: - %tmp.1 = shl long %y, ubyte 3 - %tmp.3 = sub long %tmp.1, 100 - ret long %tmp.3 + %tmp.1.s = shl i64 %y.s, i8 3 ; [#uses=1] + %tmp.3.s = sub i64 %tmp.1.s, 100 ; [#uses=1] + ret i64 %tmp.3.s } - Index: llvm/test/Regression/CodeGen/Alpha/i32_sub_1.ll diff -u llvm/test/Regression/CodeGen/Alpha/i32_sub_1.ll:1.2 llvm/test/Regression/CodeGen/Alpha/i32_sub_1.ll:1.3 --- llvm/test/Regression/CodeGen/Alpha/i32_sub_1.ll:1.2 Fri Dec 1 22:23:08 2006 +++ llvm/test/Regression/CodeGen/Alpha/i32_sub_1.ll Tue Jan 2 22:20:23 2007 @@ -1,10 +1,10 @@ ; Make sure this testcase codegens to the ctpop instruction -; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha | grep -i 'subl $16,1,$0' +; RUN: llvm-as < %s | llc -march=alpha | grep -i 'subl $16,1,$0' implementation ; Functions: -int %foo(int %x) { +define i32 @sext %foo(i32 @sext %x) { entry: - %tmp.1 = add int %x, -1 ; [#uses=1] - ret int %tmp.1 + %tmp.1 = add i32 %x, -1 ; [#uses=1] + ret i32 %tmp.1 } From reid at x10sys.com Tue Jan 2 22:22:47 2007 From: reid at x10sys.com (Reid Spencer) Date: Tue, 2 Jan 2007 22:22:47 -0600 Subject: [llvm-commits] CVS: llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp Message-ID: <200701030422.l034Mlkc006458@zion.cs.uiuc.edu> Changes in directory llvm/lib/CodeGen/SelectionDAG: LegalizeDAG.cpp updated: 1.450 -> 1.451 --- Log message: Clean up from recent changes. Comment the new parameter to ExpandLibCall. Consolidate some lines of code and remove duplication. --- Diffs of the changes: (+20 -24) LegalizeDAG.cpp | 44 ++++++++++++++++++++------------------------ 1 files changed, 20 insertions(+), 24 deletions(-) Index: llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp diff -u llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp:1.450 llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp:1.451 --- llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp:1.450 Sat Dec 30 23:55:36 2006 +++ llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp Tue Jan 2 22:22:32 2007 @@ -2127,9 +2127,7 @@ const char *FnName = 0; if (Node->getOpcode() == ISD::MEMSET) { - Entry.Node = Tmp2; - Entry.Ty = IntPtrTy; - Entry.isSigned = false; + Entry.Node = Tmp2; Entry.isSigned = false; Entry.Ty = IntPtrTy; Args.push_back(Entry); // Extend the (previously legalized) ubyte argument to be an int value // for the call. @@ -2145,12 +2143,10 @@ FnName = "memset"; } else if (Node->getOpcode() == ISD::MEMCPY || Node->getOpcode() == ISD::MEMMOVE) { - Entry.Node = Tmp2; Entry.Ty = IntPtrTy; Entry.isSigned = false; - Args.push_back(Entry); - Entry.Node = Tmp3; Entry.Ty = IntPtrTy; Entry.isSigned = false; - Args.push_back(Entry); - Entry.Node = Tmp4; Entry.Ty = IntPtrTy; Entry.isSigned = false; - Args.push_back(Entry); + Entry.Ty = IntPtrTy; Entry.isSigned = false; + Entry.Node = Tmp2; Args.push_back(Entry); + Entry.Node = Tmp3; Args.push_back(Entry); + Entry.Node = Tmp4; Args.push_back(Entry); FnName = Node->getOpcode() == ISD::MEMMOVE ? "memmove" : "memcpy"; } else { assert(0 && "Unknown op!"); @@ -2356,7 +2352,7 @@ DAG.getNode(ISD::FP_EXTEND, MVT::f64, Tmp2)); } SDOperand Dummy; - Result = ExpandLibCall(FnName, Node, false, Dummy); + Result = ExpandLibCall(FnName, Node, false/*sign irrelevant*/, Dummy); break; } break; @@ -2450,7 +2446,7 @@ // Floating point mod -> fmod libcall. const char *FnName = Node->getValueType(0) == MVT::f32 ? "fmodf":"fmod"; SDOperand Dummy; - Result = ExpandLibCall(FnName, Node, false, Dummy); + Result = ExpandLibCall(FnName, Node, false/*sign irrelevant*/, Dummy); } break; } @@ -2699,7 +2695,7 @@ default: assert(0 && "Unreachable!"); } SDOperand Dummy; - Result = ExpandLibCall(FnName, Node, false, Dummy); + Result = ExpandLibCall(FnName, Node, false/*sign irrelevant*/, Dummy); break; } } @@ -2711,7 +2707,7 @@ const char *FnName = Node->getValueType(0) == MVT::f32 ? "__powisf2" : "__powidf2"; SDOperand Dummy; - Result = ExpandLibCall(FnName, Node, false, Dummy); + Result = ExpandLibCall(FnName, Node, false/*sign irrelevant*/, Dummy); break; } case ISD::BIT_CONVERT: @@ -2897,7 +2893,7 @@ default: assert(0 && "Unreachable!"); } SDOperand Dummy; - Result = ExpandLibCall(FnName, Node, false, Dummy); + Result = ExpandLibCall(FnName, Node, false/*sign irrelevant*/, Dummy); break; } case Promote: @@ -3621,14 +3617,14 @@ SDOperand Dummy; Tmp1 = ExpandLibCall(FnName1, DAG.getNode(ISD::MERGE_VALUES, VT, LHS, RHS).Val, - false, Dummy); + false /*sign irrelevant*/, Dummy); Tmp2 = DAG.getConstant(0, MVT::i32); CC = DAG.getCondCode(CC1); if (FnName2) { Tmp1 = DAG.getNode(ISD::SETCC, TLI.getSetCCResultTy(), Tmp1, Tmp2, CC); LHS = ExpandLibCall(FnName2, DAG.getNode(ISD::MERGE_VALUES, VT, LHS, RHS).Val, - false, Dummy); + false /*sign irrelevant*/, Dummy); Tmp2 = DAG.getNode(ISD::SETCC, TLI.getSetCCResultTy(), LHS, Tmp2, DAG.getCondCode(CC2)); Tmp1 = DAG.getNode(ISD::OR, Tmp1.getValueType(), Tmp1, Tmp2); @@ -4836,9 +4832,9 @@ } if (Node->getOperand(0).getValueType() == MVT::f32) - Lo = ExpandLibCall("__fixsfdi", Node, false, Hi); + Lo = ExpandLibCall("__fixsfdi", Node, false/*sign irrelevant*/, Hi); else - Lo = ExpandLibCall("__fixdfdi", Node, false, Hi); + Lo = ExpandLibCall("__fixdfdi", Node, false/*sign irrelevant*/, Hi); break; case ISD::FP_TO_UINT: @@ -4860,9 +4856,9 @@ } if (Node->getOperand(0).getValueType() == MVT::f32) - Lo = ExpandLibCall("__fixunssfdi", Node, false, Hi); + Lo = ExpandLibCall("__fixunssfdi", Node, false/*sign irrelevant*/, Hi); else - Lo = ExpandLibCall("__fixunsdfdi", Node, false, Hi); + Lo = ExpandLibCall("__fixunsdfdi", Node, false/*sign irrelevant*/, Hi); break; case ISD::SHL: { @@ -4911,7 +4907,7 @@ } // Otherwise, emit a libcall. - Lo = ExpandLibCall("__ashldi3", Node, false, Hi); + Lo = ExpandLibCall("__ashldi3", Node, false/*left shift=unsigned*/, Hi); break; } @@ -4943,7 +4939,7 @@ } // Otherwise, emit a libcall. - Lo = ExpandLibCall("__ashrdi3", Node, true, Hi); + Lo = ExpandLibCall("__ashrdi3", Node, true/*ashr is signed*/, Hi); break; } @@ -4975,7 +4971,7 @@ } // Otherwise, emit a libcall. - Lo = ExpandLibCall("__lshrdi3", Node, false, Hi); + Lo = ExpandLibCall("__lshrdi3", Node, false/*lshr is unsigned*/, Hi); break; } @@ -5062,7 +5058,7 @@ } } - Lo = ExpandLibCall("__muldi3" , Node, false, Hi); + Lo = ExpandLibCall("__muldi3" , Node, false/*sign irrelevant*/, Hi); break; } case ISD::SDIV: Lo = ExpandLibCall("__divdi3" , Node, true, Hi); break; From reid at x10sys.com Tue Jan 2 22:25:48 2007 From: reid at x10sys.com (Reid Spencer) Date: Tue, 2 Jan 2007 22:25:48 -0600 Subject: [llvm-commits] CVS: llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp Message-ID: <200701030425.l034PmPi006516@zion.cs.uiuc.edu> Changes in directory llvm/lib/CodeGen/SelectionDAG: SelectionDAGISel.cpp updated: 1.335 -> 1.336 --- Log message: Two changes: 1. Switch expression and cases are compared signed and are sign extended. 2. For function results needing extended, do SIGN_EXTEND if the SExtAttribute is set and ZERO_EXTEND if the ZExtAttribute is set, otherwise just let the Legalizer do ANY_EXTEND. This fixes the recent regression in kimwitu++ and probably the llvm-gcc bootstrap issue we had today. --- Diffs of the changes: (+12 -5) SelectionDAGISel.cpp | 17 ++++++++++++----- 1 files changed, 12 insertions(+), 5 deletions(-) Index: llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp diff -u llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1.335 llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1.336 --- llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1.335 Sat Dec 30 23:55:36 2006 +++ llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp Tue Jan 2 22:25:33 2007 @@ -397,8 +397,8 @@ struct CaseCmp { bool operator () (const Case& C1, const Case& C2) { assert(isa(C1.first) && isa(C2.first)); - return cast(C1.first)->getZExtValue() < - cast(C2.first)->getZExtValue(); + return cast(C1.first)->getSExtValue() < + cast(C2.first)->getSExtValue(); } }; @@ -766,10 +766,17 @@ else TmpVT = MVT::i32; const FunctionType *FTy = I.getParent()->getParent()->getFunctionType(); - ISD::NodeType ExtendKind = ISD::SIGN_EXTEND; + ISD::NodeType ExtendKind = ISD::ANY_EXTEND; + if (FTy->paramHasAttr(0, FunctionType::SExtAttribute)) + ExtendKind = ISD::SIGN_EXTEND; if (FTy->paramHasAttr(0, FunctionType::ZExtAttribute)) ExtendKind = ISD::ZERO_EXTEND; - RetOp = DAG.getNode(ExtendKind, TmpVT, RetOp); + if (ExtendKind == ISD::ANY_EXTEND) + // There was no specification for extension in the parameter attributes + // so we will just let the legalizer do the ANY_EXTEND + ; + else + RetOp = DAG.getNode(ExtendKind, TmpVT, RetOp); } NewValues.push_back(RetOp); NewValues.push_back(DAG.getConstant(false, MVT::i32)); @@ -1378,7 +1385,7 @@ // Create a CaseBlock record representing a conditional branch to // the LHS node if the value being switched on SV is less than C. // Otherwise, branch to LHS. - ISD::CondCode CC = ISD::SETULT; + ISD::CondCode CC = ISD::SETLT; SelectionDAGISel::CaseBlock CB(CC, SV, C, TrueBB, FalseBB, CR.CaseBB); if (CR.CaseBB == CurMBB) From reid at x10sys.com Tue Jan 2 23:03:20 2007 From: reid at x10sys.com (Reid Spencer) Date: Tue, 2 Jan 2007 23:03:20 -0600 Subject: [llvm-commits] CVS: llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp Message-ID: <200701030503.l0353KIO007177@zion.cs.uiuc.edu> Changes in directory llvm/lib/CodeGen/SelectionDAG: SelectionDAGISel.cpp updated: 1.336 -> 1.337 --- Log message: Restore previous behavior of defaulting to ZEXT. This works around two things: (1) preventing PR1071: http://llvm.org/PR1071 and (2) working around missing parameter attributes for bool type. (2) will be fixed shortly. When PR1071: http://llvm.org/PR1071 is fixed, this patch should be undone. --- Diffs of the changes: (+2 -7) SelectionDAGISel.cpp | 9 ++------- 1 files changed, 2 insertions(+), 7 deletions(-) Index: llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp diff -u llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1.336 llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1.337 --- llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1.336 Tue Jan 2 22:25:33 2007 +++ llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp Tue Jan 2 23:03:05 2007 @@ -766,17 +766,12 @@ else TmpVT = MVT::i32; const FunctionType *FTy = I.getParent()->getParent()->getFunctionType(); - ISD::NodeType ExtendKind = ISD::ANY_EXTEND; + ISD::NodeType ExtendKind = ISD::ZERO_EXTEND; // FIXME: ANY_EXTEND? if (FTy->paramHasAttr(0, FunctionType::SExtAttribute)) ExtendKind = ISD::SIGN_EXTEND; if (FTy->paramHasAttr(0, FunctionType::ZExtAttribute)) ExtendKind = ISD::ZERO_EXTEND; - if (ExtendKind == ISD::ANY_EXTEND) - // There was no specification for extension in the parameter attributes - // so we will just let the legalizer do the ANY_EXTEND - ; - else - RetOp = DAG.getNode(ExtendKind, TmpVT, RetOp); + RetOp = DAG.getNode(ExtendKind, TmpVT, RetOp); } NewValues.push_back(RetOp); NewValues.push_back(DAG.getConstant(false, MVT::i32)); From rspencer at reidspencer.com Tue Jan 2 23:29:02 2007 From: rspencer at reidspencer.com (Reid Spencer) Date: Tue, 02 Jan 2007 21:29:02 -0800 Subject: [llvm-commits] [llvm-gcc] Cumulative PR950 Patch, Version 3 (Please Commit) Message-ID: <1167802143.25999.205.camel@bashful.x10sys.com> All, The attached patch is a cumulative patch of changes to llvm-gcc since Dec 22nd. It should apply cleanly to the SVN Mirror's version 236. This contains the same changes as the last PR950 patch that I sent with the addition of @zext parameter attributes for bool types. The difference in this patch from the last one is only in the llvm-types.cpp file. If you're working with llvm-gcc HEAD version via the SVN repository, please note that a hardware failure has caused a delay in the mirror getting updated. It might take a few more days to get it restored. Until then, you'll need to apply this cumulative patches to rev 236 (current head) manually and rebuild in order for llvm-gcc to build with the current CVS head version of LLVM. If you've previously applied patches to llvm-gcc, I recommend you remove the affected files, update from the mirror to version 236 and then apply this patch. JIM: Yup, this needs to be committed. Reid. -------------- next part -------------- A non-text attachment was scrubbed... Name: PR950-3.patch Type: text/x-patch Size: 99258 bytes Desc: not available Url : http://lists.cs.uiuc.edu/pipermail/llvm-commits/attachments/20070102/b7ac5066/attachment.bin From isanbard at gmail.com Wed Jan 3 00:26:50 2007 From: isanbard at gmail.com (Bill Wendling) Date: Tue, 2 Jan 2007 22:26:50 -0800 Subject: [llvm-commits] [llvm-gcc] Cumulative PR950 Patch, Version 3 (Please Commit) In-Reply-To: <1167802143.25999.205.camel@bashful.x10sys.com> References: <1167802143.25999.205.camel@bashful.x10sys.com> Message-ID: <0086E2E1-5F5C-473B-8FDC-8D82F496345E@gmail.com> Hi Reid, I got this error when compiling: ../../llvm-gcc.src/gcc/llvm-convert.cpp: In member function 'bool TreeToLLVM::EmitFrontendExpandedBuiltinCall(tree_node*, tree_node*, llvm::Value*, llvm::Value*&)': ../../llvm-gcc.src/gcc/llvm-convert.cpp:3128: error: 'const class llvm::Type' has no member named 'isSigned' ../../llvm-gcc.src/gcc/llvm-convert.cpp:3128: error: 'const class llvm::Type' has no member named 'isSigned' I should be working with TOT in the LLVM branch... -bw On Jan 2, 2007, at 9:29 PM, Reid Spencer wrote: > All, > > The attached patch is a cumulative patch of changes to llvm-gcc since > Dec 22nd. It should apply cleanly to the SVN Mirror's version 236. > This > contains the same changes as the last PR950 patch that I sent with the > addition of @zext parameter attributes for bool types. The > difference in > this patch from the last one is only in the llvm-types.cpp file. > > If you're working with llvm-gcc HEAD version via the SVN repository, > please note that a hardware failure has caused a delay in the mirror > getting updated. It might take a few more days to get it restored. > Until > then, you'll need to apply this cumulative patches to rev 236 (current > head) manually and rebuild in order for llvm-gcc to build with the > current CVS head version of LLVM. > > If you've previously applied patches to llvm-gcc, I recommend you > remove > the affected files, update from the mirror to version 236 and then > apply > this patch. > > JIM: Yup, this needs to be committed. > > Reid. > > _______________________________________________ > llvm-commits mailing list > llvm-commits at cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits From rspencer at reidspencer.com Wed Jan 3 00:48:40 2007 From: rspencer at reidspencer.com (Reid Spencer) Date: Tue, 02 Jan 2007 22:48:40 -0800 Subject: [llvm-commits] [llvm-gcc] Cumulative PR950 Patch, Version 3 (Please Commit) In-Reply-To: <0086E2E1-5F5C-473B-8FDC-8D82F496345E@gmail.com> References: <1167802143.25999.205.camel@bashful.x10sys.com> <0086E2E1-5F5C-473B-8FDC-8D82F496345E@gmail.com> Message-ID: <1167806920.25999.208.camel@bashful.x10sys.com> On Tue, 2007-01-02 at 22:26 -0800, Bill Wendling wrote: > Hi Reid, > > I got this error when compiling: > > ../../llvm-gcc.src/gcc/llvm-convert.cpp: In member function 'bool > TreeToLLVM::EmitFrontendExpandedBuiltinCall(tree_node*, tree_node*, > llvm::Value*, llvm::Value*&)': > ../../llvm-gcc.src/gcc/llvm-convert.cpp:3128: error: 'const class > llvm::Type' has no member named 'isSigned' > ../../llvm-gcc.src/gcc/llvm-convert.cpp:3128: error: 'const class > llvm::Type' has no member named 'isSigned' > > I should be working with TOT in the LLVM branch... Check your tree status you're probably not working with TOT on LLVM. The isSigned method was removed a few days ago. > > -bw > > On Jan 2, 2007, at 9:29 PM, Reid Spencer wrote: > > > All, > > > > The attached patch is a cumulative patch of changes to llvm-gcc since > > Dec 22nd. It should apply cleanly to the SVN Mirror's version 236. > > This > > contains the same changes as the last PR950 patch that I sent with the > > addition of @zext parameter attributes for bool types. The > > difference in > > this patch from the last one is only in the llvm-types.cpp file. > > > > If you're working with llvm-gcc HEAD version via the SVN repository, > > please note that a hardware failure has caused a delay in the mirror > > getting updated. It might take a few more days to get it restored. > > Until > > then, you'll need to apply this cumulative patches to rev 236 (current > > head) manually and rebuild in order for llvm-gcc to build with the > > current CVS head version of LLVM. > > > > If you've previously applied patches to llvm-gcc, I recommend you > > remove > > the affected files, update from the mirror to version 236 and then > > apply > > this patch. > > > > JIM: Yup, this needs to be committed. > > > > Reid. > > > > _______________________________________________ > > llvm-commits mailing list > > llvm-commits at cs.uiuc.edu > > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits > From rspencer at reidspencer.com Wed Jan 3 00:54:06 2007 From: rspencer at reidspencer.com (Reid Spencer) Date: Tue, 02 Jan 2007 22:54:06 -0800 Subject: [llvm-commits] [llvm-gcc] PR950-zext-bool.patch Message-ID: <1167807246.25999.211.camel@bashful.x10sys.com> The attached patch is already contained in the previous cumulative PR950 patch. This contains just today's changes so it can be more easily applied to the Apple internal SVN server. Reid. -------------- next part -------------- A non-text attachment was scrubbed... Name: PR950-zext-bool.patch Type: text/x-patch Size: 2086 bytes Desc: not available Url : http://lists.cs.uiuc.edu/pipermail/llvm-commits/attachments/20070102/ed79bf6b/attachment.bin From rspencer at reidspencer.com Wed Jan 3 00:58:18 2007 From: rspencer at reidspencer.com (Reid Spencer) Date: Tue, 02 Jan 2007 22:58:18 -0800 Subject: [llvm-commits] [llvm-gcc] PR950-zext-bool.patch In-Reply-To: <1167807246.25999.211.camel@bashful.x10sys.com> References: <1167807246.25999.211.camel@bashful.x10sys.com> Message-ID: <1167807498.25999.214.camel@bashful.x10sys.com> To make it even easier, here's a replacement for gcc/llvm-types.cpp Reid. On Tue, 2007-01-02 at 22:54 -0800, Reid Spencer wrote: > The attached patch is already contained in the previous cumulative PR950 > patch. This contains just today's changes so it can be more easily > applied to the Apple internal SVN server. > > Reid. > _______________________________________________ > llvm-commits mailing list > llvm-commits at cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits -------------- next part -------------- A non-text attachment was scrubbed... Name: llvm-types.cpp Type: text/x-c++src Size: 47398 bytes Desc: not available Url : http://lists.cs.uiuc.edu/pipermail/llvm-commits/attachments/20070102/091f74bc/attachment.bin From rspencer at reidspencer.com Wed Jan 3 01:04:48 2007 From: rspencer at reidspencer.com (Reid Spencer) Date: Tue, 02 Jan 2007 23:04:48 -0800 Subject: [llvm-commits] [llvm-gcc] PR950-zext-bool.patch In-Reply-To: <1167807498.25999.214.camel@bashful.x10sys.com> References: <1167807246.25999.211.camel@bashful.x10sys.com> <1167807498.25999.214.camel@bashful.x10sys.com> Message-ID: <1167807888.25999.216.camel@bashful.x10sys.com> On Tue, 2007-01-02 at 22:58 -0800, Reid Spencer wrote: > To make it even easier, here's a replacement for gcc/llvm-types.cpp Scratch that. Sent the wrong file. Try this one. Sorry. Reid. > > Reid. > > On Tue, 2007-01-02 at 22:54 -0800, Reid Spencer wrote: > > The attached patch is already contained in the previous cumulative PR950 > > patch. This contains just today's changes so it can be more easily > > applied to the Apple internal SVN server. > > > > Reid. > > _______________________________________________ > > llvm-commits mailing list > > llvm-commits at cs.uiuc.edu > > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits > _______________________________________________ > llvm-commits mailing list > llvm-commits at cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits -------------- next part -------------- A non-text attachment was scrubbed... Name: llvm-types.cpp Type: text/x-c++src Size: 47631 bytes Desc: not available Url : http://lists.cs.uiuc.edu/pipermail/llvm-commits/attachments/20070102/db6e5506/attachment.bin From isanbard at gmail.com Wed Jan 3 01:26:45 2007 From: isanbard at gmail.com (Bill Wendling) Date: Tue, 2 Jan 2007 23:26:45 -0800 Subject: [llvm-commits] [llvm-gcc] Cumulative PR950 Patch, Version 3 (Please Commit) In-Reply-To: <1167806920.25999.208.camel@bashful.x10sys.com> References: <1167802143.25999.205.camel@bashful.x10sys.com> <0086E2E1-5F5C-473B-8FDC-8D82F496345E@gmail.com> <1167806920.25999.208.camel@bashful.x10sys.com> Message-ID: <2F21E66F-6087-4CCC-B235-455B45E1B1D8@gmail.com> On Jan 2, 2007, at 10:48 PM, Reid Spencer wrote: > On Tue, 2007-01-02 at 22:26 -0800, Bill Wendling wrote: >> Hi Reid, >> >> I got this error when compiling: >> >> ../../llvm-gcc.src/gcc/llvm-convert.cpp: In member function 'bool >> TreeToLLVM::EmitFrontendExpandedBuiltinCall(tree_node*, tree_node*, >> llvm::Value*, llvm::Value*&)': >> ../../llvm-gcc.src/gcc/llvm-convert.cpp:3128: error: 'const class >> llvm::Type' has no member named 'isSigned' >> ../../llvm-gcc.src/gcc/llvm-convert.cpp:3128: error: 'const class >> llvm::Type' has no member named 'isSigned' >> >> I should be working with TOT in the LLVM branch... > > Check your tree status you're probably not working with TOT on > LLVM. The > isSigned method was removed a few days ago. > I resynced and it didn't update the Type.h file. -bw From evan.cheng at apple.com Wed Jan 3 01:43:39 2007 From: evan.cheng at apple.com (Evan Cheng) Date: Tue, 2 Jan 2007 23:43:39 -0800 Subject: [llvm-commits] [llvm-gcc] PR950-zext-bool.patch In-Reply-To: <1167807888.25999.216.camel@bashful.x10sys.com> References: <1167807246.25999.211.camel@bashful.x10sys.com> <1167807498.25999.214.camel@bashful.x10sys.com> <1167807888.25999.216.camel@bashful.x10sys.com> Message-ID: Please don't apply this. It's incorrectly forcing bool parameter to be zero extended. That's wrong for targets (e.g. ppc32) which have 32- bit boolean type. Reid will post a fixed version tomorrow. Evan On Jan 2, 2007, at 11:04 PM, Reid Spencer wrote: > On Tue, 2007-01-02 at 22:58 -0800, Reid Spencer wrote: >> To make it even easier, here's a replacement for gcc/llvm-types.cpp > > Scratch that. Sent the wrong file. Try this one. Sorry. > > Reid. > >> >> Reid. >> >> On Tue, 2007-01-02 at 22:54 -0800, Reid Spencer wrote: >>> The attached patch is already contained in the previous >>> cumulative PR950 >>> patch. This contains just today's changes so it can be more easily >>> applied to the Apple internal SVN server. >>> >>> Reid. >>> _______________________________________________ >>> llvm-commits mailing list >>> llvm-commits at cs.uiuc.edu >>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits >> _______________________________________________ >> llvm-commits mailing list >> llvm-commits at cs.uiuc.edu >> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits >> > _______________________________________________ > llvm-commits mailing list > llvm-commits at cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits From evan.cheng at apple.com Wed Jan 3 01:44:46 2007 From: evan.cheng at apple.com (Evan Cheng) Date: Wed, 3 Jan 2007 01:44:46 -0600 Subject: [llvm-commits] CVS: llvm/tools/bugpoint/ToolRunner.cpp Message-ID: <200701030744.l037ik6u009662@zion.cs.uiuc.edu> Changes in directory llvm/tools/bugpoint: ToolRunner.cpp updated: 1.59 -> 1.60 --- Log message: A bit more debugging printf's. --- Diffs of the changes: (+10 -0) ToolRunner.cpp | 10 ++++++++++ 1 files changed, 10 insertions(+) Index: llvm/tools/bugpoint/ToolRunner.cpp diff -u llvm/tools/bugpoint/ToolRunner.cpp:1.59 llvm/tools/bugpoint/ToolRunner.cpp:1.60 --- llvm/tools/bugpoint/ToolRunner.cpp:1.59 Fri Sep 15 18:01:10 2006 +++ llvm/tools/bugpoint/ToolRunner.cpp Wed Jan 3 01:44:30 2007 @@ -458,6 +458,11 @@ GCCArgs.push_back(0); // NULL terminator std::cout << "" << std::flush; + DEBUG(std::cerr << "\nAbout to run:\t"; + for (unsigned i=0, e = GCCArgs.size()-1; i != e; ++i) + std::cerr << " " << GCCArgs[i]; + std::cerr << "\n"; + ); if (RunProgramWithTimeout(GCCPath, &GCCArgs[0], sys::Path(), sys::Path(), sys::Path())) { ProcessFailure(GCCPath, &GCCArgs[0]); @@ -545,6 +550,11 @@ std::cout << "" << std::flush; + DEBUG(std::cerr << "\nAbout to run:\t"; + for (unsigned i=0, e = GCCArgs.size()-1; i != e; ++i) + std::cerr << " " << GCCArgs[i]; + std::cerr << "\n"; + ); if (RunProgramWithTimeout(GCCPath, &GCCArgs[0], sys::Path(), sys::Path(), sys::Path())) { ProcessFailure(GCCPath, &GCCArgs[0]); From jlaskey at apple.com Wed Jan 3 04:17:10 2007 From: jlaskey at apple.com (Jim Laskey) Date: Wed, 3 Jan 2007 06:17:10 -0400 Subject: [llvm-commits] [llvm-gcc] PR950-zext-bool.patch In-Reply-To: References: <1167807246.25999.211.camel@bashful.x10sys.com> <1167807498.25999.214.camel@bashful.x10sys.com> <1167807888.25999.216.camel@bashful.x10sys.com> Message-ID: <0285D67D-D519-4098-A1DD-314C8FF2E33F@apple.com> Waiting till tomorrow (today actually.) On 3-Jan-07, at 03:43 AM, Evan Cheng wrote: > Please don't apply this. It's incorrectly forcing bool parameter to > be zero extended. That's wrong for targets (e.g. ppc32) which have 32- > bit boolean type. > > Reid will post a fixed version tomorrow. > > Evan > On Jan 2, 2007, at 11:04 PM, Reid Spencer wrote: > >> On Tue, 2007-01-02 at 22:58 -0800, Reid Spencer wrote: >>> To make it even easier, here's a replacement for gcc/llvm-types.cpp >> >> Scratch that. Sent the wrong file. Try this one. Sorry. >> >> Reid. >> >>> >>> Reid. >>> >>> On Tue, 2007-01-02 at 22:54 -0800, Reid Spencer wrote: >>>> The attached patch is already contained in the previous >>>> cumulative PR950 >>>> patch. This contains just today's changes so it can be more easily >>>> applied to the Apple internal SVN server. >>>> >>>> Reid. >>>> _______________________________________________ >>>> llvm-commits mailing list >>>> llvm-commits at cs.uiuc.edu >>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits >>> _______________________________________________ >>> llvm-commits mailing list >>> llvm-commits at cs.uiuc.edu >>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits >>> >> _______________________________________________ >> llvm-commits mailing list >> llvm-commits at cs.uiuc.edu >> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits > > _______________________________________________ > llvm-commits mailing list > llvm-commits at cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits -------------- next part -------------- A non-text attachment was scrubbed... Name: smime.p7s Type: application/pkcs7-signature Size: 2417 bytes Desc: not available Url : http://lists.cs.uiuc.edu/pipermail/llvm-commits/attachments/20070103/ba23e4f0/attachment.bin From asl at math.spbu.ru Wed Jan 3 05:43:30 2007 From: asl at math.spbu.ru (Anton Korobeynikov) Date: Wed, 3 Jan 2007 05:43:30 -0600 Subject: [llvm-commits] CVS: llvm/lib/Target/X86/X86ATTAsmPrinter.cpp X86AsmPrinter.cpp X86AsmPrinter.h X86ISelDAGToDAG.cpp X86ISelLowering.cpp X86RegisterInfo.cpp X86Subtarget.cpp X86Subtarget.h X86TargetAsmInfo.cpp X86TargetMachine.cpp Message-ID: <200701031143.l03BhUCE023422@zion.cs.uiuc.edu> Changes in directory llvm/lib/Target/X86: X86ATTAsmPrinter.cpp updated: 1.80 -> 1.81 X86AsmPrinter.cpp updated: 1.223 -> 1.224 X86AsmPrinter.h updated: 1.40 -> 1.41 X86ISelDAGToDAG.cpp updated: 1.140 -> 1.141 X86ISelLowering.cpp updated: 1.308 -> 1.309 X86RegisterInfo.cpp updated: 1.187 -> 1.188 X86Subtarget.cpp updated: 1.46 -> 1.47 X86Subtarget.h updated: 1.24 -> 1.25 X86TargetAsmInfo.cpp updated: 1.14 -> 1.15 X86TargetMachine.cpp updated: 1.133 -> 1.134 --- Log message: Really big cleanup. - New target type "mingw" was introduced - Same things for both mingw & cygwin are marked as "cygming" (as in gcc) - .lcomm is supported here, so allow LLVM to use it - Correctly use underscored versions of setjmp & _longjmp for both mingw & cygwin --- Diffs of the changes: (+33 -24) X86ATTAsmPrinter.cpp | 12 ++++++------ X86AsmPrinter.cpp | 10 +++++----- X86AsmPrinter.h | 2 +- X86ISelDAGToDAG.cpp | 2 +- X86ISelLowering.cpp | 6 +++--- X86RegisterInfo.cpp | 4 ++-- X86Subtarget.cpp | 12 ++++++++---- X86Subtarget.h | 5 ++++- X86TargetAsmInfo.cpp | 2 ++ X86TargetMachine.cpp | 2 +- 10 files changed, 33 insertions(+), 24 deletions(-) Index: llvm/lib/Target/X86/X86ATTAsmPrinter.cpp diff -u llvm/lib/Target/X86/X86ATTAsmPrinter.cpp:1.80 llvm/lib/Target/X86/X86ATTAsmPrinter.cpp:1.81 --- llvm/lib/Target/X86/X86ATTAsmPrinter.cpp:1.80 Tue Dec 19 16:59:26 2006 +++ llvm/lib/Target/X86/X86ATTAsmPrinter.cpp Wed Jan 3 05:43:14 2007 @@ -42,7 +42,7 @@ case Function::LinkOnceLinkage: if (Subtarget->isTargetDarwin()) { return ".section __TEXT,__textcoal_nt,coalesced,pure_instructions"; - } else if (Subtarget->isTargetCygwin()) { + } else if (Subtarget->isTargetCygMing()) { return "\t.section\t.text$linkonce." + CurrentFnName + ",\"ax\"\n"; } else { return "\t.section\t.llvm.linkonce.t." + CurrentFnName + @@ -57,7 +57,7 @@ bool X86ATTAsmPrinter::runOnMachineFunction(MachineFunction &MF) { if (Subtarget->isTargetDarwin() || Subtarget->isTargetELF() || - Subtarget->isTargetCygwin()) { + Subtarget->isTargetCygMing()) { // Let PassManager know we need debug information and relay // the MachineDebugInfo address on to DwarfWriter. DW.SetDebugInfo(&getAnalysis()); @@ -99,7 +99,7 @@ if (Subtarget->isTargetDarwin()) { O << "\t.globl\t" << CurrentFnName << "\n"; O << "\t.weak_definition\t" << CurrentFnName << "\n"; - } else if (Subtarget->isTargetCygwin()) { + } else if (Subtarget->isTargetCygMing()) { EmitAlignment(4, F); // FIXME: This should be parameterized somewhere. O << "\t.linkonce discard\n"; O << "\t.globl " << CurrentFnName << "\n"; @@ -111,14 +111,14 @@ } O << CurrentFnName << ":\n"; // Add some workaround for linkonce linkage on Cygwin\MinGW - if (Subtarget->isTargetCygwin() && + if (Subtarget->isTargetCygMing() && (F->getLinkage() == Function::LinkOnceLinkage || F->getLinkage() == Function::WeakLinkage)) O << "_llvm$workaround$fake$stub_" << CurrentFnName << ":\n"; if (Subtarget->isTargetDarwin() || Subtarget->isTargetELF() || - Subtarget->isTargetCygwin()) { + Subtarget->isTargetCygMing()) { // Emit pre-function debug information. DW.BeginFunction(&MF); } @@ -150,7 +150,7 @@ if (Subtarget->isTargetDarwin() || Subtarget->isTargetELF() || - Subtarget->isTargetCygwin()) { + Subtarget->isTargetCygMing()) { // Emit post-function debug information. DW.EndFunction(); } Index: llvm/lib/Target/X86/X86AsmPrinter.cpp diff -u llvm/lib/Target/X86/X86AsmPrinter.cpp:1.223 llvm/lib/Target/X86/X86AsmPrinter.cpp:1.224 --- llvm/lib/Target/X86/X86AsmPrinter.cpp:1.223 Tue Dec 19 16:59:26 2006 +++ llvm/lib/Target/X86/X86AsmPrinter.cpp Wed Jan 3 05:43:14 2007 @@ -111,7 +111,7 @@ // Emit initial debug information. DW.BeginModule(&M); - } else if (Subtarget->isTargetELF() || Subtarget->isTargetCygwin()) { + } else if (Subtarget->isTargetELF() || Subtarget->isTargetCygMing()) { // Emit initial debug information. DW.BeginModule(&M); } @@ -161,7 +161,7 @@ } else O << TAI->getCOMMDirective() << name << "," << Size; } else { - if (!Subtarget->isTargetCygwin()) { + if (!Subtarget->isTargetCygMing()) { if (I->hasInternalLinkage()) O << "\t.local\t" << name << "\n"; } @@ -179,7 +179,7 @@ O << "\t.globl " << name << "\n" << "\t.weak_definition " << name << "\n"; SwitchToDataSection(".section __DATA,__const_coal,coalesced", I); - } else if (Subtarget->isTargetCygwin()) { + } else if (Subtarget->isTargetCygMing()) { std::string SectionName(".section\t.data$linkonce." + name + ",\"aw\""); @@ -218,7 +218,7 @@ I->getSection() == ".dtors")) { std::string SectionName = ".section " + I->getSection(); - if (Subtarget->isTargetCygwin()) { + if (Subtarget->isTargetCygMing()) { SectionName += ",\"aw\""; } else { assert(!Subtarget->isTargetDarwin()); @@ -310,7 +310,7 @@ // linker can safely perform dead code stripping. Since LLVM never // generates code that does this, it is always safe to set. O << "\t.subsections_via_symbols\n"; - } else if (Subtarget->isTargetELF() || Subtarget->isTargetCygwin()) { + } else if (Subtarget->isTargetELF() || Subtarget->isTargetCygMing()) { // Emit final debug information. DW.EndModule(); } Index: llvm/lib/Target/X86/X86AsmPrinter.h diff -u llvm/lib/Target/X86/X86AsmPrinter.h:1.40 llvm/lib/Target/X86/X86AsmPrinter.h:1.41 --- llvm/lib/Target/X86/X86AsmPrinter.h:1.40 Tue Dec 19 16:59:26 2006 +++ llvm/lib/Target/X86/X86AsmPrinter.h Wed Jan 3 05:43:14 2007 @@ -67,7 +67,7 @@ AU.setPreservesAll(); if (Subtarget->isTargetDarwin() || Subtarget->isTargetELF() || - Subtarget->isTargetCygwin()) { + Subtarget->isTargetCygMing()) { AU.addRequired(); } MachineFunctionPass::getAnalysisUsage(AU); Index: llvm/lib/Target/X86/X86ISelDAGToDAG.cpp diff -u llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.140 llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.141 --- llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.140 Tue Dec 19 16:59:26 2006 +++ llvm/lib/Target/X86/X86ISelDAGToDAG.cpp Wed Jan 3 05:43:14 2007 @@ -534,7 +534,7 @@ void X86DAGToDAGISel::EmitSpecialCodeForMain(MachineBasicBlock *BB, MachineFrameInfo *MFI) { const TargetInstrInfo *TII = TM.getInstrInfo(); - if (Subtarget->isTargetCygwin()) + if (Subtarget->isTargetCygMing()) BuildMI(BB, TII->get(X86::CALLpcrel32)).addExternalSymbol("__main"); // Switch the FPU to 64-bit precision mode for better compatibility and speed. Index: llvm/lib/Target/X86/X86ISelLowering.cpp diff -u llvm/lib/Target/X86/X86ISelLowering.cpp:1.308 llvm/lib/Target/X86/X86ISelLowering.cpp:1.309 --- llvm/lib/Target/X86/X86ISelLowering.cpp:1.308 Sat Dec 30 23:55:36 2006 +++ llvm/lib/Target/X86/X86ISelLowering.cpp Wed Jan 3 05:43:14 2007 @@ -58,7 +58,7 @@ // Darwin should use _setjmp/_longjmp instead of setjmp/longjmp. setUseUnderscoreSetJmp(false); setUseUnderscoreLongJmp(false); - } else if (Subtarget->isTargetCygwin()) { + } else if (Subtarget->isTargetMingw()) { // MS runtime is weird: it exports _setjmp, but longjmp! setUseUnderscoreSetJmp(true); setUseUnderscoreLongJmp(false); @@ -234,7 +234,7 @@ // FIXME - use subtarget debug flags if (!Subtarget->isTargetDarwin() && !Subtarget->isTargetELF() && - !Subtarget->isTargetCygwin()) + !Subtarget->isTargetCygMing()) setOperationAction(ISD::DEBUG_LABEL, MVT::Other, Expand); // VASTART needs to be custom lowered to use the VarArgsFrameIndex @@ -4405,7 +4405,7 @@ MachineFunction &MF = DAG.getMachineFunction(); const Function* Fn = MF.getFunction(); if (Fn->hasExternalLinkage() && - Subtarget->isTargetCygwin() && + Subtarget->isTargetCygMing() && Fn->getName() == "main") MF.getInfo()->setForceFramePointer(true); Index: llvm/lib/Target/X86/X86RegisterInfo.cpp diff -u llvm/lib/Target/X86/X86RegisterInfo.cpp:1.187 llvm/lib/Target/X86/X86RegisterInfo.cpp:1.188 --- llvm/lib/Target/X86/X86RegisterInfo.cpp:1.187 Tue Jan 2 15:33:40 2007 +++ llvm/lib/Target/X86/X86RegisterInfo.cpp Wed Jan 3 05:43:14 2007 @@ -1010,7 +1010,7 @@ MFI->setStackSize(NumBytes); if (NumBytes) { // adjust stack pointer: ESP -= numbytes - if (NumBytes >= 4096 && Subtarget->isTargetCygwin()) { + if (NumBytes >= 4096 && Subtarget->isTargetCygMing()) { // Function prologue calls _alloca to probe the stack when allocating // more than 4k bytes in one go. Touching the stack at 4K increments is // necessary to ensure that the guard pages used by the OS virtual memory @@ -1054,7 +1054,7 @@ // If it's main() on Cygwin\Mingw32 we should align stack as well if (Fn->hasExternalLinkage() && Fn->getName() == "main" && - Subtarget->isTargetCygwin()) { + Subtarget->isTargetCygMing()) { MI= BuildMI(TII.get(X86::AND32ri), X86::ESP).addReg(X86::ESP).addImm(-Align); MBB.insert(MBBI, MI); Index: llvm/lib/Target/X86/X86Subtarget.cpp diff -u llvm/lib/Target/X86/X86Subtarget.cpp:1.46 llvm/lib/Target/X86/X86Subtarget.cpp:1.47 --- llvm/lib/Target/X86/X86Subtarget.cpp:1.46 Fri Dec 22 16:29:05 2006 +++ llvm/lib/Target/X86/X86Subtarget.cpp Wed Jan 3 05:43:14 2007 @@ -40,7 +40,7 @@ return (!isDirectCall && (GV->hasWeakLinkage() || GV->hasLinkOnceLinkage() || (GV->isExternal() && !GV->hasNotBeenReadFromBytecode()))); - } else if (isTargetCygwin() || isTargetWindows()) { + } else if (isTargetCygMing() || isTargetWindows()) { return (GV->hasDLLImportLinkage()); } @@ -248,16 +248,19 @@ // if one cannot be determined, to true. const std::string& TT = M.getTargetTriple(); if (TT.length() > 5) { - if (TT.find("cygwin") != std::string::npos || - TT.find("mingw") != std::string::npos) + if (TT.find("cygwin") != std::string::npos) TargetType = isCygwin; + else if (TT.find("mingw") != std::string::npos) + TargetType = isMingw; else if (TT.find("darwin") != std::string::npos) TargetType = isDarwin; else if (TT.find("win32") != std::string::npos) TargetType = isWindows; } else if (TT.empty()) { -#if defined(__CYGWIN__) || defined(__MINGW32__) +#if defined(__CYGWIN__) TargetType = isCygwin; +#elif defined(__MINGW32__) + TargetType = isMingw; #elif defined(__APPLE__) TargetType = isDarwin; #elif defined(_WIN32) @@ -277,6 +280,7 @@ if (TargetType == isDarwin || TargetType == isCygwin || + TargetType == isMingw || (TargetType == isELF && Is64Bit)) stackAlignment = 16; } Index: llvm/lib/Target/X86/X86Subtarget.h diff -u llvm/lib/Target/X86/X86Subtarget.h:1.24 llvm/lib/Target/X86/X86Subtarget.h:1.25 --- llvm/lib/Target/X86/X86Subtarget.h:1.24 Fri Dec 22 16:29:05 2006 +++ llvm/lib/Target/X86/X86Subtarget.h Wed Jan 3 05:43:14 2007 @@ -64,7 +64,7 @@ public: enum { - isELF, isCygwin, isDarwin, isWindows + isELF, isCygwin, isDarwin, isWindows, isMingw } TargetType; /// This constructor initializes the data members to match that @@ -106,6 +106,9 @@ bool isTargetDarwin() const { return TargetType == isDarwin; } bool isTargetELF() const { return TargetType == isELF; } bool isTargetWindows() const { return TargetType == isWindows; } + bool isTargetMingw() const { return TargetType == isMingw; } + bool isTargetCygMing() const { return (TargetType == isMingw || + TargetType == isCygwin); } bool isTargetCygwin() const { return TargetType == isCygwin; } /// True if accessing the GV requires an extra load. For Windows, dllimported Index: llvm/lib/Target/X86/X86TargetAsmInfo.cpp diff -u llvm/lib/Target/X86/X86TargetAsmInfo.cpp:1.14 llvm/lib/Target/X86/X86TargetAsmInfo.cpp:1.15 --- llvm/lib/Target/X86/X86TargetAsmInfo.cpp:1.14 Sat Dec 30 23:55:36 2006 +++ llvm/lib/Target/X86/X86TargetAsmInfo.cpp Wed Jan 3 05:43:14 2007 @@ -103,7 +103,9 @@ break; case X86Subtarget::isCygwin: + case X86Subtarget::isMingw: GlobalPrefix = "_"; + LCOMMDirective = "\t.lcomm\t"; COMMDirectiveTakesAlignment = false; HasDotTypeDotSizeDirective = false; StaticCtorsSection = "\t.section .ctors,\"aw\""; Index: llvm/lib/Target/X86/X86TargetMachine.cpp diff -u llvm/lib/Target/X86/X86TargetMachine.cpp:1.133 llvm/lib/Target/X86/X86TargetMachine.cpp:1.134 --- llvm/lib/Target/X86/X86TargetMachine.cpp:1.133 Fri Dec 22 16:29:05 2006 +++ llvm/lib/Target/X86/X86TargetMachine.cpp Wed Jan 3 05:43:14 2007 @@ -115,7 +115,7 @@ Subtarget.getStackAlignment(), Subtarget.is64Bit() ? -8 : -4), InstrInfo(*this), JITInfo(*this), TLInfo(*this) { if (getRelocationModel() == Reloc::Default) - if (Subtarget.isTargetDarwin() || Subtarget.isTargetCygwin()) + if (Subtarget.isTargetDarwin() || Subtarget.isTargetCygMing()) setRelocationModel(Reloc::DynamicNoPIC); else setRelocationModel(Reloc::Static); From jlaskey at apple.com Wed Jan 3 07:36:55 2007 From: jlaskey at apple.com (Jim Laskey) Date: Wed, 3 Jan 2007 07:36:55 -0600 Subject: [llvm-commits] CVS: llvm/lib/CodeGen/DwarfWriter.cpp Message-ID: <200701031336.l03Dat1X025182@zion.cs.uiuc.edu> Changes in directory llvm/lib/CodeGen: DwarfWriter.cpp updated: 1.109 -> 1.110 --- Log message: Silence warning. --- Diffs of the changes: (+1 -1) DwarfWriter.cpp | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/lib/CodeGen/DwarfWriter.cpp diff -u llvm/lib/CodeGen/DwarfWriter.cpp:1.109 llvm/lib/CodeGen/DwarfWriter.cpp:1.110 --- llvm/lib/CodeGen/DwarfWriter.cpp:1.109 Fri Dec 22 14:03:42 2006 +++ llvm/lib/CodeGen/DwarfWriter.cpp Wed Jan 3 07:36:40 2007 @@ -2429,7 +2429,7 @@ EOL("Length of Common Information Entry"); EmitLabel("frame_common_begin", 0); - EmitInt32(DW_CIE_ID); EOL("CIE Identifier Tag"); + EmitInt32((int)DW_CIE_ID); EOL("CIE Identifier Tag"); EmitInt8(DW_CIE_VERSION); EOL("CIE Version"); EmitString(""); EOL("CIE Augmentation"); EmitULEB128Bytes(1); EOL("CIE Code Alignment Factor"); From jlaskey at apple.com Wed Jan 3 07:46:36 2007 From: jlaskey at apple.com (Jim Laskey) Date: Wed, 3 Jan 2007 07:46:36 -0600 Subject: [llvm-commits] CVS: llvm/lib/CodeGen/MachineDebugInfo.cpp Message-ID: <200701031346.l03Dkalf025342@zion.cs.uiuc.edu> Changes in directory llvm/lib/CodeGen: MachineDebugInfo.cpp updated: 1.65 -> 1.66 --- Log message: NULL names should pass validation. --- Diffs of the changes: (+2 -1) MachineDebugInfo.cpp | 3 ++- 1 files changed, 2 insertions(+), 1 deletion(-) Index: llvm/lib/CodeGen/MachineDebugInfo.cpp diff -u llvm/lib/CodeGen/MachineDebugInfo.cpp:1.65 llvm/lib/CodeGen/MachineDebugInfo.cpp:1.66 --- llvm/lib/CodeGen/MachineDebugInfo.cpp:1.65 Sat Dec 30 23:55:36 2006 +++ llvm/lib/CodeGen/MachineDebugInfo.cpp Wed Jan 3 07:46:20 2007 @@ -430,7 +430,8 @@ } virtual void Apply(std::string &Field) { Constant *C = CI->getOperand(I++); - IsValid = IsValid && (!C || isStringValue(C)); + IsValid = IsValid && + (!C || isStringValue(C) || C->isNullValue()); } virtual void Apply(DebugInfoDesc *&Field) { // FIXME - Prepare the correct descriptor. From reid at x10sys.com Wed Jan 3 10:49:49 2007 From: reid at x10sys.com (Reid Spencer) Date: Wed, 3 Jan 2007 10:49:49 -0600 Subject: [llvm-commits] CVS: llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp Message-ID: <200701031649.l03GnnVa028805@zion.cs.uiuc.edu> Changes in directory llvm/lib/CodeGen/SelectionDAG: SelectionDAGISel.cpp updated: 1.337 -> 1.338 --- Log message: Legalizer doesn't do an ANY_EXTEND if we don't ask for one so make sure that we default to an ANY_EXTEND if no parameter attribute is set on the result value of a function. --- Diffs of the changes: (+1 -1) SelectionDAGISel.cpp | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp diff -u llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1.337 llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1.338 --- llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1.337 Tue Jan 2 23:03:05 2007 +++ llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp Wed Jan 3 10:49:33 2007 @@ -766,7 +766,7 @@ else TmpVT = MVT::i32; const FunctionType *FTy = I.getParent()->getParent()->getFunctionType(); - ISD::NodeType ExtendKind = ISD::ZERO_EXTEND; // FIXME: ANY_EXTEND? + ISD::NodeType ExtendKind = ISD::ANY_EXTEND; if (FTy->paramHasAttr(0, FunctionType::SExtAttribute)) ExtendKind = ISD::SIGN_EXTEND; if (FTy->paramHasAttr(0, FunctionType::ZExtAttribute)) From rspencer at reidspencer.com Wed Jan 3 10:52:45 2007 From: rspencer at reidspencer.com (Reid Spencer) Date: Wed, 03 Jan 2007 08:52:45 -0800 Subject: [llvm-commits] [llvm-gcc] PR950-zext-bool.patch In-Reply-To: <0285D67D-D519-4098-A1DD-314C8FF2E33F@apple.com> References: <1167807246.25999.211.camel@bashful.x10sys.com> <1167807498.25999.214.camel@bashful.x10sys.com> <1167807888.25999.216.camel@bashful.x10sys.com> <0285D67D-D519-4098-A1DD-314C8FF2E33F@apple.com> Message-ID: <1167843165.22536.4.camel@bashful.x10sys.com> Here's the updated version. I tested this last night while I slept. It passed everything. This version checks both integer and boolean types for size < INT_TYPE_SIZE. Reid. On Wed, 2007-01-03 at 06:17 -0400, Jim Laskey wrote: > Waiting till tomorrow (today actually.) > > On 3-Jan-07, at 03:43 AM, Evan Cheng wrote: > > > Please don't apply this. It's incorrectly forcing bool parameter to > > be zero extended. That's wrong for targets (e.g. ppc32) which have 32- > > bit boolean type. > > > > Reid will post a fixed version tomorrow. > > > > Evan > > On Jan 2, 2007, at 11:04 PM, Reid Spencer wrote: > > > >> On Tue, 2007-01-02 at 22:58 -0800, Reid Spencer wrote: > >>> To make it even easier, here's a replacement for gcc/llvm-types.cpp > >> > >> Scratch that. Sent the wrong file. Try this one. Sorry. > >> > >> Reid. > >> > >>> > >>> Reid. > >>> > >>> On Tue, 2007-01-02 at 22:54 -0800, Reid Spencer wrote: > >>>> The attached patch is already contained in the previous > >>>> cumulative PR950 > >>>> patch. This contains just today's changes so it can be more easily > >>>> applied to the Apple internal SVN server. > >>>> > >>>> Reid. > >>>> _______________________________________________ > >>>> llvm-commits mailing list > >>>> llvm-commits at cs.uiuc.edu > >>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits > >>> _______________________________________________ > >>> llvm-commits mailing list > >>> llvm-commits at cs.uiuc.edu > >>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits > >>> > >> _______________________________________________ > >> llvm-commits mailing list > >> llvm-commits at cs.uiuc.edu > >> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits > > > > _______________________________________________ > > llvm-commits mailing list > > llvm-commits at cs.uiuc.edu > > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits > > _______________________________________________ > llvm-commits mailing list > llvm-commits at cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits -------------- next part -------------- A non-text attachment was scrubbed... Name: llvm-types.cpp Type: text/x-c++src Size: 47793 bytes Desc: not available Url : http://lists.cs.uiuc.edu/pipermail/llvm-commits/attachments/20070103/cc6ca6b1/attachment.bin From reid at x10sys.com Wed Jan 3 11:01:34 2007 From: reid at x10sys.com (Reid Spencer) Date: Wed, 3 Jan 2007 11:01:34 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/CodeGen/Generic/nested-select.ll Message-ID: <200701031701.l03H1YmA029018@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/CodeGen/Generic: nested-select.ll updated: 1.2 -> 1.3 --- Log message: Fix this test case. It is no longer permissible to have undefined types in function parameters. Fix by just defining the type as opaque. --- Diffs of the changes: (+4 -0) nested-select.ll | 4 ++++ 1 files changed, 4 insertions(+) Index: llvm/test/Regression/CodeGen/Generic/nested-select.ll diff -u llvm/test/Regression/CodeGen/Generic/nested-select.ll:1.2 llvm/test/Regression/CodeGen/Generic/nested-select.ll:1.3 --- llvm/test/Regression/CodeGen/Generic/nested-select.ll:1.2 Fri Dec 1 22:23:08 2006 +++ llvm/test/Regression/CodeGen/Generic/nested-select.ll Wed Jan 3 11:01:18 2007 @@ -2,6 +2,10 @@ ; Test that select of a select works +%typedef.tree = type opaque + +implementation + int %ic_test(double %p.0.2.0.val, double %p.0.2.1.val, double %p.0.2.2.val, %typedef.tree* %t) { %result.1.0 = cast bool false to int ; [#uses=1] %tmp.55 = setge double 0.000000e+00, 1.000000e+00 ; [#uses=1] From reid at x10sys.com Wed Jan 3 11:04:03 2007 From: reid at x10sys.com (Reid Spencer) Date: Wed, 3 Jan 2007 11:04:03 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/CodeGen/X86/2006-08-07-CycleInDAG.ll Message-ID: <200701031704.l03H43NC029073@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/CodeGen/X86: 2006-08-07-CycleInDAG.ll updated: 1.3 -> 1.4 --- Log message: It is no longer permissible to have undefined types in function parameters. Just fix it by defining the type as opaque. --- Diffs of the changes: (+4 -0) 2006-08-07-CycleInDAG.ll | 4 ++++ 1 files changed, 4 insertions(+) Index: llvm/test/Regression/CodeGen/X86/2006-08-07-CycleInDAG.ll diff -u llvm/test/Regression/CodeGen/X86/2006-08-07-CycleInDAG.ll:1.3 llvm/test/Regression/CodeGen/X86/2006-08-07-CycleInDAG.ll:1.4 --- llvm/test/Regression/CodeGen/X86/2006-08-07-CycleInDAG.ll:1.3 Sun Dec 31 00:01:59 2006 +++ llvm/test/Regression/CodeGen/X86/2006-08-07-CycleInDAG.ll Wed Jan 3 11:03:48 2007 @@ -1,5 +1,9 @@ ; RUN: llvm-upgrade < %s | llvm-as | llc -march=x86 -mattr=+sse2 +%struct.foo = type opaque + +implementation + fastcc int %test(%struct.foo* %v, %struct.foo* %vi) { br bool false, label %ilog2.exit, label %cond_true.i From jlaskey at apple.com Wed Jan 3 11:11:03 2007 From: jlaskey at apple.com (Jim Laskey) Date: Wed, 3 Jan 2007 13:11:03 -0400 Subject: [llvm-commits] [llvm-gcc] PR950-zext-bool.patch In-Reply-To: <1167843165.22536.4.camel@bashful.x10sys.com> References: <1167807246.25999.211.camel@bashful.x10sys.com> <1167807498.25999.214.camel@bashful.x10sys.com> <1167807888.25999.216.camel@bashful.x10sys.com> <0285D67D-D519-4098-A1DD-314C8FF2E33F@apple.com> <1167843165.22536.4.camel@bashful.x10sys.com> Message-ID: Committed. On 3-Jan-07, at 12:52 PM, Reid Spencer wrote: > Here's the updated version. I tested this last night while I slept. It > passed everything. This version checks both integer and boolean types > for size < INT_TYPE_SIZE. > > Reid. > > On Wed, 2007-01-03 at 06:17 -0400, Jim Laskey wrote: >> Waiting till tomorrow (today actually.) >> >> On 3-Jan-07, at 03:43 AM, Evan Cheng wrote: >> >>> Please don't apply this. It's incorrectly forcing bool parameter to >>> be zero extended. That's wrong for targets (e.g. ppc32) which >>> have 32- >>> bit boolean type. >>> >>> Reid will post a fixed version tomorrow. >>> >>> Evan >>> On Jan 2, 2007, at 11:04 PM, Reid Spencer wrote: >>> >>>> On Tue, 2007-01-02 at 22:58 -0800, Reid Spencer wrote: >>>>> To make it even easier, here's a replacement for gcc/llvm- >>>>> types.cpp >>>> >>>> Scratch that. Sent the wrong file. Try this one. Sorry. >>>> >>>> Reid. >>>> >>>>> >>>>> Reid. >>>>> >>>>> On Tue, 2007-01-02 at 22:54 -0800, Reid Spencer wrote: >>>>>> The attached patch is already contained in the previous >>>>>> cumulative PR950 >>>>>> patch. This contains just today's changes so it can be more >>>>>> easily >>>>>> applied to the Apple internal SVN server. >>>>>> >>>>>> Reid. >>>>>> _______________________________________________ >>>>>> llvm-commits mailing list >>>>>> llvm-commits at cs.uiuc.edu >>>>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits >>>>> _______________________________________________ >>>>> llvm-commits mailing list >>>>> llvm-commits at cs.uiuc.edu >>>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits >>>>> >>>> _______________________________________________ >>>> llvm-commits mailing list >>>> llvm-commits at cs.uiuc.edu >>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits >>> >>> _______________________________________________ >>> llvm-commits mailing list >>> llvm-commits at cs.uiuc.edu >>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits >> >> _______________________________________________ >> llvm-commits mailing list >> llvm-commits at cs.uiuc.edu >> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits >> -------------- next part -------------- A non-text attachment was scrubbed... Name: smime.p7s Type: application/pkcs7-signature Size: 2417 bytes Desc: not available Url : http://lists.cs.uiuc.edu/pipermail/llvm-commits/attachments/20070103/f51dcbec/attachment.bin From reid at x10sys.com Wed Jan 3 11:24:26 2007 From: reid at x10sys.com (Reid Spencer) Date: Wed, 3 Jan 2007 11:24:26 -0600 Subject: [llvm-commits] CVS: llvm/lib/Target/X86/X86TargetAsmInfo.cpp Message-ID: <200701031724.l03HOQ9M029422@zion.cs.uiuc.edu> Changes in directory llvm/lib/Target/X86: X86TargetAsmInfo.cpp updated: 1.15 -> 1.16 --- Log message: Remove two useless bit casts. --- Diffs of the changes: (+0 -6) X86TargetAsmInfo.cpp | 6 ------ 1 files changed, 6 deletions(-) Index: llvm/lib/Target/X86/X86TargetAsmInfo.cpp diff -u llvm/lib/Target/X86/X86TargetAsmInfo.cpp:1.15 llvm/lib/Target/X86/X86TargetAsmInfo.cpp:1.16 --- llvm/lib/Target/X86/X86TargetAsmInfo.cpp:1.15 Wed Jan 3 05:43:14 2007 +++ llvm/lib/Target/X86/X86TargetAsmInfo.cpp Wed Jan 3 11:24:11 2007 @@ -188,14 +188,8 @@ Function *Int = M->getOrInsertFunction(IntName, Ty, Ty, (Type*)0); Value *Op = CI->getOperand(1); - if (CI->getOperand(1)->getType() != Ty) - Op = new BitCastInst(Op, Ty, Op->getName(), CI); - Op = new CallInst(Int, Op, CI->getName(), CI); - if (Op->getType() != CI->getType()) - Op = new BitCastInst(Op, CI->getType(), Op->getName(), CI); - CI->replaceAllUsesWith(Op); CI->eraseFromParent(); return true; From reid at x10sys.com Wed Jan 3 11:25:14 2007 From: reid at x10sys.com (Reid Spencer) Date: Wed, 3 Jan 2007 11:25:14 -0600 Subject: [llvm-commits] CVS: llvm/lib/Target/X86/X86ISelLowering.cpp Message-ID: <200701031725.l03HPEFL029449@zion.cs.uiuc.edu> Changes in directory llvm/lib/Target/X86: X86ISelLowering.cpp updated: 1.309 -> 1.310 --- Log message: Fix a comment that referred to the now defunct ubyte type. --- Diffs of the changes: (+1 -1) X86ISelLowering.cpp | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/lib/Target/X86/X86ISelLowering.cpp diff -u llvm/lib/Target/X86/X86ISelLowering.cpp:1.309 llvm/lib/Target/X86/X86ISelLowering.cpp:1.310 --- llvm/lib/Target/X86/X86ISelLowering.cpp:1.309 Wed Jan 3 05:43:14 2007 +++ llvm/lib/Target/X86/X86ISelLowering.cpp Wed Jan 3 11:24:59 2007 @@ -4453,7 +4453,7 @@ Entry.Ty = IntPtrTy; Entry.isSigned = false; Args.push_back(Entry); - // Extend the ubyte argument to be an int value for the call. + // Extend the unsigned i8 argument to be an int value for the call. Entry.Node = DAG.getNode(ISD::ZERO_EXTEND, MVT::i32, Op.getOperand(2)); Entry.Ty = IntPtrTy; Entry.isSigned = false; From sabre at nondot.org Wed Jan 3 12:17:03 2007 From: sabre at nondot.org (Chris Lattner) Date: Wed, 3 Jan 2007 12:17:03 -0600 Subject: [llvm-commits] CVS: llvm/lib/Target/X86/X86TargetAsmInfo.cpp Message-ID: <200701031817.l03IH3ht030344@zion.cs.uiuc.edu> Changes in directory llvm/lib/Target/X86: X86TargetAsmInfo.cpp updated: 1.16 -> 1.17 --- Log message: Private labels start with .L on linux, not just . --- Diffs of the changes: (+1 -1) X86TargetAsmInfo.cpp | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/lib/Target/X86/X86TargetAsmInfo.cpp diff -u llvm/lib/Target/X86/X86TargetAsmInfo.cpp:1.16 llvm/lib/Target/X86/X86TargetAsmInfo.cpp:1.17 --- llvm/lib/Target/X86/X86TargetAsmInfo.cpp:1.16 Wed Jan 3 11:24:11 2007 +++ llvm/lib/Target/X86/X86TargetAsmInfo.cpp Wed Jan 3 12:16:48 2007 @@ -86,7 +86,7 @@ // bool HasDotLoc; // Defaults to false. // HasDotFile - True if target asm supports .file directives. // bool HasDotFile; // Defaults to false. - PrivateGlobalPrefix = "."; // Prefix for private global symbols + PrivateGlobalPrefix = ".L"; WeakRefDirective = "\t.weak\t"; DwarfRequiresFrameSection = false; DwarfAbbrevSection = "\t.section\t.debug_abbrev,\"\", at progbits"; From sabre at nondot.org Wed Jan 3 13:12:46 2007 From: sabre at nondot.org (Chris Lattner) Date: Wed, 3 Jan 2007 13:12:46 -0600 Subject: [llvm-commits] CVS: llvm/lib/Target/X86/README.txt Message-ID: <200701031912.l03JCkG9031349@zion.cs.uiuc.edu> Changes in directory llvm/lib/Target/X86: README.txt updated: 1.148 -> 1.149 --- Log message: fix testcase. It's not safe to strictly evaluate a load that should be lazy. --- Diffs of the changes: (+2 -1) README.txt | 3 ++- 1 files changed, 2 insertions(+), 1 deletion(-) Index: llvm/lib/Target/X86/README.txt diff -u llvm/lib/Target/X86/README.txt:1.148 llvm/lib/Target/X86/README.txt:1.149 --- llvm/lib/Target/X86/README.txt:1.148 Thu Dec 21 19:03:22 2006 +++ llvm/lib/Target/X86/README.txt Wed Jan 3 13:12:31 2007 @@ -755,8 +755,9 @@ //===---------------------------------------------------------------------===// This could be a single 16-bit load. + int f(char *p) { - if (p[0] == 1 && p[1] == 2) return 1; + if ((p[0] == 1) & (p[1] == 2)) return 1; return 0; } From reid at x10sys.com Wed Jan 3 13:56:30 2007 From: reid at x10sys.com (Reid Spencer) Date: Wed, 3 Jan 2007 13:56:30 -0600 Subject: [llvm-commits] CVS: llvm/Makefile.rules Message-ID: <200701031956.l03JuUTu032096@zion.cs.uiuc.edu> Changes in directory llvm: Makefile.rules updated: 1.417 -> 1.418 --- Log message: Remove the find_rule label from the output of flex. This will break any use of the REJECT macro but we don't use it. This just hushes up a warning in the presence of -Wno-unused. --- Diffs of the changes: (+1 -0) Makefile.rules | 1 + 1 files changed, 1 insertion(+) Index: llvm/Makefile.rules diff -u llvm/Makefile.rules:1.417 llvm/Makefile.rules:1.418 --- llvm/Makefile.rules:1.417 Sat Dec 30 10:31:02 2006 +++ llvm/Makefile.rules Wed Jan 3 13:56:14 2007 @@ -1264,6 +1264,7 @@ $(Verb) $(FLEX) -t $(PROJ_SRC_DIR)/$*.l | \ $(SED) 's/void yyunput/inline void yyunput/' | \ $(SED) 's/void \*yy_flex_realloc/inline void *yy_flex_realloc/' | \ + $(SED) 's/^find_rule: \/\* we branch.*//' | \ $(SED) 's/#define YY_BUF_SIZE 16384/#define YY_BUF_SIZE (16384*64)/' \ > $(PROJ_SRC_DIR)/$*.cpp From dpatel at apple.com Wed Jan 3 13:59:31 2007 From: dpatel at apple.com (Devang Patel) Date: Wed, 3 Jan 2007 11:59:31 -0800 Subject: [llvm-commits] target specific C++ file in llvm-gcc Message-ID: I've applied following patch to support target-specific C++ file in llvm-gcc. - Devang $ cat ~/patch_collection/llvm/R4897246.take2.diff Index: configure =================================================================== --- configure (revision 121791) +++ configure (working copy) @@ -309,7 +309,10 @@ ac_includes_default="\ # include #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os target_noncanonical build_subdir host_subdir target_subdir gcc_version_trigger gcc_version_full gcc_version GENINSRC CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT NO_MINUS_C_MINUS_O OUTPUT_OPTION CPP EGREP strict1_warn warn_cflags WERROR checkingenabled_flag nocommon_flag TREEBROWSER valgrind_path valgrind_path_defines valgrind_command coverage_flags enable_multilib enable_shared TARGET_SYSTEM_ROOT TARGET_SYSTEM_ROOT_DEFINE CROSS_SYSTEM_HEADER_DIR onestep LLVMBASEPATH SET_MAKE AWK LN_S LN RANLIB ac_ct_RANLIB ranlib_flags INSTALL INSTALL_PROGRAM INSTALL_DATA make_compare_target have_mktemp_command MAKEINFO BUILD_INFO GENERATED_MANPAGES FLEX BISON NM AR stage1_cflags COLLECT2_LIBS GNAT_LIBEXC LDEXP_LIB TARGET_GETGROUPS_T LIBICONV LTLIBICONV LIBICONV_DEP manext objext gthread_flags extra_modes_file PACKAGE VERSION USE_NLS LIBINTL LIBINTL_DEP INCINTL XGETTEXT GMSGFMT POSUB CATALOGS cc_for_cross_gnattools CROSS ALL SYSTEM_HEADER_DIR inhibit_libc CC_FOR_BUILD BUILD_CFLAGS STMP_FIXINC STMP_FIXPROTO collect2 libgcc_visibility GGC zlibdir zlibinc MAINT gcc_tooldir dollar slibdir objdir subdirs srcdir all_boot_languages all_compilers all_gtfiles all_gtfiles_files_langs all_gtfiles_files_files all_lang_makefrags all_lang_makefiles all_languages all_stagestuff build_exeext build_install_headers_dir build_xm_file_list build_xm_include_list build_xm_defines check_languages cc_set_by_configure quoted_cc_set_by_configure cpp_install_dir xmake_file tmake_file extra_gcc_objs extra_headers_list extra_objs extra_parts extra_passes extra_programs float_h_file gcc_config_arguments gcc_gxx_include_dir libstdcxx_incdir host_exeext host_xm_file_list host_xm_include_list host_xm_defines out_host_hook_obj install lang_opt_files lang_specs_files lang_tree_files local_prefix md_file objc_boehm_gc out_file out_object_file stage_prefix_set_by_configure quoted_stage_prefix_set_by_configure thread_file tm_file_list tm_include_list tm_defines tm_p_file_list tm_p_include_list xm_file_list xm_include_list xm_defines c_target_objs cxx_target_objs target_cpu_default set_gcc_lib_path GMPLIBS GMPINC LIBOBJS LTLIBOBJS' +# APPLE LOCAL begin LLVM +# Add out_cxx_file +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os target_noncanonical build_subdir host_subdir target_subdir gcc_version_trigger gcc_version_full gcc_version GENINSRC CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT NO_MINUS_C_MINUS_O OUTPUT_OPTION CPP EGREP strict1_warn warn_cflags WERROR checkingenabled_flag nocommon_flag TREEBROWSER valgrind_path valgrind_path_defines valgrind_command coverage_flags enable_multilib enable_shared TARGET_SYSTEM_ROOT TARGET_SYSTEM_ROOT_DEFINE CROSS_SYSTEM_HEADER_DIR onestep LLVMBASEPATH SET_MAKE AWK LN_S LN RANLIB ac_ct_RANLIB ranlib_flags INSTALL INSTALL_PROGRAM INSTALL_DATA make_compare_target have_mktemp_command MAKEINFO BUILD_INFO GENERATED_MANPAGES FLEX BISON NM AR stage1_cflags COLLECT2_LIBS GNAT_LIBEXC LDEXP_LIB TARGET_GETGROUPS_T LIBICONV LTLIBICONV LIBICONV_DEP manext objext gthread_flags extra_modes_file PACKAGE VERSION USE_NLS LIBINTL LIBINTL_DEP INCINTL XGETTEXT GMSGFMT POSUB CATALOGS cc_for_cross_gnattools CROSS ALL SYSTEM_HEADER_DIR inhibit_libc CC_FOR_BUILD BUILD_CFLAGS STMP_FIXINC STMP_FIXPROTO collect2 libgcc_visibility GGC zlibdir zlibinc MAINT gcc_tooldir dollar slibdir objdir subdirs srcdir all_boot_languages all_compilers all_gtfiles all_gtfiles_files_langs all_gtfiles_files_files all_lang_makefrags all_lang_makefiles all_languages all_stagestuff build_exeext build_install_headers_dir build_xm_file_list build_xm_include_list build_xm_defines check_languages cc_set_by_configure quoted_cc_set_by_configure cpp_install_dir xmake_file tmake_file extra_gcc_objs extra_headers_list extra_objs extra_parts extra_passes extra_programs float_h_file gcc_config_arguments gcc_gxx_include_dir libstdcxx_incdir host_exeext host_xm_file_list host_xm_include_list host_xm_defines out_host_hook_obj install lang_opt_files lang_specs_files lang_tree_files local_prefix md_file objc_boehm_gc out_file out_cxx_file out_object_file out_cxx_object_file stage_prefix_set_by_configure quoted_stage_prefix_set_by_configure thread_file tm_file_list tm_include_list tm_defines tm_p_file_list tm_p_include_list xm_file_list xm_include_list xm_defines c_target_objs cxx_target_objs target_cpu_default set_gcc_lib_path GMPLIBS GMPINC LIBOBJS LTLIBOBJS' +# APPLE LOCAL end LLVM ac_subst_files='language_hooks' # Initialize some variables set by options. @@ -12200,6 +12203,8 @@ fi # Say what files are being used for the output code and MD file. echo "Using \`$srcdir/config/$out_file' for machine-specific logic." +# APPLE LOCAL LLVM +echo "Using \`$srcdir/config/$out_cxx_file' for machine-specific C++ logic." echo "Using \`$srcdir/config/$md_file' as machine description file." # If any of the xm_file variables contain nonexistent files, warn @@ -12909,6 +12914,8 @@ cc_for_cross_gnattools=${CC} out_object_file=`basename $out_file .c`.o +# APPLE LOCAL LLVM +out_cxx_object_file=`basename $out_cxx_file .cpp`.o tm_file_list= tm_include_list= @@ -16615,7 +16622,11 @@ s, at local_prefix@,$local_prefix,;t t s, at md_file@,$md_file,;t t s, at objc_boehm_gc@,$objc_boehm_gc,;t t s, at out_file@,$out_file,;t t +# APPLE LOCAL LLVM +s, at out_cxx_file@,$out_cxx_file,;t t s, at out_object_file@,$out_object_file,;t t +# APPLE LOCAL LLVM +s, at out_cxx_object_file@,$out_cxx_object_file,;t t s, at stage_prefix_set_by_configure@,$stage_prefix_set_by_configure,;t t s, at quoted_stage_prefix_set_by_configure@, $quoted_stage_prefix_set_by_configure,;t t s, at thread_file@,$thread_file,;t t Index: config.gcc =================================================================== --- config.gcc (revision 121791) +++ config.gcc (working copy) @@ -64,10 +64,13 @@ # defining header ${cpu_type}/${cpu_type.h}. # # tm_p_file Location of file with declarations for functions -# in $out_file. +# APPLE LOCAL LLVM +# in $out_file & $out_cxx_file # # out_file The name of the machine description C support # file, if different from "$cpu_type/$cpu_type.c". +# APPLE LOCAL LLVM +# out_cxx_file The name of the machine description C+ + support file. # # md_file The name of the machine-description file, if # different from "$cpu_type/$cpu_type.md". @@ -144,6 +147,8 @@ # system normally uses GNU ld. out_file= +# APPLE LOCAL LLVM +out_cxx_file= tmake_file= extra_headers= extra_passes= @@ -961,6 +966,9 @@ i[34567]86-*-darwin*) # APPLE LOCAL end mainline 2005-10-02 4218570 # APPLE LOCAL 4099000 tmake_file="${tmake_file} i386/t-darwin" +# APPLE LOCAL begin LLVM + out_cxx_file=i386/llvm-i386.cpp +# APPLE LOCAL end LLVM # APPLE LOCAL 4126124 need_64bit_hwint=yes ;; @@ -2842,6 +2850,8 @@ case ${target} in target_cpu_default2="\\\"$with_cpu\\\"" fi out_file=rs6000/rs6000.c + # APPLE LOCAL begin LLVM + out_cxx_file=rs6000/llvm-rs6000.cpp c_target_objs="${c_target_objs} rs6000-c.o" cxx_target_objs="${cxx_target_objs} rs6000-c.o" tmake_file="rs6000/t-rs6000 ${tmake_file}" Index: Makefile.in =================================================================== --- Makefile.in (revision 121791) +++ Makefile.in (working copy) @@ -428,7 +428,11 @@ TARGET_SYSTEM_ROOT = @TARGET_SYSTEM_ROOT xmake_file=@xmake_file@ tmake_file=@tmake_file@ out_file=$(srcdir)/config/@out_file@ +# APPLE LOCAL LLVM +out_cxx_file=$(srcdir)/config/@out_cxx_file@ out_object_file=@out_object_file@ +# APPLE LOCAL LLVM +out_cxx_object_file=@out_cxx_object_file@ md_file=$(srcdir)/config/@md_file@ tm_file_list=@tm_file_list@ tm_include_list=@tm_include_list@ @@ -1019,7 +1023,8 @@ OBJS-common = \ lambda-trans.o lambda-code.o tree-loop-linear.o # APPLE LOCAL end lno, loops-to-memset -OBJS-md = $(out_object_file) +# APPLE LOCAL LLVM +OBJS-md = $(out_object_file) $(out_cxx_object_file) OBJS-archive = $(EXTRA_OBJS) $(host_hook_obj) tree- inline.o \ cgraph.o cgraphunit.o tree-nomudflap.o @@ -1109,7 +1114,8 @@ endif endif # APPLE LOCAL end LLVM -OBJS = $(OBJS-common) $(out_object_file) $(OBJS-archive) +# APPLE LOCAL LLVM +OBJS = $(OBJS-common) $(out_object_file) $(OBJS-archive) $ (out_cxx_object_file) OBJS-onestep = libbackend.o $(OBJS-archive) @@ -2465,6 +2471,15 @@ $(out_object_file): $(out_file) $(CONFIG langhooks.h $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ $(out_file) $(OUTPUT_OPTION) +# APPLE LOCAL begin LLVM +$(out_cxx_object_file): $(out_cxx_file) $(CONFIG_H) coretypes.h $ (TM_H) $(TREE_H) $(GGC_H) \ + $(RTL_H) $(REGS_H) hard-reg-set.h real.h insn-config.h conditions.h \ + output.h $(INSN_ATTR_H) $(SYSTEM_H) toplev.h $(TARGET_H) libfuncs.h \ + $(TARGET_DEF_H) function.h $(SCHED_INT_H) $(TM_P_H) $(EXPR_H) $ (OPTABS_H) \ + langhooks.h + $(CXX) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ + $(out_cxx_file) $(OUTPUT_OPTION) +# APPLE LOCAL end LLVM # Build auxiliary files that support ecoff format. mips-tfile: mips-tfile.o version.o $(LIBDEPS) @@ -2481,7 +2496,8 @@ mips-tdump.o : mips-tdump.c $(CONFIG_H) ifeq ($(LLVMOBJDIR),) # FIXME: writing proper dependencies for this is a *LOT* of work. -libbackend.o : $(OBJS-common:.o=.c) $(out_file) \ +# APPLE LOCAL LLVM +libbackend.o : $(OBJS-common:.o=.c) $(out_file) $(out_cxx_file) \ insn-config.h insn-flags.h insn-codes.h insn-constants.h \ insn-attr.h $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ Index: config/i386/llvm-i386.cpp =================================================================== Index: config/rs6000/llvm-rs6000.cpp =================================================================== $ From reid at x10sys.com Wed Jan 3 15:00:07 2007 From: reid at x10sys.com (Reid Spencer) Date: Wed, 3 Jan 2007 15:00:07 -0600 Subject: [llvm-commits] CVS: llvm/autoconf/m4/sanity_check.m4 Message-ID: <200701032100.l03L07kl000644@zion.cs.uiuc.edu> Changes in directory llvm/autoconf/m4: sanity_check.m4 updated: 1.3 -> 1.4 --- Log message: Fix a configure warning noticed by Duncan Sands. --- Diffs of the changes: (+1 -0) sanity_check.m4 | 1 + 1 files changed, 1 insertion(+) Index: llvm/autoconf/m4/sanity_check.m4 diff -u llvm/autoconf/m4/sanity_check.m4:1.3 llvm/autoconf/m4/sanity_check.m4:1.4 --- llvm/autoconf/m4/sanity_check.m4:1.3 Mon Dec 4 14:28:07 2006 +++ llvm/autoconf/m4/sanity_check.m4 Wed Jan 3 14:59:52 2007 @@ -9,6 +9,7 @@ AC_DEFUN([CHECK_PROGRAM_SANITY], [ AC_MSG_CHECKING([sanity for program ]$1) +sanity="0" sanity_path=`which $1 2>/dev/null` if test "$?" -eq 0 -a -x "$sanity_path" ; then sanity=`$1 $2 2>&1 | grep "$3"` From isanbard at gmail.com Wed Jan 3 16:37:46 2007 From: isanbard at gmail.com (Bill Wendling) Date: Wed, 3 Jan 2007 16:37:46 -0600 Subject: [llvm-commits] CVS: llvm/include/llvm/Support/Debug.h Streams.h Message-ID: <200701032237.l03MbkJl002275@zion.cs.uiuc.edu> Changes in directory llvm/include/llvm/Support: Debug.h updated: 1.13 -> 1.14 Streams.h updated: 1.7 -> 1.8 --- Log message: The previous implementation of LLVM Streams wasn't removing symbols. This one should. --- Diffs of the changes: (+1 -7) Debug.h | 2 +- Streams.h | 6 ------ 2 files changed, 1 insertion(+), 7 deletions(-) Index: llvm/include/llvm/Support/Debug.h diff -u llvm/include/llvm/Support/Debug.h:1.13 llvm/include/llvm/Support/Debug.h:1.14 --- llvm/include/llvm/Support/Debug.h:1.13 Sat Dec 16 23:15:12 2006 +++ llvm/include/llvm/Support/Debug.h Wed Jan 3 16:37:27 2007 @@ -68,7 +68,7 @@ OStream &getErrorOutputStream(const char *DebugType); #ifdef NDEBUG -#define DOUT cnull +#define DOUT OStream(0) #else #define DOUT getErrorOutputStream(DEBUG_TYPE) #endif Index: llvm/include/llvm/Support/Streams.h diff -u llvm/include/llvm/Support/Streams.h:1.7 llvm/include/llvm/Support/Streams.h:1.8 --- llvm/include/llvm/Support/Streams.h:1.7 Sat Dec 16 23:15:12 2006 +++ llvm/include/llvm/Support/Streams.h Wed Jan 3 16:37:27 2007 @@ -39,11 +39,6 @@ return *this; } -// inline BaseStream &operator << (std::ios &(*Func)(std::ios&)) { -// if (Stream) *Stream << Func; -// return *this; -// } - template BaseStream &operator << (const Ty &Thing) { if (Stream) *Stream << Thing; @@ -68,7 +63,6 @@ typedef BaseStream IStream; typedef BaseStream StringStream; - extern OStream cnull; extern OStream cout; extern OStream cerr; extern IStream cin; From isanbard at gmail.com Wed Jan 3 16:37:46 2007 From: isanbard at gmail.com (Bill Wendling) Date: Wed, 3 Jan 2007 16:37:46 -0600 Subject: [llvm-commits] CVS: llvm/lib/Support/Debug.cpp Streams.cpp Message-ID: <200701032237.l03MbkXB002280@zion.cs.uiuc.edu> Changes in directory llvm/lib/Support: Debug.cpp updated: 1.11 -> 1.12 Streams.cpp updated: 1.3 -> 1.4 --- Log message: The previous implementation of LLVM Streams wasn't removing symbols. This one should. --- Diffs of the changes: (+2 -2) Debug.cpp | 3 ++- Streams.cpp | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) Index: llvm/lib/Support/Debug.cpp diff -u llvm/lib/Support/Debug.cpp:1.11 llvm/lib/Support/Debug.cpp:1.12 --- llvm/lib/Support/Debug.cpp:1.11 Sat Dec 16 23:15:13 2006 +++ llvm/lib/Support/Debug.cpp Wed Jan 3 16:37:27 2007 @@ -69,8 +69,9 @@ // program from having to have hundreds of static c'tor/d'tors for them. // OStream &llvm::getErrorOutputStream(const char *DebugType) { + static OStream cnoout(0); if (DebugFlag && isCurrentDebugType(DebugType)) return cerr; else - return cnull; + return cnoout; } Index: llvm/lib/Support/Streams.cpp diff -u llvm/lib/Support/Streams.cpp:1.3 llvm/lib/Support/Streams.cpp:1.4 --- llvm/lib/Support/Streams.cpp:1.3 Sat Dec 16 23:15:13 2006 +++ llvm/lib/Support/Streams.cpp Wed Jan 3 16:37:27 2007 @@ -16,7 +16,6 @@ #include using namespace llvm; -OStream llvm::cnull; OStream llvm::cout(std::cout); OStream llvm::cerr(std::cerr); IStream llvm::cin(std::cin); From reid at x10sys.com Wed Jan 3 17:44:11 2007 From: reid at x10sys.com (Reid Spencer) Date: Wed, 3 Jan 2007 17:44:11 -0600 Subject: [llvm-commits] CVS: llvm/tools/llvm-upgrade/UpgradeParser.y Message-ID: <200701032344.l03NiBXZ003474@zion.cs.uiuc.edu> Changes in directory llvm/tools/llvm-upgrade: UpgradeParser.y updated: 1.30 -> 1.31 --- Log message: Finish implementation of variable renaming to handle collapsed type planes by correctly handling up references and enumerated types. Previously there was some confusion of these two. Thanks to Chris Lattner for demistifying llvm up references. --- Diffs of the changes: (+71 -35) UpgradeParser.y | 106 +++++++++++++++++++++++++++++++++++++------------------- 1 files changed, 71 insertions(+), 35 deletions(-) Index: llvm/tools/llvm-upgrade/UpgradeParser.y diff -u llvm/tools/llvm-upgrade/UpgradeParser.y:1.30 llvm/tools/llvm-upgrade/UpgradeParser.y:1.31 --- llvm/tools/llvm-upgrade/UpgradeParser.y:1.30 Tue Jan 2 00:33:02 2007 +++ llvm/tools/llvm-upgrade/UpgradeParser.y Wed Jan 3 17:43:55 2007 @@ -78,24 +78,26 @@ TypeInfo* ResolveType(TypeInfo*& Ty) { if (Ty->isUnresolved()) { - TypeMap::iterator I = NamedTypes.find(Ty->getNewTy()); - if (I != NamedTypes.end()) { - Ty = I->second.clone(); - return Ty; - } else { - std::string msg("Cannot resolve type: "); - msg += Ty->getNewTy(); - yyerror(msg.c_str()); - } - } else if (Ty->isNumeric()) { - unsigned ref = atoi(&((Ty->getNewTy().c_str())[1])); // Skip the '\\' - if (ref < EnumeratedTypes.size()) { - Ty = EnumeratedTypes[ref].clone(); - return Ty; + if (Ty->getNewTy()[0] == '%' && isdigit(Ty->getNewTy()[1])) { + unsigned ref = atoi(&((Ty->getNewTy().c_str())[1])); // skip the % + if (ref < EnumeratedTypes.size()) { + Ty = &EnumeratedTypes[ref]; + return Ty; + } else { + std::string msg("Can't resolve numbered type: "); + msg += Ty->getNewTy(); + yyerror(msg.c_str()); + } } else { - std::string msg("Can't resolve type: "); - msg += Ty->getNewTy(); - yyerror(msg.c_str()); + TypeMap::iterator I = NamedTypes.find(Ty->getNewTy()); + if (I != NamedTypes.end()) { + Ty = &I->second; + return Ty; + } else { + std::string msg("Cannot resolve type: "); + msg += Ty->getNewTy(); + yyerror(msg.c_str()); + } } } // otherwise its already resolved. @@ -293,18 +295,35 @@ return PFTy->clone(); } +typedef std::vector UpRefStack; +static TypeInfo* ResolveUpReference(TypeInfo* Ty, UpRefStack* stack) { + assert(Ty->isUpReference() && "Can't resolve a non-upreference"); + unsigned upref = atoi(&((Ty->getNewTy().c_str())[1])); // skip the slash + assert(upref < stack->size() && "Invalid up reference"); + return (*stack)[upref - stack->size() - 1]; +} + static TypeInfo* getGEPIndexedType(TypeInfo* PTy, ValueList* idxs) { - ResolveType(PTy); + TypeInfo* Result = ResolveType(PTy); assert(PTy->isPointer() && "GEP Operand is not a pointer?"); - TypeInfo* Result = PTy->getElementType(); // just skip first index - ResolveType(Result); - for (unsigned i = 1; i < idxs->size(); ++i) { + UpRefStack stack; + for (unsigned i = 0; i < idxs->size(); ++i) { if (Result->isComposite()) { Result = Result->getIndexedType((*idxs)[i]); ResolveType(Result); + stack.push_back(Result); } else yyerror("Invalid type for index"); } + // Resolve upreferences so we can return a more natural type + if (Result->isPointer()) { + if (Result->getElementType()->isUpReference()) { + stack.push_back(Result); + Result = ResolveUpReference(Result->getElementType(), &stack); + } + } else if (Result->isUpReference()) { + Result = ResolveUpReference(Result->getElementType(), &stack); + } return Result->getPointerType(); } @@ -335,17 +354,41 @@ // Resolve the type ResolveType(Ty); + // Remove as many levels of pointer nesting that we have. + if (Ty->isPointer()) { + // Avoid infinite loops in recursive types + TypeInfo* Last = 0; + while (Ty->isPointer() && Last != Ty) { + Last = Ty; + Ty = Ty->getElementType(); + ResolveType(Ty); + } + } + // Default the result to the current name std::string Result = *Name; + // Now deal with the underlying type if (Ty->isInteger()) { // If its an integer type, make the name unique Result = makeUniqueName(Name, Ty->isSigned()); - } else if (Ty->isPointer()) { - while (Ty->isPointer()) - Ty = Ty->getElementType(); + } else if (Ty->isArray() || Ty->isPacked()) { + Ty = Ty->getElementType(); if (Ty->isInteger()) Result = makeUniqueName(Name, Ty->isSigned()); + } else if (Ty->isStruct()) { + // Scan the fields and count the signed and unsigned fields + int isSigned = 0; + for (unsigned i = 0; i < Ty->getNumStructElements(); ++i) { + TypeInfo* Tmp = Ty->getElement(i); + if (Tmp->isInteger()) + if (Tmp->isSigned()) + isSigned++; + else + isSigned--; + } + if (isSigned != 0) + Result = makeUniqueName(Name, isSigned > 0); } return Result; } @@ -536,7 +579,7 @@ } | '\\' EUINT64VAL { // Type UpReference $2->insert(0, "\\"); - $$ = new TypeInfo($2, NumericTy); + $$ = new TypeInfo($2, UpRefTy); } | UpRTypesV '(' ArgTypeListI ')' { // Function derived type? std::string newTy( $1->getNewTy() + "("); @@ -550,21 +593,18 @@ } newTy += ")"; $$ = new TypeInfo(new std::string(newTy), $1, $3); - EnumeratedTypes.push_back(*$$); } | '[' EUINT64VAL 'x' UpRTypes ']' { // Sized array type? $2->insert(0,"[ "); *$2 += " x " + $4->getNewTy() + " ]"; uint64_t elems = atoi($2->c_str()); $$ = new TypeInfo($2, ArrayTy, $4, elems); - EnumeratedTypes.push_back(*$$); } | '<' EUINT64VAL 'x' UpRTypes '>' { // Packed array type? $2->insert(0,"< "); *$2 += " x " + $4->getNewTy() + " >"; uint64_t elems = atoi($2->c_str()); $$ = new TypeInfo($2, PackedTy, $4, elems); - EnumeratedTypes.push_back(*$$); } | '{' TypeListI '}' { // Structure type? std::string newTy("{"); @@ -575,11 +615,9 @@ } newTy += "}"; $$ = new TypeInfo(new std::string(newTy), StructTy, $2); - EnumeratedTypes.push_back(*$$); } | '{' '}' { // Empty structure type? $$ = new TypeInfo(new std::string("{}"), StructTy, new TypeList()); - EnumeratedTypes.push_back(*$$); } | '<' '{' TypeListI '}' '>' { // Packed Structure type? std::string newTy("<{"); @@ -590,15 +628,12 @@ } newTy += "}>"; $$ = new TypeInfo(new std::string(newTy), PackedStructTy, $3); - EnumeratedTypes.push_back(*$$); } | '<' '{' '}' '>' { // Empty packed structure type? $$ = new TypeInfo(new std::string("<{}>"), PackedStructTy, new TypeList()); - EnumeratedTypes.push_back(*$$); } | UpRTypes '*' { // Pointer type? $$ = $1->getPointerType(); - EnumeratedTypes.push_back(*$$); }; // TypeList - Used for struct declarations and as a basis for function type @@ -745,7 +780,7 @@ $$ = new std::string(*$1); *$$ += "( " + source + " to " + $5->getNewTy() + ")"; } - delete $1; $3.destroy(); delete $4; delete $5; + delete $1; $3.destroy(); delete $4; } | GETELEMENTPTR '(' ConstVal IndexList ')' { *$1 += "(" + *$3.cnst; @@ -1129,6 +1164,7 @@ // type immediately preceeds the value reference, and allows complex constant // pool references (for things like: 'ret [2 x int] [ int 12, int 42]') ResolvedVal : Types ValueRef { + ResolveType($1); std::string Name = getUniqueName($2.val, $1); $$ = $2; delete $$.val; @@ -1414,7 +1450,7 @@ *$1 += " " + *$2.val + ", " + *$4.val; $$.val = $1; ResolveType($2.type); - $$.type = $2.type->getElementType()->clone(); + $$.type = $2.type->getElementType(); delete $2.val; $4.destroy(); } | INSERTELEMENT ResolvedVal ',' ResolvedVal ',' ResolvedVal { From reid at x10sys.com Wed Jan 3 17:45:33 2007 From: reid at x10sys.com (Reid Spencer) Date: Wed, 3 Jan 2007 17:45:33 -0600 Subject: [llvm-commits] CVS: llvm/tools/llvm-upgrade/ParserInternals.h Message-ID: <200701032345.l03NjXku003512@zion.cs.uiuc.edu> Changes in directory llvm/tools/llvm-upgrade: ParserInternals.h updated: 1.11 -> 1.12 --- Log message: Implement many new type features including upreferences, proper retention of structure contents, counts of packed and array types, etc. --- Diffs of the changes: (+15 -4) ParserInternals.h | 19 +++++++++++++++---- 1 files changed, 15 insertions(+), 4 deletions(-) Index: llvm/tools/llvm-upgrade/ParserInternals.h diff -u llvm/tools/llvm-upgrade/ParserInternals.h:1.11 llvm/tools/llvm-upgrade/ParserInternals.h:1.12 --- llvm/tools/llvm-upgrade/ParserInternals.h:1.11 Mon Jan 1 23:44:33 2007 +++ llvm/tools/llvm-upgrade/ParserInternals.h Wed Jan 3 17:45:17 2007 @@ -50,7 +50,7 @@ enum Types { BoolTy, SByteTy, UByteTy, ShortTy, UShortTy, IntTy, UIntTy, LongTy, ULongTy, FloatTy, DoubleTy, PointerTy, PackedTy, ArrayTy, StructTy, PackedStructTy, - OpaqueTy, VoidTy, LabelTy, FunctionTy, UnresolvedTy, NumericTy + OpaqueTy, VoidTy, LabelTy, FunctionTy, UnresolvedTy, UpRefTy }; /// This type is used to keep track of the signedness of values. Instead @@ -152,7 +152,7 @@ } bool isUnresolved() const { return oldTy == UnresolvedTy; } - bool isNumeric() const { return oldTy == NumericTy; } + bool isUpReference() const { return oldTy == UpRefTy; } bool isVoid() const { return oldTy == VoidTy; } bool isBool() const { return oldTy == BoolTy; } bool isSigned() const { @@ -233,6 +233,17 @@ return 0; } + unsigned getNumStructElements() const { + return (elements ? elements->size() : 0); + } + + TypeInfo* getElement(unsigned idx) { + if (elements) + if (idx < elements->size()) + return (*elements)[idx]; + return 0; + } + private: std::string* newTy; Types oldTy; @@ -246,11 +257,11 @@ struct ConstInfo { std::string *cnst; TypeInfo *type; - void destroy() { delete cnst; delete type; } + void destroy() { delete cnst; } }; typedef std::vector ValueList; -inline void ValueInfo::destroy() { delete val; delete type; } +inline void ValueInfo::destroy() { delete val; } #endif From reid at x10sys.com Wed Jan 3 17:45:57 2007 From: reid at x10sys.com (Reid Spencer) Date: Wed, 3 Jan 2007 17:45:57 -0600 Subject: [llvm-commits] CVS: llvm/tools/llvm-upgrade/UpgradeLexer.cpp UpgradeParser.cpp UpgradeParser.cpp.cvs UpgradeParser.h UpgradeParser.h.cvs UpgradeParser.y.cvs Message-ID: <200701032345.l03NjvOv003546@zion.cs.uiuc.edu> Changes in directory llvm/tools/llvm-upgrade: UpgradeLexer.cpp updated: 1.13 -> 1.14 UpgradeParser.cpp updated: 1.32 -> 1.33 UpgradeParser.cpp.cvs updated: 1.30 -> 1.31 UpgradeParser.h updated: 1.24 -> 1.25 UpgradeParser.h.cvs updated: 1.22 -> 1.23 UpgradeParser.y.cvs updated: 1.29 -> 1.30 --- Log message: Regenerate. --- Diffs of the changes: (+609 -501) UpgradeLexer.cpp | 4 UpgradeParser.cpp | 498 ++++++++++++++++++++++++++------------------------ UpgradeParser.cpp.cvs | 498 ++++++++++++++++++++++++++------------------------ UpgradeParser.h | 2 UpgradeParser.h.cvs | 2 UpgradeParser.y.cvs | 106 +++++++--- 6 files changed, 609 insertions(+), 501 deletions(-) Index: llvm/tools/llvm-upgrade/UpgradeLexer.cpp diff -u llvm/tools/llvm-upgrade/UpgradeLexer.cpp:1.13 llvm/tools/llvm-upgrade/UpgradeLexer.cpp:1.14 --- llvm/tools/llvm-upgrade/UpgradeLexer.cpp:1.13 Mon Jan 1 23:45:11 2007 +++ llvm/tools/llvm-upgrade/UpgradeLexer.cpp Wed Jan 3 17:45:42 2007 @@ -20,7 +20,7 @@ /* A lexical scanner generated by flex*/ /* Scanner skeleton version: - * $Header: /var/cvs/llvm/llvm/tools/llvm-upgrade/UpgradeLexer.cpp,v 1.13 2007/01/02 05:45:11 reid Exp $ + * $Header: /var/cvs/llvm/llvm/tools/llvm-upgrade/UpgradeLexer.cpp,v 1.14 2007/01/03 23:45:42 reid Exp $ */ #define FLEX_SCANNER @@ -1196,7 +1196,7 @@ yy_find_action: yy_current_state = *--yy_state_ptr; yy_lp = yy_accept[yy_current_state]; -find_rule: /* we branch to this label when backing up */ + for ( ; ; ) /* until we find what rule we matched */ { if ( yy_lp && yy_lp < yy_accept[yy_current_state + 1] ) Index: llvm/tools/llvm-upgrade/UpgradeParser.cpp diff -u llvm/tools/llvm-upgrade/UpgradeParser.cpp:1.32 llvm/tools/llvm-upgrade/UpgradeParser.cpp:1.33 --- llvm/tools/llvm-upgrade/UpgradeParser.cpp:1.32 Tue Jan 2 00:34:08 2007 +++ llvm/tools/llvm-upgrade/UpgradeParser.cpp Wed Jan 3 17:45:42 2007 @@ -436,24 +436,26 @@ TypeInfo* ResolveType(TypeInfo*& Ty) { if (Ty->isUnresolved()) { - TypeMap::iterator I = NamedTypes.find(Ty->getNewTy()); - if (I != NamedTypes.end()) { - Ty = I->second.clone(); - return Ty; - } else { - std::string msg("Cannot resolve type: "); - msg += Ty->getNewTy(); - yyerror(msg.c_str()); - } - } else if (Ty->isNumeric()) { - unsigned ref = atoi(&((Ty->getNewTy().c_str())[1])); // Skip the '\\' - if (ref < EnumeratedTypes.size()) { - Ty = EnumeratedTypes[ref].clone(); - return Ty; + if (Ty->getNewTy()[0] == '%' && isdigit(Ty->getNewTy()[1])) { + unsigned ref = atoi(&((Ty->getNewTy().c_str())[1])); // skip the % + if (ref < EnumeratedTypes.size()) { + Ty = &EnumeratedTypes[ref]; + return Ty; + } else { + std::string msg("Can't resolve numbered type: "); + msg += Ty->getNewTy(); + yyerror(msg.c_str()); + } } else { - std::string msg("Can't resolve type: "); - msg += Ty->getNewTy(); - yyerror(msg.c_str()); + TypeMap::iterator I = NamedTypes.find(Ty->getNewTy()); + if (I != NamedTypes.end()) { + Ty = &I->second; + return Ty; + } else { + std::string msg("Cannot resolve type: "); + msg += Ty->getNewTy(); + yyerror(msg.c_str()); + } } } // otherwise its already resolved. @@ -651,18 +653,35 @@ return PFTy->clone(); } +typedef std::vector UpRefStack; +static TypeInfo* ResolveUpReference(TypeInfo* Ty, UpRefStack* stack) { + assert(Ty->isUpReference() && "Can't resolve a non-upreference"); + unsigned upref = atoi(&((Ty->getNewTy().c_str())[1])); // skip the slash + assert(upref < stack->size() && "Invalid up reference"); + return (*stack)[upref - stack->size() - 1]; +} + static TypeInfo* getGEPIndexedType(TypeInfo* PTy, ValueList* idxs) { - ResolveType(PTy); + TypeInfo* Result = ResolveType(PTy); assert(PTy->isPointer() && "GEP Operand is not a pointer?"); - TypeInfo* Result = PTy->getElementType(); // just skip first index - ResolveType(Result); - for (unsigned i = 1; i < idxs->size(); ++i) { + UpRefStack stack; + for (unsigned i = 0; i < idxs->size(); ++i) { if (Result->isComposite()) { Result = Result->getIndexedType((*idxs)[i]); ResolveType(Result); + stack.push_back(Result); } else yyerror("Invalid type for index"); } + // Resolve upreferences so we can return a more natural type + if (Result->isPointer()) { + if (Result->getElementType()->isUpReference()) { + stack.push_back(Result); + Result = ResolveUpReference(Result->getElementType(), &stack); + } + } else if (Result->isUpReference()) { + Result = ResolveUpReference(Result->getElementType(), &stack); + } return Result->getPointerType(); } @@ -693,17 +712,41 @@ // Resolve the type ResolveType(Ty); + // Remove as many levels of pointer nesting that we have. + if (Ty->isPointer()) { + // Avoid infinite loops in recursive types + TypeInfo* Last = 0; + while (Ty->isPointer() && Last != Ty) { + Last = Ty; + Ty = Ty->getElementType(); + ResolveType(Ty); + } + } + // Default the result to the current name std::string Result = *Name; + // Now deal with the underlying type if (Ty->isInteger()) { // If its an integer type, make the name unique Result = makeUniqueName(Name, Ty->isSigned()); - } else if (Ty->isPointer()) { - while (Ty->isPointer()) - Ty = Ty->getElementType(); + } else if (Ty->isArray() || Ty->isPacked()) { + Ty = Ty->getElementType(); if (Ty->isInteger()) Result = makeUniqueName(Name, Ty->isSigned()); + } else if (Ty->isStruct()) { + // Scan the fields and count the signed and unsigned fields + int isSigned = 0; + for (unsigned i = 0; i < Ty->getNumStructElements(); ++i) { + TypeInfo* Tmp = Ty->getElement(i); + if (Tmp->isInteger()) + if (Tmp->isSigned()) + isSigned++; + else + isSigned--; + } + if (isSigned != 0) + Result = makeUniqueName(Name, isSigned > 0); } return Result; } @@ -729,7 +772,7 @@ #endif #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) -#line 357 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 400 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" typedef union YYSTYPE { std::string* String; TypeInfo* Type; @@ -739,7 +782,7 @@ TypeList* TypeVec; } YYSTYPE; /* Line 196 of yacc.c. */ -#line 743 "UpgradeParser.tab.c" +#line 786 "UpgradeParser.tab.c" # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_TRIVIAL 1 @@ -751,7 +794,7 @@ /* Line 219 of yacc.c. */ -#line 755 "UpgradeParser.tab.c" +#line 798 "UpgradeParser.tab.c" #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__) # define YYSIZE_T __SIZE_TYPE__ @@ -1107,37 +1150,37 @@ /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const unsigned short int yyrline[] = { - 0, 422, 422, 422, 423, 423, 427, 427, 427, 427, - 427, 427, 427, 428, 428, 428, 428, 429, 429, 429, - 430, 430, 430, 430, 430, 430, 431, 431, 431, 431, - 431, 431, 431, 431, 431, 431, 432, 432, 432, 432, - 432, 432, 432, 432, 432, 432, 433, 433, 433, 433, - 433, 433, 434, 434, 434, 434, 435, 435, 435, 435, - 435, 435, 435, 436, 436, 436, 436, 436, 436, 441, - 441, 441, 441, 442, 442, 442, 442, 443, 443, 444, - 444, 447, 450, 455, 455, 455, 455, 455, 455, 456, - 457, 460, 460, 460, 460, 460, 461, 462, 467, 472, - 473, 476, 477, 485, 491, 492, 495, 496, 505, 506, - 519, 519, 520, 520, 521, 525, 525, 525, 525, 525, - 525, 525, 526, 526, 526, 526, 526, 528, 531, 534, - 537, 541, 555, 562, 569, 580, 584, 595, 599, 608, - 612, 619, 620, 625, 630, 640, 646, 651, 657, 663, - 669, 674, 680, 686, 693, 699, 705, 711, 717, 723, - 729, 737, 750, 762, 767, 773, 778, 784, 789, 794, - 802, 807, 812, 822, 827, 832, 832, 842, 847, 850, - 855, 859, 863, 865, 865, 868, 878, 883, 888, 898, - 908, 918, 928, 933, 938, 943, 945, 945, 948, 953, - 960, 965, 972, 979, 984, 985, 993, 993, 994, 994, - 996, 1005, 1009, 1013, 1016, 1021, 1024, 1027, 1045, 1046, - 1049, 1060, 1061, 1063, 1072, 1073, 1074, 1078, 1091, 1092, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1096, 1097, 1102, - 1103, 1112, 1112, 1116, 1121, 1131, 1140, 1143, 1151, 1155, - 1160, 1163, 1169, 1169, 1171, 1176, 1181, 1186, 1195, 1203, - 1210, 1233, 1238, 1244, 1250, 1258, 1276, 1284, 1293, 1297, - 1304, 1305, 1309, 1314, 1317, 1326, 1334, 1343, 1351, 1359, - 1364, 1373, 1401, 1407, 1413, 1420, 1426, 1432, 1438, 1456, - 1461, 1462, 1466, 1467, 1470, 1478, 1487, 1495, 1504, 1510, - 1519, 1528 + 0, 465, 465, 465, 466, 466, 470, 470, 470, 470, + 470, 470, 470, 471, 471, 471, 471, 472, 472, 472, + 473, 473, 473, 473, 473, 473, 474, 474, 474, 474, + 474, 474, 474, 474, 474, 474, 475, 475, 475, 475, + 475, 475, 475, 475, 475, 475, 476, 476, 476, 476, + 476, 476, 477, 477, 477, 477, 478, 478, 478, 478, + 478, 478, 478, 479, 479, 479, 479, 479, 479, 484, + 484, 484, 484, 485, 485, 485, 485, 486, 486, 487, + 487, 490, 493, 498, 498, 498, 498, 498, 498, 499, + 500, 503, 503, 503, 503, 503, 504, 505, 510, 515, + 516, 519, 520, 528, 534, 535, 538, 539, 548, 549, + 562, 562, 563, 563, 564, 568, 568, 568, 568, 568, + 568, 568, 569, 569, 569, 569, 569, 571, 574, 577, + 580, 584, 597, 603, 609, 619, 622, 632, 635, 643, + 647, 654, 655, 660, 665, 675, 681, 686, 692, 698, + 704, 709, 715, 721, 728, 734, 740, 746, 752, 758, + 764, 772, 785, 797, 802, 808, 813, 819, 824, 829, + 837, 842, 847, 857, 862, 867, 867, 877, 882, 885, + 890, 894, 898, 900, 900, 903, 913, 918, 923, 933, + 943, 953, 963, 968, 973, 978, 980, 980, 983, 988, + 995, 1000, 1007, 1014, 1019, 1020, 1028, 1028, 1029, 1029, + 1031, 1040, 1044, 1048, 1051, 1056, 1059, 1062, 1080, 1081, + 1084, 1095, 1096, 1098, 1107, 1108, 1109, 1113, 1126, 1127, + 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1131, 1132, 1137, + 1138, 1147, 1147, 1151, 1156, 1166, 1176, 1179, 1187, 1191, + 1196, 1199, 1205, 1205, 1207, 1212, 1217, 1222, 1231, 1239, + 1246, 1269, 1274, 1280, 1286, 1294, 1312, 1320, 1329, 1333, + 1340, 1341, 1345, 1350, 1353, 1362, 1370, 1379, 1387, 1395, + 1400, 1409, 1437, 1443, 1449, 1456, 1462, 1468, 1474, 1492, + 1497, 1498, 1502, 1503, 1506, 1514, 1523, 1531, 1540, 1546, + 1555, 1564 }; #endif @@ -2486,26 +2529,26 @@ switch (yyn) { case 81: -#line 447 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 490 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = (yyvsp[-1].String); ;} break; case 82: -#line 450 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 493 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(""); ;} break; case 90: -#line 457 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 500 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(""); ;} break; case 97: -#line 462 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 505 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-1].String) += *(yyvsp[0].String); delete (yyvsp[0].String); @@ -2514,27 +2557,27 @@ break; case 98: -#line 467 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 510 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(""); ;} break; case 99: -#line 472 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 515 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 100: -#line 473 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 516 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-1].String) += " " + *(yyvsp[0].String); delete (yyvsp[0].String); (yyval.String) = (yyvsp[-1].String); ;} break; case 101: -#line 476 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 519 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 102: -#line 477 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 520 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyvsp[-1].String)->insert(0, ", "); *(yyvsp[-1].String) += " " + *(yyvsp[0].String); @@ -2544,7 +2587,7 @@ break; case 103: -#line 485 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 528 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-1].String) += " " + *(yyvsp[0].String); delete (yyvsp[0].String); @@ -2553,17 +2596,17 @@ break; case 104: -#line 491 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 534 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 106: -#line 495 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 538 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 107: -#line 496 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 539 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyvsp[-1].String)->insert(0, ", "); if (!(yyvsp[0].String)->empty()) @@ -2574,7 +2617,7 @@ break; case 109: -#line 506 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 549 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-1].String) += " " + *(yyvsp[0].String); delete (yyvsp[0].String); @@ -2583,36 +2626,36 @@ break; case 127: -#line 528 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 571 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Type) = new TypeInfo((yyvsp[0].String), OpaqueTy); ;} break; case 128: -#line 531 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 574 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Type) = new TypeInfo((yyvsp[0].String), UnresolvedTy); ;} break; case 129: -#line 534 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 577 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Type) = (yyvsp[0].Type); ;} break; case 130: -#line 537 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 580 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Type UpReference (yyvsp[0].String)->insert(0, "\\"); - (yyval.Type) = new TypeInfo((yyvsp[0].String), NumericTy); + (yyval.Type) = new TypeInfo((yyvsp[0].String), UpRefTy); ;} break; case 131: -#line 541 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 584 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Function derived type? std::string newTy( (yyvsp[-3].Type)->getNewTy() + "("); for (unsigned i = 0; i < (yyvsp[-1].TypeVec)->size(); ++i) { @@ -2625,34 +2668,31 @@ } newTy += ")"; (yyval.Type) = new TypeInfo(new std::string(newTy), (yyvsp[-3].Type), (yyvsp[-1].TypeVec)); - EnumeratedTypes.push_back(*(yyval.Type)); ;} break; case 132: -#line 555 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 597 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Sized array type? (yyvsp[-3].String)->insert(0,"[ "); *(yyvsp[-3].String) += " x " + (yyvsp[-1].Type)->getNewTy() + " ]"; uint64_t elems = atoi((yyvsp[-3].String)->c_str()); (yyval.Type) = new TypeInfo((yyvsp[-3].String), ArrayTy, (yyvsp[-1].Type), elems); - EnumeratedTypes.push_back(*(yyval.Type)); ;} break; case 133: -#line 562 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 603 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Packed array type? (yyvsp[-3].String)->insert(0,"< "); *(yyvsp[-3].String) += " x " + (yyvsp[-1].Type)->getNewTy() + " >"; uint64_t elems = atoi((yyvsp[-3].String)->c_str()); (yyval.Type) = new TypeInfo((yyvsp[-3].String), PackedTy, (yyvsp[-1].Type), elems); - EnumeratedTypes.push_back(*(yyval.Type)); ;} break; case 134: -#line 569 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 609 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Structure type? std::string newTy("{"); for (unsigned i = 0; i < (yyvsp[-1].TypeVec)->size(); ++i) { @@ -2662,20 +2702,18 @@ } newTy += "}"; (yyval.Type) = new TypeInfo(new std::string(newTy), StructTy, (yyvsp[-1].TypeVec)); - EnumeratedTypes.push_back(*(yyval.Type)); ;} break; case 135: -#line 580 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 619 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Empty structure type? (yyval.Type) = new TypeInfo(new std::string("{}"), StructTy, new TypeList()); - EnumeratedTypes.push_back(*(yyval.Type)); ;} break; case 136: -#line 584 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 622 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Packed Structure type? std::string newTy("<{"); for (unsigned i = 0; i < (yyvsp[-2].TypeVec)->size(); ++i) { @@ -2685,28 +2723,25 @@ } newTy += "}>"; (yyval.Type) = new TypeInfo(new std::string(newTy), PackedStructTy, (yyvsp[-2].TypeVec)); - EnumeratedTypes.push_back(*(yyval.Type)); ;} break; case 137: -#line 595 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 632 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Empty packed structure type? (yyval.Type) = new TypeInfo(new std::string("<{}>"), PackedStructTy, new TypeList()); - EnumeratedTypes.push_back(*(yyval.Type)); ;} break; case 138: -#line 599 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 635 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Pointer type? (yyval.Type) = (yyvsp[-1].Type)->getPointerType(); - EnumeratedTypes.push_back(*(yyval.Type)); ;} break; case 139: -#line 608 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 643 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.TypeVec) = new TypeList(); (yyval.TypeVec)->push_back((yyvsp[0].Type)); @@ -2714,7 +2749,7 @@ break; case 140: -#line 612 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 647 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.TypeVec) = (yyvsp[-2].TypeVec); (yyval.TypeVec)->push_back((yyvsp[0].Type)); @@ -2722,7 +2757,7 @@ break; case 142: -#line 620 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 655 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.TypeVec) = (yyvsp[-2].TypeVec); (yyval.TypeVec)->push_back(new TypeInfo("void",VoidTy)); @@ -2731,7 +2766,7 @@ break; case 143: -#line 625 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 660 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.TypeVec) = new TypeList(); (yyval.TypeVec)->push_back(new TypeInfo("void",VoidTy)); @@ -2740,14 +2775,14 @@ break; case 144: -#line 630 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 665 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.TypeVec) = new TypeList(); ;} break; case 145: -#line 640 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 675 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Nonempty unsized arr (yyval.Const).type = (yyvsp[-3].Type); (yyval.Const).cnst = new std::string((yyvsp[-3].Type)->getNewTy()); @@ -2757,7 +2792,7 @@ break; case 146: -#line 646 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 681 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Const).type = (yyvsp[-2].Type); (yyval.Const).cnst = new std::string((yyvsp[-2].Type)->getNewTy()); @@ -2766,7 +2801,7 @@ break; case 147: -#line 651 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 686 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Const).type = (yyvsp[-2].Type); (yyval.Const).cnst = new std::string((yyvsp[-2].Type)->getNewTy()); @@ -2776,7 +2811,7 @@ break; case 148: -#line 657 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 692 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Nonempty unsized arr (yyval.Const).type = (yyvsp[-3].Type); (yyval.Const).cnst = new std::string((yyvsp[-3].Type)->getNewTy()); @@ -2786,7 +2821,7 @@ break; case 149: -#line 663 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 698 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Const).type = (yyvsp[-3].Type); (yyval.Const).cnst = new std::string((yyvsp[-3].Type)->getNewTy()); @@ -2796,7 +2831,7 @@ break; case 150: -#line 669 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 704 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Const).type = (yyvsp[-2].Type); (yyval.Const).cnst = new std::string((yyvsp[-2].Type)->getNewTy()); @@ -2805,7 +2840,7 @@ break; case 151: -#line 674 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 709 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Const).type = (yyvsp[-1].Type); (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy()); @@ -2815,7 +2850,7 @@ break; case 152: -#line 680 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 715 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Const).type = (yyvsp[-1].Type); (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy()); @@ -2825,7 +2860,7 @@ break; case 153: -#line 686 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 721 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { std::string Name = getUniqueName((yyvsp[0].String),(yyvsp[-1].Type)); (yyval.Const).type = (yyvsp[-1].Type); @@ -2836,7 +2871,7 @@ break; case 154: -#line 693 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 728 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Const).type = (yyvsp[-1].Type); (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy()); @@ -2846,7 +2881,7 @@ break; case 155: -#line 699 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 734 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Const).type = (yyvsp[-1].Type); (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy()); @@ -2856,7 +2891,7 @@ break; case 156: -#line 705 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 740 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // integral constants (yyval.Const).type = (yyvsp[-1].Type); (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy()); @@ -2866,7 +2901,7 @@ break; case 157: -#line 711 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 746 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // integral constants (yyval.Const).type = (yyvsp[-1].Type); (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy()); @@ -2876,7 +2911,7 @@ break; case 158: -#line 717 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 752 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Boolean constants (yyval.Const).type = (yyvsp[-1].Type); (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy()); @@ -2886,7 +2921,7 @@ break; case 159: -#line 723 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 758 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Boolean constants (yyval.Const).type = (yyvsp[-1].Type); (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy()); @@ -2896,7 +2931,7 @@ break; case 160: -#line 729 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 764 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Float & Double constants (yyval.Const).type = (yyvsp[-1].Type); (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy()); @@ -2906,7 +2941,7 @@ break; case 161: -#line 737 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 772 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { std::string source = *(yyvsp[-3].Const).cnst; TypeInfo* DstTy = ResolveType((yyvsp[-1].Type)); @@ -2918,12 +2953,12 @@ (yyval.String) = new std::string(*(yyvsp[-5].String)); *(yyval.String) += "( " + source + " to " + (yyvsp[-1].Type)->getNewTy() + ")"; } - delete (yyvsp[-5].String); (yyvsp[-3].Const).destroy(); delete (yyvsp[-2].String); delete (yyvsp[-1].Type); + delete (yyvsp[-5].String); (yyvsp[-3].Const).destroy(); delete (yyvsp[-2].String); ;} break; case 162: -#line 750 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 785 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-4].String) += "(" + *(yyvsp[-2].Const).cnst; for (unsigned i = 0; i < (yyvsp[-1].ValList)->size(); ++i) { @@ -2939,7 +2974,7 @@ break; case 163: -#line 762 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 797 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-7].String) += "(" + *(yyvsp[-5].Const).cnst + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")"; (yyvsp[-5].Const).destroy(); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy(); @@ -2948,7 +2983,7 @@ break; case 164: -#line 767 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 802 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { const char* op = getDivRemOpcode(*(yyvsp[-5].String), (yyvsp[-3].Const).type); (yyval.String) = new std::string(op); @@ -2958,7 +2993,7 @@ break; case 165: -#line 773 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 808 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-5].String) += "(" + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")"; (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy(); @@ -2967,7 +3002,7 @@ break; case 166: -#line 778 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 813 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-5].String) = getCompareOp(*(yyvsp[-5].String), (yyvsp[-3].Const).type); *(yyvsp[-5].String) += "(" + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")"; @@ -2977,7 +3012,7 @@ break; case 167: -#line 784 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 819 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-6].String) += "(" + *(yyvsp[-5].String) + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")"; delete (yyvsp[-5].String); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy(); @@ -2986,7 +3021,7 @@ break; case 168: -#line 789 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 824 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-6].String) += "(" + *(yyvsp[-5].String) + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")"; delete (yyvsp[-5].String); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy(); @@ -2995,7 +3030,7 @@ break; case 169: -#line 794 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 829 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { const char* shiftop = (yyvsp[-5].String)->c_str(); if (*(yyvsp[-5].String) == "shr") @@ -3007,7 +3042,7 @@ break; case 170: -#line 802 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 837 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-5].String) += "(" + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")"; (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy(); @@ -3016,7 +3051,7 @@ break; case 171: -#line 807 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 842 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-7].String) += "(" + *(yyvsp[-5].Const).cnst + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")"; (yyvsp[-5].Const).destroy(); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy(); @@ -3025,7 +3060,7 @@ break; case 172: -#line 812 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 847 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-7].String) += "(" + *(yyvsp[-5].Const).cnst + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")"; (yyvsp[-5].Const).destroy(); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy(); @@ -3034,7 +3069,7 @@ break; case 173: -#line 822 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 857 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-2].String) += ", " + *(yyvsp[0].Const).cnst; (yyvsp[0].Const).destroy(); @@ -3043,25 +3078,25 @@ break; case 174: -#line 827 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 862 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(*(yyvsp[0].Const).cnst); (yyvsp[0].Const).destroy(); ;} break; case 177: -#line 842 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 877 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { ;} break; case 178: -#line 847 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 882 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = 0; ;} break; case 179: -#line 850 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 885 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *O << *(yyvsp[0].String) << '\n'; delete (yyvsp[0].String); @@ -3070,7 +3105,7 @@ break; case 180: -#line 855 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 890 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *O << "module asm " << ' ' << *(yyvsp[0].String) << '\n'; (yyval.String) = 0; @@ -3078,7 +3113,7 @@ break; case 181: -#line 859 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 894 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *O << "implementation\n"; (yyval.String) = 0; @@ -3086,17 +3121,17 @@ break; case 182: -#line 863 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 898 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = 0; ;} break; case 184: -#line 865 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 900 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = (yyvsp[0].String); *(yyval.String) = "external"; ;} break; case 185: -#line 868 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 903 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { EnumeratedTypes.push_back(*(yyvsp[0].Type)); if (!(yyvsp[-2].String)->empty()) { @@ -3110,7 +3145,7 @@ break; case 186: -#line 878 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 913 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Function prototypes can be in const pool *O << *(yyvsp[0].String) << '\n'; delete (yyvsp[0].String); @@ -3119,7 +3154,7 @@ break; case 187: -#line 883 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 918 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Asm blocks can be in the const pool *O << *(yyvsp[-2].String) << ' ' << *(yyvsp[-1].String) << ' ' << *(yyvsp[0].String) << '\n'; delete (yyvsp[-2].String); delete (yyvsp[-1].String); delete (yyvsp[0].String); @@ -3128,7 +3163,7 @@ break; case 188: -#line 888 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 923 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-4].String)->empty()) { std::string Name = getUniqueName((yyvsp[-4].String),(yyvsp[-1].Const).type); @@ -3142,7 +3177,7 @@ break; case 189: -#line 898 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 933 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-4].String)->empty()) { std::string Name = getUniqueName((yyvsp[-4].String),(yyvsp[-1].Type)); @@ -3156,7 +3191,7 @@ break; case 190: -#line 908 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 943 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-4].String)->empty()) { std::string Name = getUniqueName((yyvsp[-4].String),(yyvsp[-1].Type)); @@ -3170,7 +3205,7 @@ break; case 191: -#line 918 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 953 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-4].String)->empty()) { std::string Name = getUniqueName((yyvsp[-4].String),(yyvsp[-1].Type)); @@ -3184,7 +3219,7 @@ break; case 192: -#line 928 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 963 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *O << *(yyvsp[-1].String) << ' ' << *(yyvsp[0].String) << '\n'; delete (yyvsp[-1].String); delete (yyvsp[0].String); @@ -3193,7 +3228,7 @@ break; case 193: -#line 933 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 968 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *O << *(yyvsp[-2].String) << " = " << *(yyvsp[0].String) << '\n'; delete (yyvsp[-2].String); delete (yyvsp[0].String); @@ -3202,14 +3237,14 @@ break; case 194: -#line 938 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 973 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = 0; ;} break; case 198: -#line 948 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 983 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-2].String) += " = " + *(yyvsp[0].String); delete (yyvsp[0].String); @@ -3218,7 +3253,7 @@ break; case 199: -#line 953 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 988 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-2].String) += " = " + *(yyvsp[0].String); if (*(yyvsp[0].String) == "64") @@ -3229,7 +3264,7 @@ break; case 200: -#line 960 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 995 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-2].String) += " = " + *(yyvsp[0].String); delete (yyvsp[0].String); @@ -3238,7 +3273,7 @@ break; case 201: -#line 965 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1000 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-2].String) += " = " + *(yyvsp[0].String); delete (yyvsp[0].String); @@ -3247,7 +3282,7 @@ break; case 202: -#line 972 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1007 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyvsp[-1].String)->insert(0, "[ "); *(yyvsp[-1].String) += " ]"; @@ -3256,7 +3291,7 @@ break; case 203: -#line 979 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1014 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-2].String) += ", " + *(yyvsp[0].String); delete (yyvsp[0].String); @@ -3265,19 +3300,19 @@ break; case 205: -#line 985 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1020 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 209: -#line 994 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1029 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 210: -#line 996 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1031 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string((yyvsp[-1].Type)->getNewTy()); if (!(yyvsp[0].String)->empty()) { @@ -3289,7 +3324,7 @@ break; case 211: -#line 1005 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1040 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-2].String) += ", " + *(yyvsp[0].String); delete (yyvsp[0].String); @@ -3297,21 +3332,21 @@ break; case 212: -#line 1009 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1044 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = (yyvsp[0].String); ;} break; case 213: -#line 1013 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1048 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = (yyvsp[0].String); ;} break; case 214: -#line 1016 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1051 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-2].String) += ", ..."; (yyval.String) = (yyvsp[-2].String); @@ -3320,19 +3355,19 @@ break; case 215: -#line 1021 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1056 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = (yyvsp[0].String); ;} break; case 216: -#line 1024 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1059 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 217: -#line 1027 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1062 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-7].String)->empty()) { *(yyvsp[-7].String) += " "; @@ -3353,17 +3388,17 @@ break; case 218: -#line 1045 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1080 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string("{"); delete (yyvsp[0].String); ;} break; case 219: -#line 1046 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1081 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string ("{"); ;} break; case 220: -#line 1049 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1084 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *O << "define "; if (!(yyvsp[-2].String)->empty()) { @@ -3376,17 +3411,17 @@ break; case 221: -#line 1060 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1095 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string("}"); delete (yyvsp[0].String); ;} break; case 222: -#line 1061 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1096 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string("}"); ;} break; case 223: -#line 1063 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1098 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { if ((yyvsp[-1].String)) *O << *(yyvsp[-1].String); @@ -3397,12 +3432,12 @@ break; case 224: -#line 1072 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1107 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 227: -#line 1078 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1113 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-1].String)->empty()) *(yyvsp[-2].String) += " " + *(yyvsp[-1].String); @@ -3414,12 +3449,12 @@ break; case 228: -#line 1091 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1126 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 238: -#line 1097 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1132 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyvsp[-1].String)->insert(0, "<"); *(yyvsp[-1].String) += ">"; @@ -3428,7 +3463,7 @@ break; case 240: -#line 1103 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1138 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-3].String)->empty()) { *(yyvsp[-4].String) += " " + *(yyvsp[-3].String); @@ -3440,7 +3475,7 @@ break; case 243: -#line 1116 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1151 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Value).val = (yyvsp[0].String); (yyval.Value).constant = false; @@ -3449,7 +3484,7 @@ break; case 244: -#line 1121 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1156 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Value).val = (yyvsp[0].String); (yyval.Value).constant = true; @@ -3458,8 +3493,9 @@ break; case 245: -#line 1131 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1166 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { + ResolveType((yyvsp[-1].Type)); std::string Name = getUniqueName((yyvsp[0].Value).val, (yyvsp[-1].Type)); (yyval.Value) = (yyvsp[0].Value); delete (yyval.Value).val; @@ -3470,28 +3506,28 @@ break; case 246: -#line 1140 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1176 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = 0; ;} break; case 247: -#line 1143 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1179 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Do not allow functions with 0 basic blocks (yyval.String) = 0; ;} break; case 248: -#line 1151 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1187 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = 0; ;} break; case 249: -#line 1155 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1191 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *O << " " << *(yyvsp[0].String) << '\n'; delete (yyvsp[0].String); @@ -3500,14 +3536,14 @@ break; case 250: -#line 1160 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1196 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = 0; ;} break; case 251: -#line 1163 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1199 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *O << *(yyvsp[0].String) << '\n'; delete (yyvsp[0].String); @@ -3516,12 +3552,12 @@ break; case 253: -#line 1169 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1205 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = (yyvsp[0].String); *(yyval.String) = "unwind"; ;} break; case 254: -#line 1171 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1207 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Return with a result... *O << " " << *(yyvsp[-1].String) << ' ' << *(yyvsp[0].Value).val << '\n'; delete (yyvsp[-1].String); (yyvsp[0].Value).destroy(); @@ -3530,7 +3566,7 @@ break; case 255: -#line 1176 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1212 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Return with no result... *O << " " << *(yyvsp[-1].String) << ' ' << (yyvsp[0].Type)->getNewTy() << '\n'; delete (yyvsp[-1].String); delete (yyvsp[0].Type); @@ -3539,7 +3575,7 @@ break; case 256: -#line 1181 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1217 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Unconditional Branch... *O << " " << *(yyvsp[-2].String) << ' ' << (yyvsp[-1].Type)->getNewTy() << ' ' << *(yyvsp[0].Value).val << '\n'; delete (yyvsp[-2].String); delete (yyvsp[-1].Type); (yyvsp[0].Value).destroy(); @@ -3548,7 +3584,7 @@ break; case 257: -#line 1186 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1222 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { std::string Name = getUniqueName((yyvsp[-6].Value).val, (yyvsp[-7].Type)); *O << " " << *(yyvsp[-8].String) << ' ' << (yyvsp[-7].Type)->getNewTy() << ' ' << Name << ", " @@ -3561,7 +3597,7 @@ break; case 258: -#line 1195 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1231 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { std::string Name = getUniqueName((yyvsp[-6].Value).val, (yyvsp[-7].Type)); *O << " " << *(yyvsp[-8].String) << ' ' << (yyvsp[-7].Type)->getNewTy() << ' ' << Name << ", " @@ -3573,7 +3609,7 @@ break; case 259: -#line 1203 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1239 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { std::string Name = getUniqueName((yyvsp[-5].Value).val, (yyvsp[-6].Type)); *O << " " << *(yyvsp[-7].String) << ' ' << (yyvsp[-6].Type)->getNewTy() << ' ' << Name << ", " @@ -3584,7 +3620,7 @@ break; case 260: -#line 1211 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1247 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { TypeInfo* ResTy = getFunctionReturnType((yyvsp[-10].Type)); *O << " "; @@ -3610,7 +3646,7 @@ break; case 261: -#line 1233 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1269 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *O << " " << *(yyvsp[0].String) << '\n'; delete (yyvsp[0].String); @@ -3619,7 +3655,7 @@ break; case 262: -#line 1238 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1274 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *O << " " << *(yyvsp[0].String) << '\n'; delete (yyvsp[0].String); @@ -3628,7 +3664,7 @@ break; case 263: -#line 1244 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1280 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-5].String) += " " + (yyvsp[-4].Type)->getNewTy() + " " + *(yyvsp[-3].String) + ", " + (yyvsp[-1].Type)->getNewTy() + " " + *(yyvsp[0].Value).val; @@ -3638,7 +3674,7 @@ break; case 264: -#line 1250 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1286 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyvsp[-3].String)->insert(0, (yyvsp[-4].Type)->getNewTy() + " " ); *(yyvsp[-3].String) += ", " + (yyvsp[-1].Type)->getNewTy() + " " + *(yyvsp[0].Value).val; @@ -3648,7 +3684,7 @@ break; case 265: -#line 1258 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1294 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-1].String)->empty()) { if (deleteUselessCastFlag && *deleteUselessCastName == *(yyvsp[-1].String)) { @@ -3668,7 +3704,7 @@ break; case 266: -#line 1276 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1312 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Used for PHI nodes std::string Name = getUniqueName((yyvsp[-3].Value).val, (yyvsp[-5].Type)); Name.insert(0, (yyvsp[-5].Type)->getNewTy() + "["); @@ -3680,7 +3716,7 @@ break; case 267: -#line 1284 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1320 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { std::string Name = getUniqueName((yyvsp[-3].Value).val, (yyvsp[-6].Value).type); *(yyvsp[-6].Value).val += ", [" + Name + "," + *(yyvsp[-1].Value).val + "]"; @@ -3690,7 +3726,7 @@ break; case 268: -#line 1293 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1329 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValList) = new ValueList(); (yyval.ValList)->push_back((yyvsp[0].Value)); @@ -3698,7 +3734,7 @@ break; case 269: -#line 1297 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1333 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValList) = (yyvsp[-2].ValList); (yyval.ValList)->push_back((yyvsp[0].Value)); @@ -3706,17 +3742,17 @@ break; case 270: -#line 1304 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1340 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValList) = (yyvsp[0].ValList); ;} break; case 271: -#line 1305 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1341 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValList) = new ValueList(); ;} break; case 272: -#line 1309 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1345 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-1].String) += " " + *(yyvsp[0].String); delete (yyvsp[0].String); @@ -3725,7 +3761,7 @@ break; case 274: -#line 1317 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1353 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { const char* op = getDivRemOpcode(*(yyvsp[-4].String), (yyvsp[-3].Type)); std::string Name1 = getUniqueName((yyvsp[-2].Value).val, (yyvsp[-3].Type)); @@ -3738,7 +3774,7 @@ break; case 275: -#line 1326 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1362 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { std::string Name1 = getUniqueName((yyvsp[-2].Value).val, (yyvsp[-3].Type)); std::string Name2 = getUniqueName((yyvsp[0].Value).val, (yyvsp[-3].Type)); @@ -3750,7 +3786,7 @@ break; case 276: -#line 1334 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1370 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { std::string Name1 = getUniqueName((yyvsp[-2].Value).val, (yyvsp[-3].Type)); std::string Name2 = getUniqueName((yyvsp[0].Value).val, (yyvsp[-3].Type)); @@ -3763,7 +3799,7 @@ break; case 277: -#line 1343 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1379 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { std::string Name1 = getUniqueName((yyvsp[-2].Value).val, (yyvsp[-3].Type)); std::string Name2 = getUniqueName((yyvsp[0].Value).val, (yyvsp[-3].Type)); @@ -3775,7 +3811,7 @@ break; case 278: -#line 1351 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1387 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { std::string Name1 = getUniqueName((yyvsp[-2].Value).val, (yyvsp[-3].Type)); std::string Name2 = getUniqueName((yyvsp[0].Value).val, (yyvsp[-3].Type)); @@ -3787,7 +3823,7 @@ break; case 279: -#line 1359 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1395 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Value) = (yyvsp[0].Value); (yyval.Value).val->insert(0, *(yyvsp[-1].String) + " "); @@ -3796,7 +3832,7 @@ break; case 280: -#line 1364 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1400 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { const char* shiftop = (yyvsp[-3].String)->c_str(); if (*(yyvsp[-3].String) == "shr") @@ -3809,7 +3845,7 @@ break; case 281: -#line 1373 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1409 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { std::string source = *(yyvsp[-2].Value).val; TypeInfo* SrcTy = (yyvsp[-2].Value).type; @@ -3841,7 +3877,7 @@ break; case 282: -#line 1401 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1437 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-5].String) += " " + *(yyvsp[-4].Value).val + ", " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val; (yyval.Value).val = (yyvsp[-5].String); @@ -3851,7 +3887,7 @@ break; case 283: -#line 1407 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1443 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-3].String) += " " + *(yyvsp[-2].Value).val + ", " + (yyvsp[0].Type)->getNewTy(); (yyval.Value).val = (yyvsp[-3].String); @@ -3861,18 +3897,18 @@ break; case 284: -#line 1413 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1449 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-3].String) += " " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val; (yyval.Value).val = (yyvsp[-3].String); ResolveType((yyvsp[-2].Value).type); - (yyval.Value).type = (yyvsp[-2].Value).type->getElementType()->clone(); + (yyval.Value).type = (yyvsp[-2].Value).type->getElementType(); delete (yyvsp[-2].Value).val; (yyvsp[0].Value).destroy(); ;} break; case 285: -#line 1420 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1456 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-5].String) += " " + *(yyvsp[-4].Value).val + ", " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val; (yyval.Value).val = (yyvsp[-5].String); @@ -3882,7 +3918,7 @@ break; case 286: -#line 1426 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1462 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-5].String) += " " + *(yyvsp[-4].Value).val + ", " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val; (yyval.Value).val = (yyvsp[-5].String); @@ -3892,7 +3928,7 @@ break; case 287: -#line 1432 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1468 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-1].String) += " " + *(yyvsp[0].Value).val; (yyval.Value).val = (yyvsp[-1].String); @@ -3902,7 +3938,7 @@ break; case 288: -#line 1438 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1474 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-5].String)->empty()) *(yyvsp[-6].String) += " " + *(yyvsp[-5].String); @@ -3924,22 +3960,22 @@ break; case 290: -#line 1461 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1497 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValList) = (yyvsp[0].ValList); ;} break; case 291: -#line 1462 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1498 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValList) = new ValueList(); ;} break; case 293: -#line 1467 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1503 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 294: -#line 1470 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1506 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-2].String) += " " + (yyvsp[-1].Type)->getNewTy(); if (!(yyvsp[0].String)->empty()) @@ -3951,7 +3987,7 @@ break; case 295: -#line 1478 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1514 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { std::string Name = getUniqueName((yyvsp[-1].Value).val, (yyvsp[-2].Type)); *(yyvsp[-5].String) += " " + (yyvsp[-4].Type)->getNewTy() + ", " + (yyvsp[-2].Type)->getNewTy() + " " + Name; @@ -3964,7 +4000,7 @@ break; case 296: -#line 1487 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1523 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-2].String) += " " + (yyvsp[-1].Type)->getNewTy(); if (!(yyvsp[0].String)->empty()) @@ -3976,7 +4012,7 @@ break; case 297: -#line 1495 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1531 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { std::string Name = getUniqueName((yyvsp[-1].Value).val, (yyvsp[-2].Type)); *(yyvsp[-5].String) += " " + (yyvsp[-4].Type)->getNewTy() + ", " + (yyvsp[-2].Type)->getNewTy() + " " + Name; @@ -3989,7 +4025,7 @@ break; case 298: -#line 1504 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1540 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-1].String) += " " + *(yyvsp[0].Value).val; (yyval.Value).val = (yyvsp[-1].String); @@ -3999,7 +4035,7 @@ break; case 299: -#line 1510 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1546 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { std::string Name = getUniqueName((yyvsp[0].Value).val, (yyvsp[-1].Type)); if (!(yyvsp[-3].String)->empty()) @@ -4012,7 +4048,7 @@ break; case 300: -#line 1519 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1555 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { std::string Name = getUniqueName((yyvsp[0].Value).val, (yyvsp[-1].Type)); if (!(yyvsp[-5].String)->empty()) @@ -4025,7 +4061,7 @@ break; case 301: -#line 1528 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1564 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { std::string Name = getUniqueName((yyvsp[-1].Value).val, (yyvsp[-2].Type)); // Upgrade the indices @@ -4056,7 +4092,7 @@ } /* Line 1126 of yacc.c. */ -#line 4060 "UpgradeParser.tab.c" +#line 4096 "UpgradeParser.tab.c" yyvsp -= yylen; yyssp -= yylen; @@ -4324,7 +4360,7 @@ } -#line 1552 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1588 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" int yyerror(const char *ErrorMsg) { Index: llvm/tools/llvm-upgrade/UpgradeParser.cpp.cvs diff -u llvm/tools/llvm-upgrade/UpgradeParser.cpp.cvs:1.30 llvm/tools/llvm-upgrade/UpgradeParser.cpp.cvs:1.31 --- llvm/tools/llvm-upgrade/UpgradeParser.cpp.cvs:1.30 Tue Jan 2 00:34:08 2007 +++ llvm/tools/llvm-upgrade/UpgradeParser.cpp.cvs Wed Jan 3 17:45:42 2007 @@ -436,24 +436,26 @@ TypeInfo* ResolveType(TypeInfo*& Ty) { if (Ty->isUnresolved()) { - TypeMap::iterator I = NamedTypes.find(Ty->getNewTy()); - if (I != NamedTypes.end()) { - Ty = I->second.clone(); - return Ty; - } else { - std::string msg("Cannot resolve type: "); - msg += Ty->getNewTy(); - yyerror(msg.c_str()); - } - } else if (Ty->isNumeric()) { - unsigned ref = atoi(&((Ty->getNewTy().c_str())[1])); // Skip the '\\' - if (ref < EnumeratedTypes.size()) { - Ty = EnumeratedTypes[ref].clone(); - return Ty; + if (Ty->getNewTy()[0] == '%' && isdigit(Ty->getNewTy()[1])) { + unsigned ref = atoi(&((Ty->getNewTy().c_str())[1])); // skip the % + if (ref < EnumeratedTypes.size()) { + Ty = &EnumeratedTypes[ref]; + return Ty; + } else { + std::string msg("Can't resolve numbered type: "); + msg += Ty->getNewTy(); + yyerror(msg.c_str()); + } } else { - std::string msg("Can't resolve type: "); - msg += Ty->getNewTy(); - yyerror(msg.c_str()); + TypeMap::iterator I = NamedTypes.find(Ty->getNewTy()); + if (I != NamedTypes.end()) { + Ty = &I->second; + return Ty; + } else { + std::string msg("Cannot resolve type: "); + msg += Ty->getNewTy(); + yyerror(msg.c_str()); + } } } // otherwise its already resolved. @@ -651,18 +653,35 @@ return PFTy->clone(); } +typedef std::vector UpRefStack; +static TypeInfo* ResolveUpReference(TypeInfo* Ty, UpRefStack* stack) { + assert(Ty->isUpReference() && "Can't resolve a non-upreference"); + unsigned upref = atoi(&((Ty->getNewTy().c_str())[1])); // skip the slash + assert(upref < stack->size() && "Invalid up reference"); + return (*stack)[upref - stack->size() - 1]; +} + static TypeInfo* getGEPIndexedType(TypeInfo* PTy, ValueList* idxs) { - ResolveType(PTy); + TypeInfo* Result = ResolveType(PTy); assert(PTy->isPointer() && "GEP Operand is not a pointer?"); - TypeInfo* Result = PTy->getElementType(); // just skip first index - ResolveType(Result); - for (unsigned i = 1; i < idxs->size(); ++i) { + UpRefStack stack; + for (unsigned i = 0; i < idxs->size(); ++i) { if (Result->isComposite()) { Result = Result->getIndexedType((*idxs)[i]); ResolveType(Result); + stack.push_back(Result); } else yyerror("Invalid type for index"); } + // Resolve upreferences so we can return a more natural type + if (Result->isPointer()) { + if (Result->getElementType()->isUpReference()) { + stack.push_back(Result); + Result = ResolveUpReference(Result->getElementType(), &stack); + } + } else if (Result->isUpReference()) { + Result = ResolveUpReference(Result->getElementType(), &stack); + } return Result->getPointerType(); } @@ -693,17 +712,41 @@ // Resolve the type ResolveType(Ty); + // Remove as many levels of pointer nesting that we have. + if (Ty->isPointer()) { + // Avoid infinite loops in recursive types + TypeInfo* Last = 0; + while (Ty->isPointer() && Last != Ty) { + Last = Ty; + Ty = Ty->getElementType(); + ResolveType(Ty); + } + } + // Default the result to the current name std::string Result = *Name; + // Now deal with the underlying type if (Ty->isInteger()) { // If its an integer type, make the name unique Result = makeUniqueName(Name, Ty->isSigned()); - } else if (Ty->isPointer()) { - while (Ty->isPointer()) - Ty = Ty->getElementType(); + } else if (Ty->isArray() || Ty->isPacked()) { + Ty = Ty->getElementType(); if (Ty->isInteger()) Result = makeUniqueName(Name, Ty->isSigned()); + } else if (Ty->isStruct()) { + // Scan the fields and count the signed and unsigned fields + int isSigned = 0; + for (unsigned i = 0; i < Ty->getNumStructElements(); ++i) { + TypeInfo* Tmp = Ty->getElement(i); + if (Tmp->isInteger()) + if (Tmp->isSigned()) + isSigned++; + else + isSigned--; + } + if (isSigned != 0) + Result = makeUniqueName(Name, isSigned > 0); } return Result; } @@ -729,7 +772,7 @@ #endif #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) -#line 357 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 400 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" typedef union YYSTYPE { std::string* String; TypeInfo* Type; @@ -739,7 +782,7 @@ TypeList* TypeVec; } YYSTYPE; /* Line 196 of yacc.c. */ -#line 743 "UpgradeParser.tab.c" +#line 786 "UpgradeParser.tab.c" # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_TRIVIAL 1 @@ -751,7 +794,7 @@ /* Line 219 of yacc.c. */ -#line 755 "UpgradeParser.tab.c" +#line 798 "UpgradeParser.tab.c" #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__) # define YYSIZE_T __SIZE_TYPE__ @@ -1107,37 +1150,37 @@ /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const unsigned short int yyrline[] = { - 0, 422, 422, 422, 423, 423, 427, 427, 427, 427, - 427, 427, 427, 428, 428, 428, 428, 429, 429, 429, - 430, 430, 430, 430, 430, 430, 431, 431, 431, 431, - 431, 431, 431, 431, 431, 431, 432, 432, 432, 432, - 432, 432, 432, 432, 432, 432, 433, 433, 433, 433, - 433, 433, 434, 434, 434, 434, 435, 435, 435, 435, - 435, 435, 435, 436, 436, 436, 436, 436, 436, 441, - 441, 441, 441, 442, 442, 442, 442, 443, 443, 444, - 444, 447, 450, 455, 455, 455, 455, 455, 455, 456, - 457, 460, 460, 460, 460, 460, 461, 462, 467, 472, - 473, 476, 477, 485, 491, 492, 495, 496, 505, 506, - 519, 519, 520, 520, 521, 525, 525, 525, 525, 525, - 525, 525, 526, 526, 526, 526, 526, 528, 531, 534, - 537, 541, 555, 562, 569, 580, 584, 595, 599, 608, - 612, 619, 620, 625, 630, 640, 646, 651, 657, 663, - 669, 674, 680, 686, 693, 699, 705, 711, 717, 723, - 729, 737, 750, 762, 767, 773, 778, 784, 789, 794, - 802, 807, 812, 822, 827, 832, 832, 842, 847, 850, - 855, 859, 863, 865, 865, 868, 878, 883, 888, 898, - 908, 918, 928, 933, 938, 943, 945, 945, 948, 953, - 960, 965, 972, 979, 984, 985, 993, 993, 994, 994, - 996, 1005, 1009, 1013, 1016, 1021, 1024, 1027, 1045, 1046, - 1049, 1060, 1061, 1063, 1072, 1073, 1074, 1078, 1091, 1092, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1096, 1097, 1102, - 1103, 1112, 1112, 1116, 1121, 1131, 1140, 1143, 1151, 1155, - 1160, 1163, 1169, 1169, 1171, 1176, 1181, 1186, 1195, 1203, - 1210, 1233, 1238, 1244, 1250, 1258, 1276, 1284, 1293, 1297, - 1304, 1305, 1309, 1314, 1317, 1326, 1334, 1343, 1351, 1359, - 1364, 1373, 1401, 1407, 1413, 1420, 1426, 1432, 1438, 1456, - 1461, 1462, 1466, 1467, 1470, 1478, 1487, 1495, 1504, 1510, - 1519, 1528 + 0, 465, 465, 465, 466, 466, 470, 470, 470, 470, + 470, 470, 470, 471, 471, 471, 471, 472, 472, 472, + 473, 473, 473, 473, 473, 473, 474, 474, 474, 474, + 474, 474, 474, 474, 474, 474, 475, 475, 475, 475, + 475, 475, 475, 475, 475, 475, 476, 476, 476, 476, + 476, 476, 477, 477, 477, 477, 478, 478, 478, 478, + 478, 478, 478, 479, 479, 479, 479, 479, 479, 484, + 484, 484, 484, 485, 485, 485, 485, 486, 486, 487, + 487, 490, 493, 498, 498, 498, 498, 498, 498, 499, + 500, 503, 503, 503, 503, 503, 504, 505, 510, 515, + 516, 519, 520, 528, 534, 535, 538, 539, 548, 549, + 562, 562, 563, 563, 564, 568, 568, 568, 568, 568, + 568, 568, 569, 569, 569, 569, 569, 571, 574, 577, + 580, 584, 597, 603, 609, 619, 622, 632, 635, 643, + 647, 654, 655, 660, 665, 675, 681, 686, 692, 698, + 704, 709, 715, 721, 728, 734, 740, 746, 752, 758, + 764, 772, 785, 797, 802, 808, 813, 819, 824, 829, + 837, 842, 847, 857, 862, 867, 867, 877, 882, 885, + 890, 894, 898, 900, 900, 903, 913, 918, 923, 933, + 943, 953, 963, 968, 973, 978, 980, 980, 983, 988, + 995, 1000, 1007, 1014, 1019, 1020, 1028, 1028, 1029, 1029, + 1031, 1040, 1044, 1048, 1051, 1056, 1059, 1062, 1080, 1081, + 1084, 1095, 1096, 1098, 1107, 1108, 1109, 1113, 1126, 1127, + 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1131, 1132, 1137, + 1138, 1147, 1147, 1151, 1156, 1166, 1176, 1179, 1187, 1191, + 1196, 1199, 1205, 1205, 1207, 1212, 1217, 1222, 1231, 1239, + 1246, 1269, 1274, 1280, 1286, 1294, 1312, 1320, 1329, 1333, + 1340, 1341, 1345, 1350, 1353, 1362, 1370, 1379, 1387, 1395, + 1400, 1409, 1437, 1443, 1449, 1456, 1462, 1468, 1474, 1492, + 1497, 1498, 1502, 1503, 1506, 1514, 1523, 1531, 1540, 1546, + 1555, 1564 }; #endif @@ -2486,26 +2529,26 @@ switch (yyn) { case 81: -#line 447 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 490 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = (yyvsp[-1].String); ;} break; case 82: -#line 450 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 493 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(""); ;} break; case 90: -#line 457 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 500 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(""); ;} break; case 97: -#line 462 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 505 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-1].String) += *(yyvsp[0].String); delete (yyvsp[0].String); @@ -2514,27 +2557,27 @@ break; case 98: -#line 467 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 510 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(""); ;} break; case 99: -#line 472 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 515 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 100: -#line 473 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 516 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-1].String) += " " + *(yyvsp[0].String); delete (yyvsp[0].String); (yyval.String) = (yyvsp[-1].String); ;} break; case 101: -#line 476 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 519 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 102: -#line 477 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 520 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyvsp[-1].String)->insert(0, ", "); *(yyvsp[-1].String) += " " + *(yyvsp[0].String); @@ -2544,7 +2587,7 @@ break; case 103: -#line 485 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 528 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-1].String) += " " + *(yyvsp[0].String); delete (yyvsp[0].String); @@ -2553,17 +2596,17 @@ break; case 104: -#line 491 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 534 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 106: -#line 495 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 538 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 107: -#line 496 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 539 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyvsp[-1].String)->insert(0, ", "); if (!(yyvsp[0].String)->empty()) @@ -2574,7 +2617,7 @@ break; case 109: -#line 506 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 549 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-1].String) += " " + *(yyvsp[0].String); delete (yyvsp[0].String); @@ -2583,36 +2626,36 @@ break; case 127: -#line 528 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 571 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Type) = new TypeInfo((yyvsp[0].String), OpaqueTy); ;} break; case 128: -#line 531 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 574 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Type) = new TypeInfo((yyvsp[0].String), UnresolvedTy); ;} break; case 129: -#line 534 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 577 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Type) = (yyvsp[0].Type); ;} break; case 130: -#line 537 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 580 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Type UpReference (yyvsp[0].String)->insert(0, "\\"); - (yyval.Type) = new TypeInfo((yyvsp[0].String), NumericTy); + (yyval.Type) = new TypeInfo((yyvsp[0].String), UpRefTy); ;} break; case 131: -#line 541 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 584 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Function derived type? std::string newTy( (yyvsp[-3].Type)->getNewTy() + "("); for (unsigned i = 0; i < (yyvsp[-1].TypeVec)->size(); ++i) { @@ -2625,34 +2668,31 @@ } newTy += ")"; (yyval.Type) = new TypeInfo(new std::string(newTy), (yyvsp[-3].Type), (yyvsp[-1].TypeVec)); - EnumeratedTypes.push_back(*(yyval.Type)); ;} break; case 132: -#line 555 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 597 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Sized array type? (yyvsp[-3].String)->insert(0,"[ "); *(yyvsp[-3].String) += " x " + (yyvsp[-1].Type)->getNewTy() + " ]"; uint64_t elems = atoi((yyvsp[-3].String)->c_str()); (yyval.Type) = new TypeInfo((yyvsp[-3].String), ArrayTy, (yyvsp[-1].Type), elems); - EnumeratedTypes.push_back(*(yyval.Type)); ;} break; case 133: -#line 562 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 603 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Packed array type? (yyvsp[-3].String)->insert(0,"< "); *(yyvsp[-3].String) += " x " + (yyvsp[-1].Type)->getNewTy() + " >"; uint64_t elems = atoi((yyvsp[-3].String)->c_str()); (yyval.Type) = new TypeInfo((yyvsp[-3].String), PackedTy, (yyvsp[-1].Type), elems); - EnumeratedTypes.push_back(*(yyval.Type)); ;} break; case 134: -#line 569 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 609 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Structure type? std::string newTy("{"); for (unsigned i = 0; i < (yyvsp[-1].TypeVec)->size(); ++i) { @@ -2662,20 +2702,18 @@ } newTy += "}"; (yyval.Type) = new TypeInfo(new std::string(newTy), StructTy, (yyvsp[-1].TypeVec)); - EnumeratedTypes.push_back(*(yyval.Type)); ;} break; case 135: -#line 580 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 619 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Empty structure type? (yyval.Type) = new TypeInfo(new std::string("{}"), StructTy, new TypeList()); - EnumeratedTypes.push_back(*(yyval.Type)); ;} break; case 136: -#line 584 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 622 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Packed Structure type? std::string newTy("<{"); for (unsigned i = 0; i < (yyvsp[-2].TypeVec)->size(); ++i) { @@ -2685,28 +2723,25 @@ } newTy += "}>"; (yyval.Type) = new TypeInfo(new std::string(newTy), PackedStructTy, (yyvsp[-2].TypeVec)); - EnumeratedTypes.push_back(*(yyval.Type)); ;} break; case 137: -#line 595 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 632 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Empty packed structure type? (yyval.Type) = new TypeInfo(new std::string("<{}>"), PackedStructTy, new TypeList()); - EnumeratedTypes.push_back(*(yyval.Type)); ;} break; case 138: -#line 599 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 635 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Pointer type? (yyval.Type) = (yyvsp[-1].Type)->getPointerType(); - EnumeratedTypes.push_back(*(yyval.Type)); ;} break; case 139: -#line 608 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 643 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.TypeVec) = new TypeList(); (yyval.TypeVec)->push_back((yyvsp[0].Type)); @@ -2714,7 +2749,7 @@ break; case 140: -#line 612 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 647 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.TypeVec) = (yyvsp[-2].TypeVec); (yyval.TypeVec)->push_back((yyvsp[0].Type)); @@ -2722,7 +2757,7 @@ break; case 142: -#line 620 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 655 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.TypeVec) = (yyvsp[-2].TypeVec); (yyval.TypeVec)->push_back(new TypeInfo("void",VoidTy)); @@ -2731,7 +2766,7 @@ break; case 143: -#line 625 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 660 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.TypeVec) = new TypeList(); (yyval.TypeVec)->push_back(new TypeInfo("void",VoidTy)); @@ -2740,14 +2775,14 @@ break; case 144: -#line 630 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 665 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.TypeVec) = new TypeList(); ;} break; case 145: -#line 640 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 675 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Nonempty unsized arr (yyval.Const).type = (yyvsp[-3].Type); (yyval.Const).cnst = new std::string((yyvsp[-3].Type)->getNewTy()); @@ -2757,7 +2792,7 @@ break; case 146: -#line 646 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 681 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Const).type = (yyvsp[-2].Type); (yyval.Const).cnst = new std::string((yyvsp[-2].Type)->getNewTy()); @@ -2766,7 +2801,7 @@ break; case 147: -#line 651 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 686 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Const).type = (yyvsp[-2].Type); (yyval.Const).cnst = new std::string((yyvsp[-2].Type)->getNewTy()); @@ -2776,7 +2811,7 @@ break; case 148: -#line 657 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 692 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Nonempty unsized arr (yyval.Const).type = (yyvsp[-3].Type); (yyval.Const).cnst = new std::string((yyvsp[-3].Type)->getNewTy()); @@ -2786,7 +2821,7 @@ break; case 149: -#line 663 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 698 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Const).type = (yyvsp[-3].Type); (yyval.Const).cnst = new std::string((yyvsp[-3].Type)->getNewTy()); @@ -2796,7 +2831,7 @@ break; case 150: -#line 669 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 704 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Const).type = (yyvsp[-2].Type); (yyval.Const).cnst = new std::string((yyvsp[-2].Type)->getNewTy()); @@ -2805,7 +2840,7 @@ break; case 151: -#line 674 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 709 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Const).type = (yyvsp[-1].Type); (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy()); @@ -2815,7 +2850,7 @@ break; case 152: -#line 680 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 715 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Const).type = (yyvsp[-1].Type); (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy()); @@ -2825,7 +2860,7 @@ break; case 153: -#line 686 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 721 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { std::string Name = getUniqueName((yyvsp[0].String),(yyvsp[-1].Type)); (yyval.Const).type = (yyvsp[-1].Type); @@ -2836,7 +2871,7 @@ break; case 154: -#line 693 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 728 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Const).type = (yyvsp[-1].Type); (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy()); @@ -2846,7 +2881,7 @@ break; case 155: -#line 699 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 734 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Const).type = (yyvsp[-1].Type); (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy()); @@ -2856,7 +2891,7 @@ break; case 156: -#line 705 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 740 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // integral constants (yyval.Const).type = (yyvsp[-1].Type); (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy()); @@ -2866,7 +2901,7 @@ break; case 157: -#line 711 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 746 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // integral constants (yyval.Const).type = (yyvsp[-1].Type); (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy()); @@ -2876,7 +2911,7 @@ break; case 158: -#line 717 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 752 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Boolean constants (yyval.Const).type = (yyvsp[-1].Type); (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy()); @@ -2886,7 +2921,7 @@ break; case 159: -#line 723 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 758 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Boolean constants (yyval.Const).type = (yyvsp[-1].Type); (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy()); @@ -2896,7 +2931,7 @@ break; case 160: -#line 729 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 764 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Float & Double constants (yyval.Const).type = (yyvsp[-1].Type); (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy()); @@ -2906,7 +2941,7 @@ break; case 161: -#line 737 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 772 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { std::string source = *(yyvsp[-3].Const).cnst; TypeInfo* DstTy = ResolveType((yyvsp[-1].Type)); @@ -2918,12 +2953,12 @@ (yyval.String) = new std::string(*(yyvsp[-5].String)); *(yyval.String) += "( " + source + " to " + (yyvsp[-1].Type)->getNewTy() + ")"; } - delete (yyvsp[-5].String); (yyvsp[-3].Const).destroy(); delete (yyvsp[-2].String); delete (yyvsp[-1].Type); + delete (yyvsp[-5].String); (yyvsp[-3].Const).destroy(); delete (yyvsp[-2].String); ;} break; case 162: -#line 750 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 785 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-4].String) += "(" + *(yyvsp[-2].Const).cnst; for (unsigned i = 0; i < (yyvsp[-1].ValList)->size(); ++i) { @@ -2939,7 +2974,7 @@ break; case 163: -#line 762 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 797 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-7].String) += "(" + *(yyvsp[-5].Const).cnst + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")"; (yyvsp[-5].Const).destroy(); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy(); @@ -2948,7 +2983,7 @@ break; case 164: -#line 767 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 802 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { const char* op = getDivRemOpcode(*(yyvsp[-5].String), (yyvsp[-3].Const).type); (yyval.String) = new std::string(op); @@ -2958,7 +2993,7 @@ break; case 165: -#line 773 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 808 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-5].String) += "(" + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")"; (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy(); @@ -2967,7 +3002,7 @@ break; case 166: -#line 778 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 813 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-5].String) = getCompareOp(*(yyvsp[-5].String), (yyvsp[-3].Const).type); *(yyvsp[-5].String) += "(" + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")"; @@ -2977,7 +3012,7 @@ break; case 167: -#line 784 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 819 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-6].String) += "(" + *(yyvsp[-5].String) + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")"; delete (yyvsp[-5].String); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy(); @@ -2986,7 +3021,7 @@ break; case 168: -#line 789 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 824 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-6].String) += "(" + *(yyvsp[-5].String) + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")"; delete (yyvsp[-5].String); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy(); @@ -2995,7 +3030,7 @@ break; case 169: -#line 794 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 829 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { const char* shiftop = (yyvsp[-5].String)->c_str(); if (*(yyvsp[-5].String) == "shr") @@ -3007,7 +3042,7 @@ break; case 170: -#line 802 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 837 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-5].String) += "(" + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")"; (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy(); @@ -3016,7 +3051,7 @@ break; case 171: -#line 807 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 842 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-7].String) += "(" + *(yyvsp[-5].Const).cnst + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")"; (yyvsp[-5].Const).destroy(); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy(); @@ -3025,7 +3060,7 @@ break; case 172: -#line 812 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 847 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-7].String) += "(" + *(yyvsp[-5].Const).cnst + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")"; (yyvsp[-5].Const).destroy(); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy(); @@ -3034,7 +3069,7 @@ break; case 173: -#line 822 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 857 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-2].String) += ", " + *(yyvsp[0].Const).cnst; (yyvsp[0].Const).destroy(); @@ -3043,25 +3078,25 @@ break; case 174: -#line 827 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 862 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(*(yyvsp[0].Const).cnst); (yyvsp[0].Const).destroy(); ;} break; case 177: -#line 842 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 877 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { ;} break; case 178: -#line 847 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 882 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = 0; ;} break; case 179: -#line 850 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 885 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *O << *(yyvsp[0].String) << '\n'; delete (yyvsp[0].String); @@ -3070,7 +3105,7 @@ break; case 180: -#line 855 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 890 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *O << "module asm " << ' ' << *(yyvsp[0].String) << '\n'; (yyval.String) = 0; @@ -3078,7 +3113,7 @@ break; case 181: -#line 859 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 894 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *O << "implementation\n"; (yyval.String) = 0; @@ -3086,17 +3121,17 @@ break; case 182: -#line 863 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 898 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = 0; ;} break; case 184: -#line 865 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 900 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = (yyvsp[0].String); *(yyval.String) = "external"; ;} break; case 185: -#line 868 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 903 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { EnumeratedTypes.push_back(*(yyvsp[0].Type)); if (!(yyvsp[-2].String)->empty()) { @@ -3110,7 +3145,7 @@ break; case 186: -#line 878 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 913 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Function prototypes can be in const pool *O << *(yyvsp[0].String) << '\n'; delete (yyvsp[0].String); @@ -3119,7 +3154,7 @@ break; case 187: -#line 883 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 918 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Asm blocks can be in the const pool *O << *(yyvsp[-2].String) << ' ' << *(yyvsp[-1].String) << ' ' << *(yyvsp[0].String) << '\n'; delete (yyvsp[-2].String); delete (yyvsp[-1].String); delete (yyvsp[0].String); @@ -3128,7 +3163,7 @@ break; case 188: -#line 888 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 923 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-4].String)->empty()) { std::string Name = getUniqueName((yyvsp[-4].String),(yyvsp[-1].Const).type); @@ -3142,7 +3177,7 @@ break; case 189: -#line 898 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 933 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-4].String)->empty()) { std::string Name = getUniqueName((yyvsp[-4].String),(yyvsp[-1].Type)); @@ -3156,7 +3191,7 @@ break; case 190: -#line 908 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 943 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-4].String)->empty()) { std::string Name = getUniqueName((yyvsp[-4].String),(yyvsp[-1].Type)); @@ -3170,7 +3205,7 @@ break; case 191: -#line 918 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 953 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-4].String)->empty()) { std::string Name = getUniqueName((yyvsp[-4].String),(yyvsp[-1].Type)); @@ -3184,7 +3219,7 @@ break; case 192: -#line 928 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 963 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *O << *(yyvsp[-1].String) << ' ' << *(yyvsp[0].String) << '\n'; delete (yyvsp[-1].String); delete (yyvsp[0].String); @@ -3193,7 +3228,7 @@ break; case 193: -#line 933 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 968 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *O << *(yyvsp[-2].String) << " = " << *(yyvsp[0].String) << '\n'; delete (yyvsp[-2].String); delete (yyvsp[0].String); @@ -3202,14 +3237,14 @@ break; case 194: -#line 938 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 973 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = 0; ;} break; case 198: -#line 948 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 983 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-2].String) += " = " + *(yyvsp[0].String); delete (yyvsp[0].String); @@ -3218,7 +3253,7 @@ break; case 199: -#line 953 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 988 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-2].String) += " = " + *(yyvsp[0].String); if (*(yyvsp[0].String) == "64") @@ -3229,7 +3264,7 @@ break; case 200: -#line 960 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 995 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-2].String) += " = " + *(yyvsp[0].String); delete (yyvsp[0].String); @@ -3238,7 +3273,7 @@ break; case 201: -#line 965 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1000 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-2].String) += " = " + *(yyvsp[0].String); delete (yyvsp[0].String); @@ -3247,7 +3282,7 @@ break; case 202: -#line 972 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1007 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyvsp[-1].String)->insert(0, "[ "); *(yyvsp[-1].String) += " ]"; @@ -3256,7 +3291,7 @@ break; case 203: -#line 979 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1014 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-2].String) += ", " + *(yyvsp[0].String); delete (yyvsp[0].String); @@ -3265,19 +3300,19 @@ break; case 205: -#line 985 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1020 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 209: -#line 994 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1029 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 210: -#line 996 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1031 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string((yyvsp[-1].Type)->getNewTy()); if (!(yyvsp[0].String)->empty()) { @@ -3289,7 +3324,7 @@ break; case 211: -#line 1005 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1040 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-2].String) += ", " + *(yyvsp[0].String); delete (yyvsp[0].String); @@ -3297,21 +3332,21 @@ break; case 212: -#line 1009 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1044 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = (yyvsp[0].String); ;} break; case 213: -#line 1013 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1048 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = (yyvsp[0].String); ;} break; case 214: -#line 1016 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1051 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-2].String) += ", ..."; (yyval.String) = (yyvsp[-2].String); @@ -3320,19 +3355,19 @@ break; case 215: -#line 1021 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1056 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = (yyvsp[0].String); ;} break; case 216: -#line 1024 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1059 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 217: -#line 1027 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1062 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-7].String)->empty()) { *(yyvsp[-7].String) += " "; @@ -3353,17 +3388,17 @@ break; case 218: -#line 1045 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1080 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string("{"); delete (yyvsp[0].String); ;} break; case 219: -#line 1046 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1081 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string ("{"); ;} break; case 220: -#line 1049 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1084 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *O << "define "; if (!(yyvsp[-2].String)->empty()) { @@ -3376,17 +3411,17 @@ break; case 221: -#line 1060 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1095 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string("}"); delete (yyvsp[0].String); ;} break; case 222: -#line 1061 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1096 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string("}"); ;} break; case 223: -#line 1063 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1098 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { if ((yyvsp[-1].String)) *O << *(yyvsp[-1].String); @@ -3397,12 +3432,12 @@ break; case 224: -#line 1072 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1107 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 227: -#line 1078 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1113 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-1].String)->empty()) *(yyvsp[-2].String) += " " + *(yyvsp[-1].String); @@ -3414,12 +3449,12 @@ break; case 228: -#line 1091 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1126 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 238: -#line 1097 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1132 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyvsp[-1].String)->insert(0, "<"); *(yyvsp[-1].String) += ">"; @@ -3428,7 +3463,7 @@ break; case 240: -#line 1103 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1138 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-3].String)->empty()) { *(yyvsp[-4].String) += " " + *(yyvsp[-3].String); @@ -3440,7 +3475,7 @@ break; case 243: -#line 1116 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1151 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Value).val = (yyvsp[0].String); (yyval.Value).constant = false; @@ -3449,7 +3484,7 @@ break; case 244: -#line 1121 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1156 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Value).val = (yyvsp[0].String); (yyval.Value).constant = true; @@ -3458,8 +3493,9 @@ break; case 245: -#line 1131 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1166 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { + ResolveType((yyvsp[-1].Type)); std::string Name = getUniqueName((yyvsp[0].Value).val, (yyvsp[-1].Type)); (yyval.Value) = (yyvsp[0].Value); delete (yyval.Value).val; @@ -3470,28 +3506,28 @@ break; case 246: -#line 1140 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1176 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = 0; ;} break; case 247: -#line 1143 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1179 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Do not allow functions with 0 basic blocks (yyval.String) = 0; ;} break; case 248: -#line 1151 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1187 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = 0; ;} break; case 249: -#line 1155 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1191 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *O << " " << *(yyvsp[0].String) << '\n'; delete (yyvsp[0].String); @@ -3500,14 +3536,14 @@ break; case 250: -#line 1160 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1196 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = 0; ;} break; case 251: -#line 1163 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1199 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *O << *(yyvsp[0].String) << '\n'; delete (yyvsp[0].String); @@ -3516,12 +3552,12 @@ break; case 253: -#line 1169 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1205 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = (yyvsp[0].String); *(yyval.String) = "unwind"; ;} break; case 254: -#line 1171 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1207 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Return with a result... *O << " " << *(yyvsp[-1].String) << ' ' << *(yyvsp[0].Value).val << '\n'; delete (yyvsp[-1].String); (yyvsp[0].Value).destroy(); @@ -3530,7 +3566,7 @@ break; case 255: -#line 1176 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1212 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Return with no result... *O << " " << *(yyvsp[-1].String) << ' ' << (yyvsp[0].Type)->getNewTy() << '\n'; delete (yyvsp[-1].String); delete (yyvsp[0].Type); @@ -3539,7 +3575,7 @@ break; case 256: -#line 1181 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1217 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Unconditional Branch... *O << " " << *(yyvsp[-2].String) << ' ' << (yyvsp[-1].Type)->getNewTy() << ' ' << *(yyvsp[0].Value).val << '\n'; delete (yyvsp[-2].String); delete (yyvsp[-1].Type); (yyvsp[0].Value).destroy(); @@ -3548,7 +3584,7 @@ break; case 257: -#line 1186 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1222 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { std::string Name = getUniqueName((yyvsp[-6].Value).val, (yyvsp[-7].Type)); *O << " " << *(yyvsp[-8].String) << ' ' << (yyvsp[-7].Type)->getNewTy() << ' ' << Name << ", " @@ -3561,7 +3597,7 @@ break; case 258: -#line 1195 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1231 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { std::string Name = getUniqueName((yyvsp[-6].Value).val, (yyvsp[-7].Type)); *O << " " << *(yyvsp[-8].String) << ' ' << (yyvsp[-7].Type)->getNewTy() << ' ' << Name << ", " @@ -3573,7 +3609,7 @@ break; case 259: -#line 1203 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1239 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { std::string Name = getUniqueName((yyvsp[-5].Value).val, (yyvsp[-6].Type)); *O << " " << *(yyvsp[-7].String) << ' ' << (yyvsp[-6].Type)->getNewTy() << ' ' << Name << ", " @@ -3584,7 +3620,7 @@ break; case 260: -#line 1211 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1247 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { TypeInfo* ResTy = getFunctionReturnType((yyvsp[-10].Type)); *O << " "; @@ -3610,7 +3646,7 @@ break; case 261: -#line 1233 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1269 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *O << " " << *(yyvsp[0].String) << '\n'; delete (yyvsp[0].String); @@ -3619,7 +3655,7 @@ break; case 262: -#line 1238 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1274 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *O << " " << *(yyvsp[0].String) << '\n'; delete (yyvsp[0].String); @@ -3628,7 +3664,7 @@ break; case 263: -#line 1244 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1280 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-5].String) += " " + (yyvsp[-4].Type)->getNewTy() + " " + *(yyvsp[-3].String) + ", " + (yyvsp[-1].Type)->getNewTy() + " " + *(yyvsp[0].Value).val; @@ -3638,7 +3674,7 @@ break; case 264: -#line 1250 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1286 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyvsp[-3].String)->insert(0, (yyvsp[-4].Type)->getNewTy() + " " ); *(yyvsp[-3].String) += ", " + (yyvsp[-1].Type)->getNewTy() + " " + *(yyvsp[0].Value).val; @@ -3648,7 +3684,7 @@ break; case 265: -#line 1258 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1294 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-1].String)->empty()) { if (deleteUselessCastFlag && *deleteUselessCastName == *(yyvsp[-1].String)) { @@ -3668,7 +3704,7 @@ break; case 266: -#line 1276 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1312 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { // Used for PHI nodes std::string Name = getUniqueName((yyvsp[-3].Value).val, (yyvsp[-5].Type)); Name.insert(0, (yyvsp[-5].Type)->getNewTy() + "["); @@ -3680,7 +3716,7 @@ break; case 267: -#line 1284 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1320 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { std::string Name = getUniqueName((yyvsp[-3].Value).val, (yyvsp[-6].Value).type); *(yyvsp[-6].Value).val += ", [" + Name + "," + *(yyvsp[-1].Value).val + "]"; @@ -3690,7 +3726,7 @@ break; case 268: -#line 1293 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1329 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValList) = new ValueList(); (yyval.ValList)->push_back((yyvsp[0].Value)); @@ -3698,7 +3734,7 @@ break; case 269: -#line 1297 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1333 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValList) = (yyvsp[-2].ValList); (yyval.ValList)->push_back((yyvsp[0].Value)); @@ -3706,17 +3742,17 @@ break; case 270: -#line 1304 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1340 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValList) = (yyvsp[0].ValList); ;} break; case 271: -#line 1305 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1341 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValList) = new ValueList(); ;} break; case 272: -#line 1309 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1345 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-1].String) += " " + *(yyvsp[0].String); delete (yyvsp[0].String); @@ -3725,7 +3761,7 @@ break; case 274: -#line 1317 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1353 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { const char* op = getDivRemOpcode(*(yyvsp[-4].String), (yyvsp[-3].Type)); std::string Name1 = getUniqueName((yyvsp[-2].Value).val, (yyvsp[-3].Type)); @@ -3738,7 +3774,7 @@ break; case 275: -#line 1326 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1362 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { std::string Name1 = getUniqueName((yyvsp[-2].Value).val, (yyvsp[-3].Type)); std::string Name2 = getUniqueName((yyvsp[0].Value).val, (yyvsp[-3].Type)); @@ -3750,7 +3786,7 @@ break; case 276: -#line 1334 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1370 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { std::string Name1 = getUniqueName((yyvsp[-2].Value).val, (yyvsp[-3].Type)); std::string Name2 = getUniqueName((yyvsp[0].Value).val, (yyvsp[-3].Type)); @@ -3763,7 +3799,7 @@ break; case 277: -#line 1343 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1379 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { std::string Name1 = getUniqueName((yyvsp[-2].Value).val, (yyvsp[-3].Type)); std::string Name2 = getUniqueName((yyvsp[0].Value).val, (yyvsp[-3].Type)); @@ -3775,7 +3811,7 @@ break; case 278: -#line 1351 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1387 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { std::string Name1 = getUniqueName((yyvsp[-2].Value).val, (yyvsp[-3].Type)); std::string Name2 = getUniqueName((yyvsp[0].Value).val, (yyvsp[-3].Type)); @@ -3787,7 +3823,7 @@ break; case 279: -#line 1359 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1395 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Value) = (yyvsp[0].Value); (yyval.Value).val->insert(0, *(yyvsp[-1].String) + " "); @@ -3796,7 +3832,7 @@ break; case 280: -#line 1364 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1400 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { const char* shiftop = (yyvsp[-3].String)->c_str(); if (*(yyvsp[-3].String) == "shr") @@ -3809,7 +3845,7 @@ break; case 281: -#line 1373 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1409 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { std::string source = *(yyvsp[-2].Value).val; TypeInfo* SrcTy = (yyvsp[-2].Value).type; @@ -3841,7 +3877,7 @@ break; case 282: -#line 1401 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1437 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-5].String) += " " + *(yyvsp[-4].Value).val + ", " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val; (yyval.Value).val = (yyvsp[-5].String); @@ -3851,7 +3887,7 @@ break; case 283: -#line 1407 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1443 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-3].String) += " " + *(yyvsp[-2].Value).val + ", " + (yyvsp[0].Type)->getNewTy(); (yyval.Value).val = (yyvsp[-3].String); @@ -3861,18 +3897,18 @@ break; case 284: -#line 1413 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1449 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-3].String) += " " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val; (yyval.Value).val = (yyvsp[-3].String); ResolveType((yyvsp[-2].Value).type); - (yyval.Value).type = (yyvsp[-2].Value).type->getElementType()->clone(); + (yyval.Value).type = (yyvsp[-2].Value).type->getElementType(); delete (yyvsp[-2].Value).val; (yyvsp[0].Value).destroy(); ;} break; case 285: -#line 1420 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1456 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-5].String) += " " + *(yyvsp[-4].Value).val + ", " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val; (yyval.Value).val = (yyvsp[-5].String); @@ -3882,7 +3918,7 @@ break; case 286: -#line 1426 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1462 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-5].String) += " " + *(yyvsp[-4].Value).val + ", " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val; (yyval.Value).val = (yyvsp[-5].String); @@ -3892,7 +3928,7 @@ break; case 287: -#line 1432 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1468 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-1].String) += " " + *(yyvsp[0].Value).val; (yyval.Value).val = (yyvsp[-1].String); @@ -3902,7 +3938,7 @@ break; case 288: -#line 1438 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1474 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-5].String)->empty()) *(yyvsp[-6].String) += " " + *(yyvsp[-5].String); @@ -3924,22 +3960,22 @@ break; case 290: -#line 1461 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1497 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValList) = (yyvsp[0].ValList); ;} break; case 291: -#line 1462 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1498 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValList) = new ValueList(); ;} break; case 293: -#line 1467 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1503 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 294: -#line 1470 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1506 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-2].String) += " " + (yyvsp[-1].Type)->getNewTy(); if (!(yyvsp[0].String)->empty()) @@ -3951,7 +3987,7 @@ break; case 295: -#line 1478 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1514 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { std::string Name = getUniqueName((yyvsp[-1].Value).val, (yyvsp[-2].Type)); *(yyvsp[-5].String) += " " + (yyvsp[-4].Type)->getNewTy() + ", " + (yyvsp[-2].Type)->getNewTy() + " " + Name; @@ -3964,7 +4000,7 @@ break; case 296: -#line 1487 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1523 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-2].String) += " " + (yyvsp[-1].Type)->getNewTy(); if (!(yyvsp[0].String)->empty()) @@ -3976,7 +4012,7 @@ break; case 297: -#line 1495 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1531 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { std::string Name = getUniqueName((yyvsp[-1].Value).val, (yyvsp[-2].Type)); *(yyvsp[-5].String) += " " + (yyvsp[-4].Type)->getNewTy() + ", " + (yyvsp[-2].Type)->getNewTy() + " " + Name; @@ -3989,7 +4025,7 @@ break; case 298: -#line 1504 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1540 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-1].String) += " " + *(yyvsp[0].Value).val; (yyval.Value).val = (yyvsp[-1].String); @@ -3999,7 +4035,7 @@ break; case 299: -#line 1510 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1546 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { std::string Name = getUniqueName((yyvsp[0].Value).val, (yyvsp[-1].Type)); if (!(yyvsp[-3].String)->empty()) @@ -4012,7 +4048,7 @@ break; case 300: -#line 1519 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1555 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { std::string Name = getUniqueName((yyvsp[0].Value).val, (yyvsp[-1].Type)); if (!(yyvsp[-5].String)->empty()) @@ -4025,7 +4061,7 @@ break; case 301: -#line 1528 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1564 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" { std::string Name = getUniqueName((yyvsp[-1].Value).val, (yyvsp[-2].Type)); // Upgrade the indices @@ -4056,7 +4092,7 @@ } /* Line 1126 of yacc.c. */ -#line 4060 "UpgradeParser.tab.c" +#line 4096 "UpgradeParser.tab.c" yyvsp -= yylen; yyssp -= yylen; @@ -4324,7 +4360,7 @@ } -#line 1552 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1588 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" int yyerror(const char *ErrorMsg) { Index: llvm/tools/llvm-upgrade/UpgradeParser.h diff -u llvm/tools/llvm-upgrade/UpgradeParser.h:1.24 llvm/tools/llvm-upgrade/UpgradeParser.h:1.25 --- llvm/tools/llvm-upgrade/UpgradeParser.h:1.24 Mon Jan 1 23:45:11 2007 +++ llvm/tools/llvm-upgrade/UpgradeParser.h Wed Jan 3 17:45:42 2007 @@ -333,7 +333,7 @@ #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) -#line 357 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 400 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" typedef union YYSTYPE { std::string* String; TypeInfo* Type; Index: llvm/tools/llvm-upgrade/UpgradeParser.h.cvs diff -u llvm/tools/llvm-upgrade/UpgradeParser.h.cvs:1.22 llvm/tools/llvm-upgrade/UpgradeParser.h.cvs:1.23 --- llvm/tools/llvm-upgrade/UpgradeParser.h.cvs:1.22 Mon Jan 1 23:45:11 2007 +++ llvm/tools/llvm-upgrade/UpgradeParser.h.cvs Wed Jan 3 17:45:42 2007 @@ -333,7 +333,7 @@ #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) -#line 357 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 400 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" typedef union YYSTYPE { std::string* String; TypeInfo* Type; Index: llvm/tools/llvm-upgrade/UpgradeParser.y.cvs diff -u llvm/tools/llvm-upgrade/UpgradeParser.y.cvs:1.29 llvm/tools/llvm-upgrade/UpgradeParser.y.cvs:1.30 --- llvm/tools/llvm-upgrade/UpgradeParser.y.cvs:1.29 Tue Jan 2 00:34:08 2007 +++ llvm/tools/llvm-upgrade/UpgradeParser.y.cvs Wed Jan 3 17:45:42 2007 @@ -78,24 +78,26 @@ TypeInfo* ResolveType(TypeInfo*& Ty) { if (Ty->isUnresolved()) { - TypeMap::iterator I = NamedTypes.find(Ty->getNewTy()); - if (I != NamedTypes.end()) { - Ty = I->second.clone(); - return Ty; - } else { - std::string msg("Cannot resolve type: "); - msg += Ty->getNewTy(); - yyerror(msg.c_str()); - } - } else if (Ty->isNumeric()) { - unsigned ref = atoi(&((Ty->getNewTy().c_str())[1])); // Skip the '\\' - if (ref < EnumeratedTypes.size()) { - Ty = EnumeratedTypes[ref].clone(); - return Ty; + if (Ty->getNewTy()[0] == '%' && isdigit(Ty->getNewTy()[1])) { + unsigned ref = atoi(&((Ty->getNewTy().c_str())[1])); // skip the % + if (ref < EnumeratedTypes.size()) { + Ty = &EnumeratedTypes[ref]; + return Ty; + } else { + std::string msg("Can't resolve numbered type: "); + msg += Ty->getNewTy(); + yyerror(msg.c_str()); + } } else { - std::string msg("Can't resolve type: "); - msg += Ty->getNewTy(); - yyerror(msg.c_str()); + TypeMap::iterator I = NamedTypes.find(Ty->getNewTy()); + if (I != NamedTypes.end()) { + Ty = &I->second; + return Ty; + } else { + std::string msg("Cannot resolve type: "); + msg += Ty->getNewTy(); + yyerror(msg.c_str()); + } } } // otherwise its already resolved. @@ -293,18 +295,35 @@ return PFTy->clone(); } +typedef std::vector UpRefStack; +static TypeInfo* ResolveUpReference(TypeInfo* Ty, UpRefStack* stack) { + assert(Ty->isUpReference() && "Can't resolve a non-upreference"); + unsigned upref = atoi(&((Ty->getNewTy().c_str())[1])); // skip the slash + assert(upref < stack->size() && "Invalid up reference"); + return (*stack)[upref - stack->size() - 1]; +} + static TypeInfo* getGEPIndexedType(TypeInfo* PTy, ValueList* idxs) { - ResolveType(PTy); + TypeInfo* Result = ResolveType(PTy); assert(PTy->isPointer() && "GEP Operand is not a pointer?"); - TypeInfo* Result = PTy->getElementType(); // just skip first index - ResolveType(Result); - for (unsigned i = 1; i < idxs->size(); ++i) { + UpRefStack stack; + for (unsigned i = 0; i < idxs->size(); ++i) { if (Result->isComposite()) { Result = Result->getIndexedType((*idxs)[i]); ResolveType(Result); + stack.push_back(Result); } else yyerror("Invalid type for index"); } + // Resolve upreferences so we can return a more natural type + if (Result->isPointer()) { + if (Result->getElementType()->isUpReference()) { + stack.push_back(Result); + Result = ResolveUpReference(Result->getElementType(), &stack); + } + } else if (Result->isUpReference()) { + Result = ResolveUpReference(Result->getElementType(), &stack); + } return Result->getPointerType(); } @@ -335,17 +354,41 @@ // Resolve the type ResolveType(Ty); + // Remove as many levels of pointer nesting that we have. + if (Ty->isPointer()) { + // Avoid infinite loops in recursive types + TypeInfo* Last = 0; + while (Ty->isPointer() && Last != Ty) { + Last = Ty; + Ty = Ty->getElementType(); + ResolveType(Ty); + } + } + // Default the result to the current name std::string Result = *Name; + // Now deal with the underlying type if (Ty->isInteger()) { // If its an integer type, make the name unique Result = makeUniqueName(Name, Ty->isSigned()); - } else if (Ty->isPointer()) { - while (Ty->isPointer()) - Ty = Ty->getElementType(); + } else if (Ty->isArray() || Ty->isPacked()) { + Ty = Ty->getElementType(); if (Ty->isInteger()) Result = makeUniqueName(Name, Ty->isSigned()); + } else if (Ty->isStruct()) { + // Scan the fields and count the signed and unsigned fields + int isSigned = 0; + for (unsigned i = 0; i < Ty->getNumStructElements(); ++i) { + TypeInfo* Tmp = Ty->getElement(i); + if (Tmp->isInteger()) + if (Tmp->isSigned()) + isSigned++; + else + isSigned--; + } + if (isSigned != 0) + Result = makeUniqueName(Name, isSigned > 0); } return Result; } @@ -536,7 +579,7 @@ } | '\\' EUINT64VAL { // Type UpReference $2->insert(0, "\\"); - $$ = new TypeInfo($2, NumericTy); + $$ = new TypeInfo($2, UpRefTy); } | UpRTypesV '(' ArgTypeListI ')' { // Function derived type? std::string newTy( $1->getNewTy() + "("); @@ -550,21 +593,18 @@ } newTy += ")"; $$ = new TypeInfo(new std::string(newTy), $1, $3); - EnumeratedTypes.push_back(*$$); } | '[' EUINT64VAL 'x' UpRTypes ']' { // Sized array type? $2->insert(0,"[ "); *$2 += " x " + $4->getNewTy() + " ]"; uint64_t elems = atoi($2->c_str()); $$ = new TypeInfo($2, ArrayTy, $4, elems); - EnumeratedTypes.push_back(*$$); } | '<' EUINT64VAL 'x' UpRTypes '>' { // Packed array type? $2->insert(0,"< "); *$2 += " x " + $4->getNewTy() + " >"; uint64_t elems = atoi($2->c_str()); $$ = new TypeInfo($2, PackedTy, $4, elems); - EnumeratedTypes.push_back(*$$); } | '{' TypeListI '}' { // Structure type? std::string newTy("{"); @@ -575,11 +615,9 @@ } newTy += "}"; $$ = new TypeInfo(new std::string(newTy), StructTy, $2); - EnumeratedTypes.push_back(*$$); } | '{' '}' { // Empty structure type? $$ = new TypeInfo(new std::string("{}"), StructTy, new TypeList()); - EnumeratedTypes.push_back(*$$); } | '<' '{' TypeListI '}' '>' { // Packed Structure type? std::string newTy("<{"); @@ -590,15 +628,12 @@ } newTy += "}>"; $$ = new TypeInfo(new std::string(newTy), PackedStructTy, $3); - EnumeratedTypes.push_back(*$$); } | '<' '{' '}' '>' { // Empty packed structure type? $$ = new TypeInfo(new std::string("<{}>"), PackedStructTy, new TypeList()); - EnumeratedTypes.push_back(*$$); } | UpRTypes '*' { // Pointer type? $$ = $1->getPointerType(); - EnumeratedTypes.push_back(*$$); }; // TypeList - Used for struct declarations and as a basis for function type @@ -745,7 +780,7 @@ $$ = new std::string(*$1); *$$ += "( " + source + " to " + $5->getNewTy() + ")"; } - delete $1; $3.destroy(); delete $4; delete $5; + delete $1; $3.destroy(); delete $4; } | GETELEMENTPTR '(' ConstVal IndexList ')' { *$1 += "(" + *$3.cnst; @@ -1129,6 +1164,7 @@ // type immediately preceeds the value reference, and allows complex constant // pool references (for things like: 'ret [2 x int] [ int 12, int 42]') ResolvedVal : Types ValueRef { + ResolveType($1); std::string Name = getUniqueName($2.val, $1); $$ = $2; delete $$.val; @@ -1414,7 +1450,7 @@ *$1 += " " + *$2.val + ", " + *$4.val; $$.val = $1; ResolveType($2.type); - $$.type = $2.type->getElementType()->clone(); + $$.type = $2.type->getElementType(); delete $2.val; $4.destroy(); } | INSERTELEMENT ResolvedVal ',' ResolvedVal ',' ResolvedVal { From reid at x10sys.com Wed Jan 3 17:47:47 2007 From: reid at x10sys.com (Reid Spencer) Date: Wed, 3 Jan 2007 17:47:47 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/Linker/2005-12-06-AppendingZeroLengthArrays.ll weakextern.ll Message-ID: <200701032347.l03Nllfi003607@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/Linker: 2005-12-06-AppendingZeroLengthArrays.ll updated: 1.2 -> 1.3 weakextern.ll updated: 1.4 -> 1.5 --- Log message: Update test cases that grepped for register names that have now changed as a result of llvm-upgrade handling collapsed type planes better. --- Diffs of the changes: (+4 -3) 2005-12-06-AppendingZeroLengthArrays.ll | 5 +++-- weakextern.ll | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) Index: llvm/test/Regression/Linker/2005-12-06-AppendingZeroLengthArrays.ll diff -u llvm/test/Regression/Linker/2005-12-06-AppendingZeroLengthArrays.ll:1.2 llvm/test/Regression/Linker/2005-12-06-AppendingZeroLengthArrays.ll:1.3 --- llvm/test/Regression/Linker/2005-12-06-AppendingZeroLengthArrays.ll:1.2 Sun Dec 31 00:01:59 2006 +++ llvm/test/Regression/Linker/2005-12-06-AppendingZeroLengthArrays.ll Wed Jan 3 17:47:29 2007 @@ -1,6 +1,7 @@ -; RUN: echo "%G = appending global [0 x int] zeroinitializer" | llvm-upgrade | llvm-as > %t.out2.bc +; RUN: echo "%G = appending global [0 x int] zeroinitializer" | llvm-upgrade |\ +; RUN: llvm-as > %t.out2.bc ; RUN: llvm-upgrade < %s | llvm-as > %t.out1.bc -; RUN: llvm-link %t.out[12].bc | llvm-dis | grep '%G =' +; RUN: llvm-link %t.out[12].bc | llvm-dis | grep '%G.s =' ; When linked, the globals should be merged, and the result should still ; be named '%G'. Index: llvm/test/Regression/Linker/weakextern.ll diff -u llvm/test/Regression/Linker/weakextern.ll:1.4 llvm/test/Regression/Linker/weakextern.ll:1.5 --- llvm/test/Regression/Linker/weakextern.ll:1.4 Mon Jan 1 23:55:05 2007 +++ llvm/test/Regression/Linker/weakextern.ll Wed Jan 3 17:47:29 2007 @@ -1,7 +1,7 @@ ; RUN: llvm-upgrade < %s | llvm-as > %t.bc ; RUN: llvm-upgrade < `dirname %s`/testlink1.ll | llvm-as > %t2.bc ; RUN: llvm-link %t.bc %t.bc %t2.bc -o %t1.bc -f -; RUN: llvm-dis < %t1.bc | grep "kallsyms_names = extern_weak" && +; RUN: llvm-dis < %t1.bc | grep "kallsyms_names.u = extern_weak" && ; RUN: llvm-dis < %t1.bc | grep "MyVar.s = external global i32" && ; RUN: llvm-dis < %t1.bc | grep "Inte.s = global i32" From reid at x10sys.com Wed Jan 3 17:47:48 2007 From: reid at x10sys.com (Reid Spencer) Date: Wed, 3 Jan 2007 17:47:48 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/CodeGen/X86/loop-hoist.ll packed_struct.ll Message-ID: <200701032347.l03Nlm61003615@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/CodeGen/X86: loop-hoist.ll updated: 1.4 -> 1.5 packed_struct.ll updated: 1.2 -> 1.3 --- Log message: Update test cases that grepped for register names that have now changed as a result of llvm-upgrade handling collapsed type planes better. --- Diffs of the changes: (+11 -7) loop-hoist.ll | 8 ++++++-- packed_struct.ll | 10 +++++----- 2 files changed, 11 insertions(+), 7 deletions(-) Index: llvm/test/Regression/CodeGen/X86/loop-hoist.ll diff -u llvm/test/Regression/CodeGen/X86/loop-hoist.ll:1.4 llvm/test/Regression/CodeGen/X86/loop-hoist.ll:1.5 --- llvm/test/Regression/CodeGen/X86/loop-hoist.ll:1.4 Sun Dec 31 00:01:59 2006 +++ llvm/test/Regression/CodeGen/X86/loop-hoist.ll Wed Jan 3 17:47:29 2007 @@ -1,5 +1,9 @@ -; RUN: llvm-upgrade < %s | llvm-as | llc -relocation-model=dynamic-no-pic -mtriple=i686-apple-darwin8.7.2 | grep L_Arr.non_lazy_ptr && -; RUN: llvm-upgrade < %s | llvm-as | llc -relocation-model=dynamic-no-pic -mtriple=i686-apple-darwin8.7.2 | %prcontext L_Arr.non_lazy_ptr 1 | grep '4(%esp)' +; RUN: llvm-upgrade < %s | llvm-as | \ +; RUN: llc -relocation-model=dynamic-no-pic -mtriple=i686-apple-darwin8.7.2 |\ +; RUN: grep L_Arr.s.non_lazy_ptr && +; RUN: llvm-upgrade < %s | llvm-as | \ +; RUN: llc -relocation-model=dynamic-no-pic -mtriple=i686-apple-darwin8.7.2 |\ +; RUN: %prcontext L_Arr.s.non_lazy_ptr 1 | grep '4(%esp)' %Arr = external global [0 x int] ; <[0 x int]*> [#uses=2] Index: llvm/test/Regression/CodeGen/X86/packed_struct.ll diff -u llvm/test/Regression/CodeGen/X86/packed_struct.ll:1.2 llvm/test/Regression/CodeGen/X86/packed_struct.ll:1.3 --- llvm/test/Regression/CodeGen/X86/packed_struct.ll:1.2 Fri Dec 29 14:01:32 2006 +++ llvm/test/Regression/CodeGen/X86/packed_struct.ll Wed Jan 3 17:47:29 2007 @@ -1,8 +1,8 @@ -; RUN: llvm-upgrade < %s | llvm-as | llc -march=x86 |grep "foos+5" && -; RUN: llvm-upgrade < %s | llvm-as | llc -march=x86 |grep "foos+1" && -; RUN: llvm-upgrade < %s | llvm-as | llc -march=x86 |grep "foos+9" && -; RUN: llvm-upgrade < %s | llvm-as | llc -march=x86 |grep "bara+19" && -; RUN: llvm-upgrade < %s | llvm-as | llc -march=x86 |grep "bara+4" +; RUN: llvm-upgrade < %s | llvm-as | llc -march=x86 | grep "foos.s+5" && +; RUN: llvm-upgrade < %s | llvm-as | llc -march=x86 | grep "foos.s+1" && +; RUN: llvm-upgrade < %s | llvm-as | llc -march=x86 | grep "foos.s+9" && +; RUN: llvm-upgrade < %s | llvm-as | llc -march=x86 | grep "bara+19" && +; RUN: llvm-upgrade < %s | llvm-as | llc -march=x86 | grep "bara+4" ; make sure we compute the correct offset for a packed structure From reid at x10sys.com Wed Jan 3 17:47:53 2007 From: reid at x10sys.com (Reid Spencer) Date: Wed, 3 Jan 2007 17:47:53 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/Transforms/GlobalOpt/memcpy.ll Message-ID: <200701032347.l03NlrPj003632@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/Transforms/GlobalOpt: memcpy.ll updated: 1.3 -> 1.4 --- Log message: Update test cases that grepped for register names that have now changed as a result of llvm-upgrade handling collapsed type planes better. --- Diffs of the changes: (+2 -1) memcpy.ll | 3 ++- 1 files changed, 2 insertions(+), 1 deletion(-) Index: llvm/test/Regression/Transforms/GlobalOpt/memcpy.ll diff -u llvm/test/Regression/Transforms/GlobalOpt/memcpy.ll:1.3 llvm/test/Regression/Transforms/GlobalOpt/memcpy.ll:1.4 --- llvm/test/Regression/Transforms/GlobalOpt/memcpy.ll:1.3 Sat Dec 2 14:41:07 2006 +++ llvm/test/Regression/Transforms/GlobalOpt/memcpy.ll Wed Jan 3 17:47:29 2007 @@ -1,4 +1,5 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -globalopt | llvm-dis | grep 'G1 = internal constant' +; RUN: llvm-upgrade < %s | llvm-as | opt -globalopt | llvm-dis | \ +; RUN: grep 'G1.s = internal constant' %G1 = internal global [58 x sbyte] c"asdlfkajsdlfkajsd;lfkajds;lfkjasd;flkajsd;lkfja;sdlkfjasd\00" From reid at x10sys.com Wed Jan 3 17:47:53 2007 From: reid at x10sys.com (Reid Spencer) Date: Wed, 3 Jan 2007 17:47:53 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/CodeGen/ARM/section.ll Message-ID: <200701032347.l03Nlrcj003627@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/CodeGen/ARM: section.ll updated: 1.5 -> 1.6 --- Log message: Update test cases that grepped for register names that have now changed as a result of llvm-upgrade handling collapsed type planes better. --- Diffs of the changes: (+3 -2) section.ll | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) Index: llvm/test/Regression/CodeGen/ARM/section.ll diff -u llvm/test/Regression/CodeGen/ARM/section.ll:1.5 llvm/test/Regression/CodeGen/ARM/section.ll:1.6 --- llvm/test/Regression/CodeGen/ARM/section.ll:1.5 Sat Dec 9 15:21:06 2006 +++ llvm/test/Regression/CodeGen/ARM/section.ll Wed Jan 3 17:47:29 2007 @@ -1,5 +1,6 @@ ; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm && -; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep "__DTOR_END__:" && -; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep '.section .dtors,"aw",.progbits' +; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep "__DTOR_END__.s:" && +; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | \ +; RUN: grep '.section .dtors,"aw",.progbits' %__DTOR_END__ = internal global [1 x int] zeroinitializer, section ".dtors" From reid at x10sys.com Wed Jan 3 17:47:51 2007 From: reid at x10sys.com (Reid Spencer) Date: Wed, 3 Jan 2007 17:47:51 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/Transforms/LCSSA/2006-06-03-IncorrectIDFPhis.ll Message-ID: <200701032347.l03NlpQc003622@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/Transforms/LCSSA: 2006-06-03-IncorrectIDFPhis.ll updated: 1.2 -> 1.3 --- Log message: Update test cases that grepped for register names that have now changed as a result of llvm-upgrade handling collapsed type planes better. --- Diffs of the changes: (+4 -2) 2006-06-03-IncorrectIDFPhis.ll | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-) Index: llvm/test/Regression/Transforms/LCSSA/2006-06-03-IncorrectIDFPhis.ll diff -u llvm/test/Regression/Transforms/LCSSA/2006-06-03-IncorrectIDFPhis.ll:1.2 llvm/test/Regression/Transforms/LCSSA/2006-06-03-IncorrectIDFPhis.ll:1.3 --- llvm/test/Regression/Transforms/LCSSA/2006-06-03-IncorrectIDFPhis.ll:1.2 Fri Dec 1 22:23:09 2006 +++ llvm/test/Regression/Transforms/LCSSA/2006-06-03-IncorrectIDFPhis.ll Wed Jan 3 17:47:29 2007 @@ -1,5 +1,7 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -lcssa | llvm-dis | grep "%SJE.0.0.lcssa = phi .struct.SetJmpMapEntry" && -; RUN: llvm-upgrade < %s | llvm-as | opt -lcssa | llvm-dis | grep "%SJE.0.0.lcssa1 = phi .struct.SetJmpMapEntry" +; RUN: llvm-upgrade < %s | llvm-as | opt -lcssa | llvm-dis | \ +; RUN: grep "%SJE.0.0.u.lcssa = phi .struct.SetJmpMapEntry" && +; RUN: llvm-upgrade < %s | llvm-as | opt -lcssa | llvm-dis | \ +; RUN: grep "%SJE.0.0.u.lcssa1 = phi .struct.SetJmpMapEntry" %struct.SetJmpMapEntry = type { sbyte*, uint, %struct.SetJmpMapEntry* } From reid at x10sys.com Wed Jan 3 17:54:18 2007 From: reid at x10sys.com (Reid Spencer) Date: Wed, 3 Jan 2007 17:54:18 -0600 Subject: [llvm-commits] CVS: llvm/test/Feature/paramattrs.ll Message-ID: <200701032354.l03NsIPS003740@zion.cs.uiuc.edu> Changes in directory llvm/test/Feature: paramattrs.ll added (r1.1) --- Log message: Add a test case to test parameter attributes feature. --- Diffs of the changes: (+18 -0) paramattrs.ll | 18 ++++++++++++++++++ 1 files changed, 18 insertions(+) Index: llvm/test/Feature/paramattrs.ll diff -c /dev/null llvm/test/Feature/paramattrs.ll:1.1 *** /dev/null Wed Jan 3 17:54:12 2007 --- llvm/test/Feature/paramattrs.ll Wed Jan 3 17:54:02 2007 *************** *** 0 **** --- 1,18 ---- + ; RUN: llvm-as < %s | llvm-dis > %t1.ll + ; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll + ; RUN: diff %t1.ll %t2.ll + + %FunTy = type i32(i8 @zext) + + declare i16 @(sext) "test"(i16 @sext %arg) ; Differ only by vararg + declare i16 "test2" (i16 %a1, i16 %a2) + + implementation + + define i32 %main(i32 %argc, i8 **%argv) { + %val = trunc i32 %argc to i16 + %res = call i16 @sext (i16 @sext) *%test(i16 %val) + %two = add i16 %res, %res + %retVal = sext i16 %two to i32 + ret i32 %retVal + } From reid at x10sys.com Wed Jan 3 18:03:52 2007 From: reid at x10sys.com (Reid Spencer) Date: Wed, 3 Jan 2007 18:03:52 -0600 Subject: [llvm-commits] CVS: llvm/test/Feature/paramattrs.ll Message-ID: <200701040003.l0403qZb003912@zion.cs.uiuc.edu> Changes in directory llvm/test/Feature: paramattrs.ll updated: 1.1 -> 1.2 --- Log message: Test @zext and @sext fully as well as testing the "short" call syntax. --- Diffs of the changes: (+5 -3) paramattrs.ll | 8 +++++--- 1 files changed, 5 insertions(+), 3 deletions(-) Index: llvm/test/Feature/paramattrs.ll diff -u llvm/test/Feature/paramattrs.ll:1.1 llvm/test/Feature/paramattrs.ll:1.2 --- llvm/test/Feature/paramattrs.ll:1.1 Wed Jan 3 17:54:02 2007 +++ llvm/test/Feature/paramattrs.ll Wed Jan 3 18:03:37 2007 @@ -2,10 +2,11 @@ ; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll ; RUN: diff %t1.ll %t2.ll -%FunTy = type i32(i8 @zext) +%ZFunTy = type i32(i8 @zext) +%SFunTy = type i32(i8 @sext) -declare i16 @(sext) "test"(i16 @sext %arg) ; Differ only by vararg -declare i16 "test2" (i16 %a1, i16 %a2) +declare i16 @(sext) "test"(i16 @sext %arg) +declare i8 @zext "test2" (i16 @zext %a2) implementation @@ -13,6 +14,7 @@ %val = trunc i32 %argc to i16 %res = call i16 @sext (i16 @sext) *%test(i16 %val) %two = add i16 %res, %res + %res = call i8 @zext %test2(i16 %two @zext) %retVal = sext i16 %two to i32 ret i32 %retVal } From reid at x10sys.com Wed Jan 3 18:06:03 2007 From: reid at x10sys.com (Reid Spencer) Date: Wed, 3 Jan 2007 18:06:03 -0600 Subject: [llvm-commits] CVS: llvm/lib/AsmParser/llvmAsmParser.y Message-ID: <200701040006.l04063Y7003967@zion.cs.uiuc.edu> Changes in directory llvm/lib/AsmParser: llvmAsmParser.y updated: 1.296 -> 1.297 --- Log message: Permit icmp and fcmp to have packed operands. Make an error message a little more useful. --- Diffs of the changes: (+2 -5) llvmAsmParser.y | 7 ++----- 1 files changed, 2 insertions(+), 5 deletions(-) Index: llvm/lib/AsmParser/llvmAsmParser.y diff -u llvm/lib/AsmParser/llvmAsmParser.y:1.296 llvm/lib/AsmParser/llvmAsmParser.y:1.297 --- llvm/lib/AsmParser/llvmAsmParser.y:1.296 Tue Jan 2 15:53:43 2007 +++ llvm/lib/AsmParser/llvmAsmParser.y Wed Jan 3 18:05:48 2007 @@ -1602,7 +1602,8 @@ if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*$1)->getDescription()); if ($1->get() != $2->getType()) - GEN_ERROR("Mismatched types for constant expression!"); + GEN_ERROR("Mismatched types for constant expression: " + + (*$1)->getDescription() + " and " + $2->getType()->getDescription()); $$ = $2; delete $1; CHECK_FOR_ERROR @@ -2548,8 +2549,6 @@ | ICMP IPredicates Types ValueRef ',' ValueRef { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*$3)->getDescription()); - if (isa((*$3).get())) - GEN_ERROR("Packed types not supported by icmp instruction"); Value* tmpVal1 = getVal(*$3, $4); CHECK_FOR_ERROR Value* tmpVal2 = getVal(*$3, $6); @@ -2561,8 +2560,6 @@ | FCMP FPredicates Types ValueRef ',' ValueRef { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*$3)->getDescription()); - if (isa((*$3).get())) - GEN_ERROR("Packed types not supported by fcmp instruction"); Value* tmpVal1 = getVal(*$3, $4); CHECK_FOR_ERROR Value* tmpVal2 = getVal(*$3, $6); From reid at x10sys.com Wed Jan 3 18:06:29 2007 From: reid at x10sys.com (Reid Spencer) Date: Wed, 3 Jan 2007 18:06:29 -0600 Subject: [llvm-commits] CVS: llvm/lib/AsmParser/llvmAsmParser.cpp.cvs llvmAsmParser.y.cvs Message-ID: <200701040006.l0406Tag003987@zion.cs.uiuc.edu> Changes in directory llvm/lib/AsmParser: llvmAsmParser.cpp.cvs updated: 1.42 -> 1.43 llvmAsmParser.y.cvs updated: 1.43 -> 1.44 --- Log message: Regenerate. --- Diffs of the changes: (+149 -155) llvmAsmParser.cpp.cvs | 297 ++++++++++++++++++++++++-------------------------- llvmAsmParser.y.cvs | 7 - 2 files changed, 149 insertions(+), 155 deletions(-) Index: llvm/lib/AsmParser/llvmAsmParser.cpp.cvs diff -u llvm/lib/AsmParser/llvmAsmParser.cpp.cvs:1.42 llvm/lib/AsmParser/llvmAsmParser.cpp.cvs:1.43 --- llvm/lib/AsmParser/llvmAsmParser.cpp.cvs:1.42 Tue Jan 2 15:54:12 2007 +++ llvm/lib/AsmParser/llvmAsmParser.cpp.cvs Wed Jan 3 18:06:14 2007 @@ -1659,21 +1659,21 @@ 1195, 1195, 1195, 1195, 1195, 1198, 1202, 1206, 1213, 1218, 1226, 1244, 1262, 1267, 1279, 1289, 1293, 1303, 1310, 1317, 1325, 1331, 1336, 1343, 1344, 1351, 1358, 1366, 1371, 1382, - 1410, 1426, 1455, 1483, 1504, 1519, 1531, 1538, 1601, 1610, - 1620, 1626, 1632, 1636, 1640, 1648, 1662, 1683, 1691, 1697, - 1708, 1713, 1718, 1727, 1733, 1739, 1748, 1752, 1760, 1760, - 1771, 1776, 1784, 1785, 1789, 1789, 1793, 1793, 1796, 1799, - 1811, 1835, 1846, 1846, 1855, 1855, 1863, 1863, 1873, 1876, - 1882, 1895, 1896, 1898, 1902, 1911, 1915, 1920, 1922, 1927, - 1932, 1941, 1941, 1942, 1942, 1944, 1954, 1965, 1969, 1978, - 1987, 1992, 2097, 2097, 2099, 2107, 2107, 2109, 2114, 2125, - 2129, 2134, 2138, 2142, 2146, 2150, 2154, 2158, 2162, 2166, - 2191, 2195, 2209, 2213, 2219, 2219, 2225, 2234, 2238, 2247, - 2258, 2267, 2279, 2292, 2296, 2300, 2305, 2314, 2333, 2342, - 2409, 2413, 2420, 2431, 2444, 2453, 2464, 2474, 2482, 2490, - 2493, 2494, 2501, 2505, 2510, 2531, 2548, 2561, 2574, 2587, - 2596, 2609, 2617, 2624, 2630, 2636, 2642, 2657, 2719, 2724, - 2728, 2735, 2742, 2750, 2757, 2765, 2773, 2787, 2804 + 1410, 1426, 1455, 1483, 1504, 1519, 1531, 1538, 1601, 1611, + 1621, 1627, 1633, 1637, 1641, 1649, 1663, 1684, 1692, 1698, + 1709, 1714, 1719, 1728, 1734, 1740, 1749, 1753, 1761, 1761, + 1772, 1777, 1785, 1786, 1790, 1790, 1794, 1794, 1797, 1800, + 1812, 1836, 1847, 1847, 1856, 1856, 1864, 1864, 1874, 1877, + 1883, 1896, 1897, 1899, 1903, 1912, 1916, 1921, 1923, 1928, + 1933, 1942, 1942, 1943, 1943, 1945, 1955, 1966, 1970, 1979, + 1988, 1993, 2098, 2098, 2100, 2108, 2108, 2110, 2115, 2126, + 2130, 2135, 2139, 2143, 2147, 2151, 2155, 2159, 2163, 2167, + 2192, 2196, 2210, 2214, 2220, 2220, 2226, 2235, 2239, 2248, + 2259, 2268, 2280, 2293, 2297, 2301, 2306, 2315, 2334, 2343, + 2410, 2414, 2421, 2432, 2445, 2454, 2465, 2475, 2483, 2491, + 2494, 2495, 2502, 2506, 2511, 2532, 2549, 2560, 2571, 2584, + 2593, 2606, 2614, 2621, 2627, 2633, 2639, 2654, 2716, 2721, + 2725, 2732, 2739, 2747, 2754, 2762, 2770, 2784, 2801 }; #endif @@ -3926,7 +3926,8 @@ if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); if ((yyvsp[-1].TypeVal)->get() != (yyvsp[0].ConstVal)->getType()) - GEN_ERROR("Mismatched types for constant expression!"); + GEN_ERROR("Mismatched types for constant expression: " + + (*(yyvsp[-1].TypeVal))->getDescription() + " and " + (yyvsp[0].ConstVal)->getType()->getDescription()); (yyval.ConstVal) = (yyvsp[0].ConstVal); delete (yyvsp[-1].TypeVal); CHECK_FOR_ERROR @@ -3934,7 +3935,7 @@ break; case 149: -#line 1610 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1611 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); @@ -3948,7 +3949,7 @@ break; case 150: -#line 1620 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1621 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // integral constants if (!ConstantInt::isValueValidForType((yyvsp[-1].PrimType), (yyvsp[0].SInt64Val))) GEN_ERROR("Constant value doesn't fit in type!"); @@ -3958,7 +3959,7 @@ break; case 151: -#line 1626 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1627 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // integral constants if (!ConstantInt::isValueValidForType((yyvsp[-1].PrimType), (yyvsp[0].UInt64Val))) GEN_ERROR("Constant value doesn't fit in type!"); @@ -3968,7 +3969,7 @@ break; case 152: -#line 1632 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1633 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Boolean constants (yyval.ConstVal) = ConstantBool::getTrue(); CHECK_FOR_ERROR @@ -3976,7 +3977,7 @@ break; case 153: -#line 1636 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1637 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Boolean constants (yyval.ConstVal) = ConstantBool::getFalse(); CHECK_FOR_ERROR @@ -3984,7 +3985,7 @@ break; case 154: -#line 1640 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1641 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Float & Double constants if (!ConstantFP::isValueValidForType((yyvsp[-1].PrimType), (yyvsp[0].FPVal))) GEN_ERROR("Floating point constant invalid for type!!"); @@ -3994,7 +3995,7 @@ break; case 155: -#line 1648 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1649 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); @@ -4012,7 +4013,7 @@ break; case 156: -#line 1662 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1663 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!isa((yyvsp[-2].ConstVal)->getType())) GEN_ERROR("GetElementPtr requires a pointer operand!"); @@ -4037,7 +4038,7 @@ break; case 157: -#line 1683 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1684 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[-5].ConstVal)->getType() != Type::BoolTy) GEN_ERROR("Select condition must be of boolean type!"); @@ -4049,7 +4050,7 @@ break; case 158: -#line 1691 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1692 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType()) GEN_ERROR("Binary operator types must match!"); @@ -4059,7 +4060,7 @@ break; case 159: -#line 1697 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1698 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType()) GEN_ERROR("Logical operator types must match!"); @@ -4074,7 +4075,7 @@ break; case 160: -#line 1708 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1709 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType()) GEN_ERROR("icmp operand types must match!"); @@ -4083,7 +4084,7 @@ break; case 161: -#line 1713 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1714 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType()) GEN_ERROR("fcmp operand types must match!"); @@ -4092,7 +4093,7 @@ break; case 162: -#line 1718 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1719 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[-1].ConstVal)->getType() != Type::Int8Ty) GEN_ERROR("Shift count for shift constant must be i8 type!"); @@ -4105,7 +4106,7 @@ break; case 163: -#line 1727 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1728 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!ExtractElementInst::isValidOperands((yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal))) GEN_ERROR("Invalid extractelement operands!"); @@ -4115,7 +4116,7 @@ break; case 164: -#line 1733 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1734 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!InsertElementInst::isValidOperands((yyvsp[-5].ConstVal), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal))) GEN_ERROR("Invalid insertelement operands!"); @@ -4125,7 +4126,7 @@ break; case 165: -#line 1739 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1740 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!ShuffleVectorInst::isValidOperands((yyvsp[-5].ConstVal), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal))) GEN_ERROR("Invalid shufflevector operands!"); @@ -4135,7 +4136,7 @@ break; case 166: -#line 1748 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1749 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { ((yyval.ConstVector) = (yyvsp[-2].ConstVector))->push_back((yyvsp[0].ConstVal)); CHECK_FOR_ERROR @@ -4143,7 +4144,7 @@ break; case 167: -#line 1752 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1753 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ConstVector) = new std::vector(); (yyval.ConstVector)->push_back((yyvsp[0].ConstVal)); @@ -4152,17 +4153,17 @@ break; case 168: -#line 1760 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1761 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = false; ;} break; case 169: -#line 1760 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1761 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = true; ;} break; case 170: -#line 1771 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1772 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ModuleVal) = ParserResult = CurModule.CurrentModule; CurModule.ModuleDone(); @@ -4171,7 +4172,7 @@ break; case 171: -#line 1776 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1777 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ModuleVal) = ParserResult = CurModule.CurrentModule; CurModule.ModuleDone(); @@ -4180,12 +4181,12 @@ break; case 174: -#line 1789 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1790 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CurFun.isDeclare = false ;} break; case 175: -#line 1789 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1790 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CurFun.FunctionDone(); CHECK_FOR_ERROR @@ -4193,26 +4194,26 @@ break; case 176: -#line 1793 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1794 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CurFun.isDeclare = true; ;} break; case 177: -#line 1793 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1794 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CHECK_FOR_ERROR ;} break; case 178: -#line 1796 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1797 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CHECK_FOR_ERROR ;} break; case 179: -#line 1799 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1800 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Emit an error if there are any unresolved types left. if (!CurModule.LateResolveTypes.empty()) { @@ -4228,7 +4229,7 @@ break; case 180: -#line 1811 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1812 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription()); @@ -4256,7 +4257,7 @@ break; case 181: -#line 1835 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1836 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { ResolveTypeTo((yyvsp[-2].StrVal), (yyvsp[0].PrimType)); @@ -4271,7 +4272,7 @@ break; case 182: -#line 1846 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1847 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { /* "Externally Visible" Linkage */ if ((yyvsp[0].ConstVal) == 0) GEN_ERROR("Global value initializer is not a constant!"); @@ -4282,14 +4283,14 @@ break; case 183: -#line 1852 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1853 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CurGV = 0; ;} break; case 184: -#line 1855 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1856 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[0].ConstVal) == 0) GEN_ERROR("Global value initializer is not a constant!"); @@ -4299,14 +4300,14 @@ break; case 185: -#line 1860 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1861 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CurGV = 0; ;} break; case 186: -#line 1863 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1864 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription()); @@ -4317,7 +4318,7 @@ break; case 187: -#line 1869 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1870 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CurGV = 0; CHECK_FOR_ERROR @@ -4325,21 +4326,21 @@ break; case 188: -#line 1873 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1874 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CHECK_FOR_ERROR ;} break; case 189: -#line 1876 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1877 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CHECK_FOR_ERROR ;} break; case 190: -#line 1882 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1883 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { const std::string &AsmSoFar = CurModule.CurrentModule->getModuleInlineAsm(); char *EndStr = UnEscapeLexed((yyvsp[0].StrVal), true); @@ -4355,17 +4356,17 @@ break; case 191: -#line 1895 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1896 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.Endianness) = Module::BigEndian; ;} break; case 192: -#line 1896 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1897 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.Endianness) = Module::LittleEndian; ;} break; case 193: -#line 1898 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1899 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CurModule.CurrentModule->setEndianness((yyvsp[0].Endianness)); CHECK_FOR_ERROR @@ -4373,7 +4374,7 @@ break; case 194: -#line 1902 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1903 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[0].UInt64Val) == 32) CurModule.CurrentModule->setPointerSize(Module::Pointer32); @@ -4386,7 +4387,7 @@ break; case 195: -#line 1911 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1912 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CurModule.CurrentModule->setTargetTriple((yyvsp[0].StrVal)); free((yyvsp[0].StrVal)); @@ -4394,7 +4395,7 @@ break; case 196: -#line 1915 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1916 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CurModule.CurrentModule->setDataLayout((yyvsp[0].StrVal)); free((yyvsp[0].StrVal)); @@ -4402,7 +4403,7 @@ break; case 198: -#line 1922 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1923 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CurModule.CurrentModule->addLibrary((yyvsp[0].StrVal)); free((yyvsp[0].StrVal)); @@ -4411,7 +4412,7 @@ break; case 199: -#line 1927 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1928 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CurModule.CurrentModule->addLibrary((yyvsp[0].StrVal)); free((yyvsp[0].StrVal)); @@ -4420,19 +4421,19 @@ break; case 200: -#line 1932 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1933 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CHECK_FOR_ERROR ;} break; case 204: -#line 1942 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1943 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.StrVal) = 0; ;} break; case 205: -#line 1944 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1945 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription()); @@ -4446,7 +4447,7 @@ break; case 206: -#line 1954 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1955 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription()); @@ -4460,7 +4461,7 @@ break; case 207: -#line 1965 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1966 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ArgList) = (yyvsp[0].ArgList); CHECK_FOR_ERROR @@ -4468,7 +4469,7 @@ break; case 208: -#line 1969 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1970 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ArgList) = (yyvsp[-2].ArgList); struct ArgListEntry E; @@ -4481,7 +4482,7 @@ break; case 209: -#line 1978 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1979 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ArgList) = new ArgListType; struct ArgListEntry E; @@ -4494,7 +4495,7 @@ break; case 210: -#line 1987 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1988 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ArgList) = 0; CHECK_FOR_ERROR @@ -4502,7 +4503,7 @@ break; case 211: -#line 1993 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1994 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { UnEscapeLexed((yyvsp[-5].StrVal)); std::string FunctionName((yyvsp[-5].StrVal)); @@ -4609,7 +4610,7 @@ break; case 214: -#line 2099 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2100 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.FunctionVal) = CurFun.CurrentFunction; @@ -4620,7 +4621,7 @@ break; case 217: -#line 2109 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2110 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.FunctionVal) = (yyvsp[-1].FunctionVal); CHECK_FOR_ERROR @@ -4628,7 +4629,7 @@ break; case 218: -#line 2114 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2115 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { CurFun.CurrentFunction->setLinkage((yyvsp[-1].Linkage)); (yyval.FunctionVal) = CurFun.CurrentFunction; @@ -4638,7 +4639,7 @@ break; case 219: -#line 2125 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2126 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = false; CHECK_FOR_ERROR @@ -4646,7 +4647,7 @@ break; case 220: -#line 2129 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2130 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = true; CHECK_FOR_ERROR @@ -4654,7 +4655,7 @@ break; case 221: -#line 2134 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2135 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // A reference to a direct constant (yyval.ValIDVal) = ValID::create((yyvsp[0].SInt64Val)); CHECK_FOR_ERROR @@ -4662,7 +4663,7 @@ break; case 222: -#line 2138 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2139 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ValIDVal) = ValID::create((yyvsp[0].UInt64Val)); CHECK_FOR_ERROR @@ -4670,7 +4671,7 @@ break; case 223: -#line 2142 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2143 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Perhaps it's an FP constant? (yyval.ValIDVal) = ValID::create((yyvsp[0].FPVal)); CHECK_FOR_ERROR @@ -4678,7 +4679,7 @@ break; case 224: -#line 2146 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2147 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ValIDVal) = ValID::create(ConstantBool::getTrue()); CHECK_FOR_ERROR @@ -4686,7 +4687,7 @@ break; case 225: -#line 2150 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2151 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ValIDVal) = ValID::create(ConstantBool::getFalse()); CHECK_FOR_ERROR @@ -4694,7 +4695,7 @@ break; case 226: -#line 2154 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2155 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ValIDVal) = ValID::createNull(); CHECK_FOR_ERROR @@ -4702,7 +4703,7 @@ break; case 227: -#line 2158 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2159 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ValIDVal) = ValID::createUndef(); CHECK_FOR_ERROR @@ -4710,7 +4711,7 @@ break; case 228: -#line 2162 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2163 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // A vector zero constant. (yyval.ValIDVal) = ValID::createZeroInit(); CHECK_FOR_ERROR @@ -4718,7 +4719,7 @@ break; case 229: -#line 2166 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2167 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Nonempty unsized packed vector const Type *ETy = (*(yyvsp[-1].ConstVector))[0]->getType(); int NumElements = (yyvsp[-1].ConstVector)->size(); @@ -4747,7 +4748,7 @@ break; case 230: -#line 2191 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2192 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ValIDVal) = ValID::create((yyvsp[0].ConstVal)); CHECK_FOR_ERROR @@ -4755,7 +4756,7 @@ break; case 231: -#line 2195 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2196 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { char *End = UnEscapeLexed((yyvsp[-2].StrVal), true); std::string AsmStr = std::string((yyvsp[-2].StrVal), End); @@ -4769,7 +4770,7 @@ break; case 232: -#line 2209 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2210 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Is it an integer reference...? (yyval.ValIDVal) = ValID::create((yyvsp[0].SIntVal)); CHECK_FOR_ERROR @@ -4777,7 +4778,7 @@ break; case 233: -#line 2213 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2214 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Is it a named reference...? (yyval.ValIDVal) = ValID::create((yyvsp[0].StrVal)); CHECK_FOR_ERROR @@ -4785,7 +4786,7 @@ break; case 236: -#line 2225 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2226 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); @@ -4796,7 +4797,7 @@ break; case 237: -#line 2234 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2235 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.FunctionVal) = (yyvsp[-1].FunctionVal); CHECK_FOR_ERROR @@ -4804,7 +4805,7 @@ break; case 238: -#line 2238 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2239 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Do not allow functions with 0 basic blocks (yyval.FunctionVal) = (yyvsp[-1].FunctionVal); CHECK_FOR_ERROR @@ -4812,7 +4813,7 @@ break; case 239: -#line 2247 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2248 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { setValueName((yyvsp[0].TermInstVal), (yyvsp[-1].StrVal)); CHECK_FOR_ERROR @@ -4826,7 +4827,7 @@ break; case 240: -#line 2258 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2259 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (CastInst *CI1 = dyn_cast((yyvsp[0].InstVal))) if (CastInst *CI2 = dyn_cast(CI1->getOperand(0))) @@ -4839,7 +4840,7 @@ break; case 241: -#line 2267 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2268 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.BasicBlockVal) = getBBVal(ValID::create((int)CurFun.NextBBNum++), true); CHECK_FOR_ERROR @@ -4855,7 +4856,7 @@ break; case 242: -#line 2279 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2280 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.BasicBlockVal) = getBBVal(ValID::create((yyvsp[0].StrVal)), true); CHECK_FOR_ERROR @@ -4871,7 +4872,7 @@ break; case 243: -#line 2292 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2293 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Return with a result... (yyval.TermInstVal) = new ReturnInst((yyvsp[0].ValueVal)); CHECK_FOR_ERROR @@ -4879,7 +4880,7 @@ break; case 244: -#line 2296 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2297 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Return with no result... (yyval.TermInstVal) = new ReturnInst(); CHECK_FOR_ERROR @@ -4887,7 +4888,7 @@ break; case 245: -#line 2300 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2301 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Unconditional Branch... BasicBlock* tmpBB = getBBVal((yyvsp[0].ValIDVal)); CHECK_FOR_ERROR @@ -4896,7 +4897,7 @@ break; case 246: -#line 2305 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2306 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { BasicBlock* tmpBBA = getBBVal((yyvsp[-3].ValIDVal)); CHECK_FOR_ERROR @@ -4909,7 +4910,7 @@ break; case 247: -#line 2314 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2315 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { Value* tmpVal = getVal((yyvsp[-7].PrimType), (yyvsp[-6].ValIDVal)); CHECK_FOR_ERROR @@ -4932,7 +4933,7 @@ break; case 248: -#line 2333 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2334 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { Value* tmpVal = getVal((yyvsp[-6].PrimType), (yyvsp[-5].ValIDVal)); CHECK_FOR_ERROR @@ -4945,7 +4946,7 @@ break; case 249: -#line 2343 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2344 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Handle the short syntax @@ -5015,7 +5016,7 @@ break; case 250: -#line 2409 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2410 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.TermInstVal) = new UnwindInst(); CHECK_FOR_ERROR @@ -5023,7 +5024,7 @@ break; case 251: -#line 2413 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2414 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.TermInstVal) = new UnreachableInst(); CHECK_FOR_ERROR @@ -5031,7 +5032,7 @@ break; case 252: -#line 2420 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2421 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.JumpTable) = (yyvsp[-5].JumpTable); Constant *V = cast(getValNonImprovising((yyvsp[-4].PrimType), (yyvsp[-3].ValIDVal))); @@ -5046,7 +5047,7 @@ break; case 253: -#line 2431 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2432 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.JumpTable) = new std::vector >(); Constant *V = cast(getValNonImprovising((yyvsp[-4].PrimType), (yyvsp[-3].ValIDVal))); @@ -5062,7 +5063,7 @@ break; case 254: -#line 2444 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2445 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Is this definition named?? if so, assign the name... setValueName((yyvsp[0].InstVal), (yyvsp[-1].StrVal)); @@ -5074,7 +5075,7 @@ break; case 255: -#line 2453 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2454 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Used for PHI nodes if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-5].TypeVal))->getDescription()); @@ -5089,7 +5090,7 @@ break; case 256: -#line 2464 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2465 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.PHIList) = (yyvsp[-6].PHIList); Value* tmpVal = getVal((yyvsp[-6].PHIList)->front().first->getType(), (yyvsp[-3].ValIDVal)); @@ -5101,7 +5102,7 @@ break; case 257: -#line 2474 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2475 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription()); @@ -5113,7 +5114,7 @@ break; case 258: -#line 2482 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2483 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription()); @@ -5125,17 +5126,17 @@ break; case 259: -#line 2490 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2491 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ValueRefList) = new ValueRefList(); ;} break; case 260: -#line 2493 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2494 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ValueList) = new std::vector(); ;} break; case 261: -#line 2494 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2495 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.ValueList) = (yyvsp[-2].ValueList); (yyval.ValueList)->push_back((yyvsp[0].ValueVal)); @@ -5144,7 +5145,7 @@ break; case 262: -#line 2501 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2502 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = true; CHECK_FOR_ERROR @@ -5152,7 +5153,7 @@ break; case 263: -#line 2505 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2506 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = false; CHECK_FOR_ERROR @@ -5160,7 +5161,7 @@ break; case 264: -#line 2510 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2511 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription()); @@ -5185,7 +5186,7 @@ break; case 265: -#line 2531 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2532 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription()); @@ -5206,12 +5207,10 @@ break; case 266: -#line 2548 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2549 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription()); - if (isa((*(yyvsp[-3].TypeVal)).get())) - GEN_ERROR("Packed types not supported by icmp instruction"); Value* tmpVal1 = getVal(*(yyvsp[-3].TypeVal), (yyvsp[-2].ValIDVal)); CHECK_FOR_ERROR Value* tmpVal2 = getVal(*(yyvsp[-3].TypeVal), (yyvsp[0].ValIDVal)); @@ -5223,12 +5222,10 @@ break; case 267: -#line 2561 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2560 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription()); - if (isa((*(yyvsp[-3].TypeVal)).get())) - GEN_ERROR("Packed types not supported by fcmp instruction"); Value* tmpVal1 = getVal(*(yyvsp[-3].TypeVal), (yyvsp[-2].ValIDVal)); CHECK_FOR_ERROR Value* tmpVal2 = getVal(*(yyvsp[-3].TypeVal), (yyvsp[0].ValIDVal)); @@ -5240,7 +5237,7 @@ break; case 268: -#line 2574 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2571 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { cerr << "WARNING: Use of eliminated 'not' instruction:" << " Replacing with 'xor'.\n"; @@ -5257,7 +5254,7 @@ break; case 269: -#line 2587 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2584 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[0].ValueVal)->getType() != Type::Int8Ty) GEN_ERROR("Shift amount must be i8 type!"); @@ -5270,7 +5267,7 @@ break; case 270: -#line 2596 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2593 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription()); @@ -5287,7 +5284,7 @@ break; case 271: -#line 2609 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2606 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[-4].ValueVal)->getType() != Type::BoolTy) GEN_ERROR("select condition must be boolean!"); @@ -5299,7 +5296,7 @@ break; case 272: -#line 2617 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2614 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription()); @@ -5310,7 +5307,7 @@ break; case 273: -#line 2624 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2621 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!ExtractElementInst::isValidOperands((yyvsp[-2].ValueVal), (yyvsp[0].ValueVal))) GEN_ERROR("Invalid extractelement operands!"); @@ -5320,7 +5317,7 @@ break; case 274: -#line 2630 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2627 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!InsertElementInst::isValidOperands((yyvsp[-4].ValueVal), (yyvsp[-2].ValueVal), (yyvsp[0].ValueVal))) GEN_ERROR("Invalid insertelement operands!"); @@ -5330,7 +5327,7 @@ break; case 275: -#line 2636 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2633 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!ShuffleVectorInst::isValidOperands((yyvsp[-4].ValueVal), (yyvsp[-2].ValueVal), (yyvsp[0].ValueVal))) GEN_ERROR("Invalid shufflevector operands!"); @@ -5340,7 +5337,7 @@ break; case 276: -#line 2642 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2639 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { const Type *Ty = (yyvsp[0].PHIList)->front().first->getType(); if (!Ty->isFirstClassType()) @@ -5359,7 +5356,7 @@ break; case 277: -#line 2657 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2654 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Handle the short syntax @@ -5425,7 +5422,7 @@ break; case 278: -#line 2719 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2716 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.InstVal) = (yyvsp[0].InstVal); CHECK_FOR_ERROR @@ -5433,7 +5430,7 @@ break; case 279: -#line 2724 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2721 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = true; CHECK_FOR_ERROR @@ -5441,7 +5438,7 @@ break; case 280: -#line 2728 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2725 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = false; CHECK_FOR_ERROR @@ -5449,7 +5446,7 @@ break; case 281: -#line 2735 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2732 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); @@ -5460,7 +5457,7 @@ break; case 282: -#line 2742 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2739 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-4].TypeVal))->getDescription()); @@ -5472,7 +5469,7 @@ break; case 283: -#line 2750 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2747 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); @@ -5483,7 +5480,7 @@ break; case 284: -#line 2757 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2754 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-4].TypeVal))->getDescription()); @@ -5495,7 +5492,7 @@ break; case 285: -#line 2765 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2762 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!isa((yyvsp[0].ValueVal)->getType())) GEN_ERROR("Trying to free nonpointer type " + @@ -5506,7 +5503,7 @@ break; case 286: -#line 2773 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2770 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); @@ -5524,7 +5521,7 @@ break; case 287: -#line 2787 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2784 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); @@ -5545,7 +5542,7 @@ break; case 288: -#line 2804 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2801 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription()); @@ -5568,7 +5565,7 @@ } /* Line 1126 of yacc.c. */ -#line 5572 "llvmAsmParser.tab.c" +#line 5569 "llvmAsmParser.tab.c" yyvsp -= yylen; yyssp -= yylen; @@ -5836,7 +5833,7 @@ } -#line 2821 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2818 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" // common code from the two 'RunVMAsmParser' functions Index: llvm/lib/AsmParser/llvmAsmParser.y.cvs diff -u llvm/lib/AsmParser/llvmAsmParser.y.cvs:1.43 llvm/lib/AsmParser/llvmAsmParser.y.cvs:1.44 --- llvm/lib/AsmParser/llvmAsmParser.y.cvs:1.43 Tue Jan 2 15:54:12 2007 +++ llvm/lib/AsmParser/llvmAsmParser.y.cvs Wed Jan 3 18:06:14 2007 @@ -1602,7 +1602,8 @@ if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*$1)->getDescription()); if ($1->get() != $2->getType()) - GEN_ERROR("Mismatched types for constant expression!"); + GEN_ERROR("Mismatched types for constant expression: " + + (*$1)->getDescription() + " and " + $2->getType()->getDescription()); $$ = $2; delete $1; CHECK_FOR_ERROR @@ -2548,8 +2549,6 @@ | ICMP IPredicates Types ValueRef ',' ValueRef { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*$3)->getDescription()); - if (isa((*$3).get())) - GEN_ERROR("Packed types not supported by icmp instruction"); Value* tmpVal1 = getVal(*$3, $4); CHECK_FOR_ERROR Value* tmpVal2 = getVal(*$3, $6); @@ -2561,8 +2560,6 @@ | FCMP FPredicates Types ValueRef ',' ValueRef { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*$3)->getDescription()); - if (isa((*$3).get())) - GEN_ERROR("Packed types not supported by fcmp instruction"); Value* tmpVal1 = getVal(*$3, $4); CHECK_FOR_ERROR Value* tmpVal2 = getVal(*$3, $6); From reid at x10sys.com Wed Jan 3 18:29:24 2007 From: reid at x10sys.com (Reid Spencer) Date: Wed, 3 Jan 2007 18:29:24 -0600 Subject: [llvm-commits] CVS: llvm/test/Feature/packed_cmp.ll Message-ID: <200701040029.l040TO0u004371@zion.cs.uiuc.edu> Changes in directory llvm/test/Feature: packed_cmp.ll added (r1.1) --- Log message: Add a test to ensure that we can assembly comparisons of packed values. --- Diffs of the changes: (+57 -0) packed_cmp.ll | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 57 insertions(+) Index: llvm/test/Feature/packed_cmp.ll diff -c /dev/null llvm/test/Feature/packed_cmp.ll:1.1 *** /dev/null Wed Jan 3 18:29:19 2007 --- llvm/test/Feature/packed_cmp.ll Wed Jan 3 18:29:09 2007 *************** *** 0 **** --- 1,57 ---- + ; This test checks to make sure that NE and EQ comparisons of + ; vector types work. + ; RUN: llvm-as < %s | llvm-dis > %t1.ll + ; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll + ; RUN: diff %t1.ll %t2.ll + + %ivec_type = type <4 x i8> + %ivec1 = constant %ivec_type < i8 1, i8 1, i8 1, i8 1 > + %ivec2 = constant %ivec_type < i8 0, i8 0, i8 0, i8 0 > + + %fvec_type = type <4 x float> + %fvec1 = constant %fvec_type + %fvec2 = constant %fvec_type + + implementation ; Functions: + + define bool %ivectest1() { + %v1 = load %ivec_type* getelementptr(%ivec_type* %ivec1, i32 0) + %v2 = load %ivec_type* getelementptr(%ivec_type* %ivec2, i32 0) + %res = icmp ne %ivec_type %v1, %v2 + ret bool %res + } + + define bool %ivectest2() { + %v1 = load %ivec_type* getelementptr(%ivec_type* %ivec1, i32 0) + %v2 = load %ivec_type* getelementptr(%ivec_type* %ivec2, i32 0) + %res = icmp eq %ivec_type %v1, %v2 + ret bool %res + } + + define bool %fvectest1() { + %v1 = load %fvec_type* %fvec1 + %v2 = load %fvec_type* %fvec2 + %res = fcmp one %fvec_type %v1, %v2 + ret bool %res + } + + define bool %fvectest2() { + %v1 = load %fvec_type* %fvec1 + %v2 = load %fvec_type* %fvec2 + %res = fcmp oeq %fvec_type %v1, %v2 + ret bool %res + } + + define bool %fvectest3() { + %v1 = load %fvec_type* %fvec1 + %v2 = load %fvec_type* %fvec2 + %res = fcmp une %fvec_type %v1, %v2 + ret bool %res + } + + define bool %fvectest4() { + %v1 = load %fvec_type* %fvec1 + %v2 = load %fvec_type* %fvec2 + %res = fcmp ueq %fvec_type %v1, %v2 + ret bool %res + } From dpatel at apple.com Wed Jan 3 19:27:18 2007 From: dpatel at apple.com (Devang Patel) Date: Wed, 3 Jan 2007 19:27:18 -0600 Subject: [llvm-commits] CVS: llvm/include/llvm/Pass.h Message-ID: <200701040127.l041RIWw005272@zion.cs.uiuc.edu> Changes in directory llvm/include/llvm: Pass.h updated: 1.67 -> 1.68 --- Log message: Enable new pass manager, which was accidentally disabled. --- Diffs of the changes: (+2 -1) Pass.h | 3 ++- 1 files changed, 2 insertions(+), 1 deletion(-) Index: llvm/include/llvm/Pass.h diff -u llvm/include/llvm/Pass.h:1.67 llvm/include/llvm/Pass.h:1.68 --- llvm/include/llvm/Pass.h:1.67 Sat Dec 23 00:05:40 2006 +++ llvm/include/llvm/Pass.h Wed Jan 3 19:27:03 2007 @@ -36,7 +36,8 @@ #include #include -#define USE_OLD_PASSMANAGER 1 +//Use new Pass Manager. Disable old Pass Manager. +//#define USE_OLD_PASSMANAGER 1 namespace llvm { From clattner at apple.com Wed Jan 3 19:36:26 2007 From: clattner at apple.com (Chris Lattner) Date: Wed, 3 Jan 2007 17:36:26 -0800 Subject: [llvm-commits] target specific C++ file in llvm-gcc In-Reply-To: References: Message-ID: Thanks Devang, Jim and Evan, can you move the monster altivec/sse macros out of the i386.h / rs6000.h files when convenient? -Chris On Jan 3, 2007, at 11:59 AM, Devang Patel wrote: > I've applied following patch to support target-specific C++ file in > llvm-gcc. > > - > Devang > > > $ cat ~/patch_collection/llvm/R4897246.take2.diff > Index: configure > =================================================================== > --- configure (revision 121791) > +++ configure (working copy) > @@ -309,7 +309,10 @@ ac_includes_default="\ > # include > #endif" > -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME > PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix > program_transform_name bindir sbindir libexecdir datadir sysconfdir > sharedstatedir localstatedir libdir includedir oldincludedir infodir > mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T > LIBS build build_cpu build_vendor build_os host host_cpu host_vendor > host_os target target_cpu target_vendor target_os target_noncanonical > build_subdir host_subdir target_subdir gcc_version_trigger > gcc_version_full gcc_version GENINSRC CC CFLAGS LDFLAGS CPPFLAGS > ac_ct_CC EXEEXT OBJEXT NO_MINUS_C_MINUS_O OUTPUT_OPTION CPP EGREP > strict1_warn warn_cflags WERROR checkingenabled_flag nocommon_flag > TREEBROWSER valgrind_path valgrind_path_defines valgrind_command > coverage_flags enable_multilib enable_shared TARGET_SYSTEM_ROOT > TARGET_SYSTEM_ROOT_DEFINE CROSS_SYSTEM_HEADER_DIR onestep > LLVMBASEPATH SET_MAKE AWK LN_S LN RANLIB ac_ct_RANLIB ranlib_flags > INSTALL INSTALL_PROGRAM INSTALL_DATA make_compare_target > have_mktemp_command MAKEINFO BUILD_INFO GENERATED_MANPAGES FLEX BISON > NM AR stage1_cflags COLLECT2_LIBS GNAT_LIBEXC LDEXP_LIB > TARGET_GETGROUPS_T LIBICONV LTLIBICONV LIBICONV_DEP manext objext > gthread_flags extra_modes_file PACKAGE VERSION USE_NLS LIBINTL > LIBINTL_DEP INCINTL XGETTEXT GMSGFMT POSUB CATALOGS > cc_for_cross_gnattools CROSS ALL SYSTEM_HEADER_DIR inhibit_libc > CC_FOR_BUILD BUILD_CFLAGS STMP_FIXINC STMP_FIXPROTO collect2 > libgcc_visibility GGC zlibdir zlibinc MAINT gcc_tooldir dollar > slibdir objdir subdirs srcdir all_boot_languages all_compilers > all_gtfiles all_gtfiles_files_langs all_gtfiles_files_files > all_lang_makefrags all_lang_makefiles all_languages all_stagestuff > build_exeext build_install_headers_dir build_xm_file_list > build_xm_include_list build_xm_defines check_languages > cc_set_by_configure quoted_cc_set_by_configure cpp_install_dir > xmake_file tmake_file extra_gcc_objs extra_headers_list extra_objs > extra_parts extra_passes extra_programs float_h_file > gcc_config_arguments gcc_gxx_include_dir libstdcxx_incdir host_exeext > host_xm_file_list host_xm_include_list host_xm_defines > out_host_hook_obj install lang_opt_files lang_specs_files > lang_tree_files local_prefix md_file objc_boehm_gc out_file > out_object_file stage_prefix_set_by_configure > quoted_stage_prefix_set_by_configure thread_file tm_file_list > tm_include_list tm_defines tm_p_file_list tm_p_include_list > xm_file_list xm_include_list xm_defines c_target_objs cxx_target_objs > target_cpu_default set_gcc_lib_path GMPLIBS GMPINC LIBOBJS LTLIBOBJS' > +# APPLE LOCAL begin LLVM > +# Add out_cxx_file > +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME > PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix > program_transform_name bindir sbindir libexecdir datadir sysconfdir > sharedstatedir localstatedir libdir includedir oldincludedir infodir > mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T > LIBS build build_cpu build_vendor build_os host host_cpu host_vendor > host_os target target_cpu target_vendor target_os target_noncanonical > build_subdir host_subdir target_subdir gcc_version_trigger > gcc_version_full gcc_version GENINSRC CC CFLAGS LDFLAGS CPPFLAGS > ac_ct_CC EXEEXT OBJEXT NO_MINUS_C_MINUS_O OUTPUT_OPTION CPP EGREP > strict1_warn warn_cflags WERROR checkingenabled_flag nocommon_flag > TREEBROWSER valgrind_path valgrind_path_defines valgrind_command > coverage_flags enable_multilib enable_shared TARGET_SYSTEM_ROOT > TARGET_SYSTEM_ROOT_DEFINE CROSS_SYSTEM_HEADER_DIR onestep > LLVMBASEPATH SET_MAKE AWK LN_S LN RANLIB ac_ct_RANLIB ranlib_flags > INSTALL INSTALL_PROGRAM INSTALL_DATA make_compare_target > have_mktemp_command MAKEINFO BUILD_INFO GENERATED_MANPAGES FLEX BISON > NM AR stage1_cflags COLLECT2_LIBS GNAT_LIBEXC LDEXP_LIB > TARGET_GETGROUPS_T LIBICONV LTLIBICONV LIBICONV_DEP manext objext > gthread_flags extra_modes_file PACKAGE VERSION USE_NLS LIBINTL > LIBINTL_DEP INCINTL XGETTEXT GMSGFMT POSUB CATALOGS > cc_for_cross_gnattools CROSS ALL SYSTEM_HEADER_DIR inhibit_libc > CC_FOR_BUILD BUILD_CFLAGS STMP_FIXINC STMP_FIXPROTO collect2 > libgcc_visibility GGC zlibdir zlibinc MAINT gcc_tooldir dollar > slibdir objdir subdirs srcdir all_boot_languages all_compilers > all_gtfiles all_gtfiles_files_langs all_gtfiles_files_files > all_lang_makefrags all_lang_makefiles all_languages all_stagestuff > build_exeext build_install_headers_dir build_xm_file_list > build_xm_include_list build_xm_defines check_languages > cc_set_by_configure quoted_cc_set_by_configure cpp_install_dir > xmake_file tmake_file extra_gcc_objs extra_headers_list extra_objs > extra_parts extra_passes extra_programs float_h_file > gcc_config_arguments gcc_gxx_include_dir libstdcxx_incdir host_exeext > host_xm_file_list host_xm_include_list host_xm_defines > out_host_hook_obj install lang_opt_files lang_specs_files > lang_tree_files local_prefix md_file objc_boehm_gc out_file > out_cxx_file out_object_file out_cxx_object_file > stage_prefix_set_by_configure quoted_stage_prefix_set_by_configure > thread_file tm_file_list tm_include_list tm_defines tm_p_file_list > tm_p_include_list xm_file_list xm_include_list xm_defines > c_target_objs cxx_target_objs target_cpu_default set_gcc_lib_path > GMPLIBS GMPINC LIBOBJS LTLIBOBJS' > +# APPLE LOCAL end LLVM > ac_subst_files='language_hooks' > # Initialize some variables set by options. > @@ -12200,6 +12203,8 @@ fi > # Say what files are being used for the output code and MD file. > echo "Using \`$srcdir/config/$out_file' for machine-specific logic." > +# APPLE LOCAL LLVM > +echo "Using \`$srcdir/config/$out_cxx_file' for machine-specific C++ > logic." > echo "Using \`$srcdir/config/$md_file' as machine description file." > # If any of the xm_file variables contain nonexistent files, warn > @@ -12909,6 +12914,8 @@ cc_for_cross_gnattools=${CC} > out_object_file=`basename $out_file .c`.o > +# APPLE LOCAL LLVM > +out_cxx_object_file=`basename $out_cxx_file .cpp`.o > tm_file_list= > tm_include_list= > @@ -16615,7 +16622,11 @@ s, at local_prefix@,$local_prefix,;t t > s, at md_file@,$md_file,;t t > s, at objc_boehm_gc@,$objc_boehm_gc,;t t > s, at out_file@,$out_file,;t t > +# APPLE LOCAL LLVM > +s, at out_cxx_file@,$out_cxx_file,;t t > s, at out_object_file@,$out_object_file,;t t > +# APPLE LOCAL LLVM > +s, at out_cxx_object_file@,$out_cxx_object_file,;t t > s, at stage_prefix_set_by_configure@,$stage_prefix_set_by_configure,;t t > s, at quoted_stage_prefix_set_by_configure@, > $quoted_stage_prefix_set_by_configure,;t t > s, at thread_file@,$thread_file,;t t > Index: config.gcc > =================================================================== > --- config.gcc (revision 121791) > +++ config.gcc (working copy) > @@ -64,10 +64,13 @@ > # defining header ${cpu_type}/${cpu_type.h}. > # > # tm_p_file Location of file with declarations for > functions > -# in $out_file. > +# APPLE LOCAL LLVM > +# in $out_file & $out_cxx_file > # > # out_file The name of the machine description C support > # file, if different from "$cpu_type/ > $cpu_type.c". > +# APPLE LOCAL LLVM > +# out_cxx_file The name of the machine description C+ > + support file. > # > # md_file The name of the machine-description file, if > # different from "$cpu_type/$cpu_type.md". > @@ -144,6 +147,8 @@ > # system normally uses GNU ld. > out_file= > +# APPLE LOCAL LLVM > +out_cxx_file= > tmake_file= > extra_headers= > extra_passes= > @@ -961,6 +966,9 @@ i[34567]86-*-darwin*) > # APPLE LOCAL end mainline 2005-10-02 4218570 > # APPLE LOCAL 4099000 > tmake_file="${tmake_file} i386/t-darwin" > +# APPLE LOCAL begin LLVM > + out_cxx_file=i386/llvm-i386.cpp > +# APPLE LOCAL end LLVM > # APPLE LOCAL 4126124 > need_64bit_hwint=yes > ;; > @@ -2842,6 +2850,8 @@ case ${target} in > target_cpu_default2="\\\"$with_cpu\\\"" > fi > out_file=rs6000/rs6000.c > + # APPLE LOCAL begin LLVM > + out_cxx_file=rs6000/llvm-rs6000.cpp > c_target_objs="${c_target_objs} rs6000-c.o" > cxx_target_objs="${cxx_target_objs} rs6000-c.o" > tmake_file="rs6000/t-rs6000 ${tmake_file}" > Index: Makefile.in > =================================================================== > --- Makefile.in (revision 121791) > +++ Makefile.in (working copy) > @@ -428,7 +428,11 @@ TARGET_SYSTEM_ROOT = @TARGET_SYSTEM_ROOT > xmake_file=@xmake_file@ > tmake_file=@tmake_file@ > out_file=$(srcdir)/config/@out_file@ > +# APPLE LOCAL LLVM > +out_cxx_file=$(srcdir)/config/@out_cxx_file@ > out_object_file=@out_object_file@ > +# APPLE LOCAL LLVM > +out_cxx_object_file=@out_cxx_object_file@ > md_file=$(srcdir)/config/@md_file@ > tm_file_list=@tm_file_list@ > tm_include_list=@tm_include_list@ > @@ -1019,7 +1023,8 @@ OBJS-common = \ > lambda-trans.o lambda-code.o tree-loop-linear.o > # APPLE LOCAL end lno, loops-to-memset > -OBJS-md = $(out_object_file) > +# APPLE LOCAL LLVM > +OBJS-md = $(out_object_file) $(out_cxx_object_file) > OBJS-archive = $(EXTRA_OBJS) $(host_hook_obj) tree- > inline.o \ > cgraph.o cgraphunit.o tree-nomudflap.o > @@ -1109,7 +1114,8 @@ endif > endif > # APPLE LOCAL end LLVM > -OBJS = $(OBJS-common) $(out_object_file) $(OBJS-archive) > +# APPLE LOCAL LLVM > +OBJS = $(OBJS-common) $(out_object_file) $(OBJS-archive) $ > (out_cxx_object_file) > OBJS-onestep = libbackend.o $(OBJS-archive) > @@ -2465,6 +2471,15 @@ $(out_object_file): $(out_file) $(CONFIG > langhooks.h > $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ > $(out_file) $(OUTPUT_OPTION) > +# APPLE LOCAL begin LLVM > +$(out_cxx_object_file): $(out_cxx_file) $(CONFIG_H) coretypes.h $ > (TM_H) $(TREE_H) $(GGC_H) \ > + $(RTL_H) $(REGS_H) hard-reg-set.h real.h insn-config.h > conditions.h \ > + output.h $(INSN_ATTR_H) $(SYSTEM_H) toplev.h $(TARGET_H) > libfuncs.h \ > + $(TARGET_DEF_H) function.h $(SCHED_INT_H) $(TM_P_H) $(EXPR_H) $ > (OPTABS_H) \ > + langhooks.h > + $(CXX) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ > + $(out_cxx_file) $(OUTPUT_OPTION) > +# APPLE LOCAL end LLVM > # Build auxiliary files that support ecoff format. > mips-tfile: mips-tfile.o version.o $(LIBDEPS) > @@ -2481,7 +2496,8 @@ mips-tdump.o : mips-tdump.c $(CONFIG_H) > ifeq ($(LLVMOBJDIR),) > # FIXME: writing proper dependencies for this is a *LOT* of work. > -libbackend.o : $(OBJS-common:.o=.c) $(out_file) \ > +# APPLE LOCAL LLVM > +libbackend.o : $(OBJS-common:.o=.c) $(out_file) $(out_cxx_file) \ > insn-config.h insn-flags.h insn-codes.h insn-constants.h \ > insn-attr.h > $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ > Index: config/i386/llvm-i386.cpp > =================================================================== > Index: config/rs6000/llvm-rs6000.cpp > =================================================================== > $ > _______________________________________________ > llvm-commits mailing list > llvm-commits at cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits From sabre at nondot.org Wed Jan 3 19:49:44 2007 From: sabre at nondot.org (Chris Lattner) Date: Wed, 3 Jan 2007 19:49:44 -0600 Subject: [llvm-commits] CVS: llvm/lib/VMCore/Constants.cpp Message-ID: <200701040149.l041nicH005745@zion.cs.uiuc.edu> Changes in directory llvm/lib/VMCore: Constants.cpp updated: 1.193 -> 1.194 --- Log message: Add a new ConstantPacked::getAllOnesValue method --- Diffs of the changes: (+12 -0) Constants.cpp | 12 ++++++++++++ 1 files changed, 12 insertions(+) Index: llvm/lib/VMCore/Constants.cpp diff -u llvm/lib/VMCore/Constants.cpp:1.193 llvm/lib/VMCore/Constants.cpp:1.194 --- llvm/lib/VMCore/Constants.cpp:1.193 Sat Dec 30 23:26:44 2006 +++ llvm/lib/VMCore/Constants.cpp Wed Jan 3 19:49:26 2007 @@ -146,6 +146,18 @@ } } +/// @returns the value for an packed integer constant of the given type that +/// has all its bits set to true. +/// @brief Get the all ones value +ConstantPacked *ConstantPacked::getAllOnesValue(const PackedType *Ty) { + std::vector Elts; + Elts.resize(Ty->getNumElements(), + ConstantIntegral::getAllOnesValue(Ty->getElementType())); + assert(Elts[0] && "Not a packed integer type!"); + return cast(ConstantPacked::get(Elts)); +} + + //===----------------------------------------------------------------------===// // ConstantXXX Classes //===----------------------------------------------------------------------===// From sabre at nondot.org Wed Jan 3 19:49:45 2007 From: sabre at nondot.org (Chris Lattner) Date: Wed, 3 Jan 2007 19:49:45 -0600 Subject: [llvm-commits] CVS: llvm/include/llvm/Constants.h Message-ID: <200701040149.l041njWs005750@zion.cs.uiuc.edu> Changes in directory llvm/include/llvm: Constants.h updated: 1.112 -> 1.113 --- Log message: Add a new ConstantPacked::getAllOnesValue method --- Diffs of the changes: (+5 -0) Constants.h | 5 +++++ 1 files changed, 5 insertions(+) Index: llvm/include/llvm/Constants.h diff -u llvm/include/llvm/Constants.h:1.112 llvm/include/llvm/Constants.h:1.113 --- llvm/include/llvm/Constants.h:1.112 Sat Dec 23 00:05:40 2006 +++ llvm/include/llvm/Constants.h Wed Jan 3 19:49:26 2007 @@ -422,6 +422,11 @@ return reinterpret_cast(Value::getType()); } + /// @returns the value for an packed integer constant of the given type that + /// has all its bits set to true. + /// @brief Get the all ones value + static ConstantPacked *getAllOnesValue(const PackedType *Ty); + /// isNullValue - Return true if this is the value that would be returned by /// getNullValue. This always returns false because zero arrays are always /// created as ConstantAggregateZero objects. From sabre at nondot.org Wed Jan 3 19:56:54 2007 From: sabre at nondot.org (Chris Lattner) Date: Wed, 3 Jan 2007 19:56:54 -0600 Subject: [llvm-commits] CVS: llvm/lib/VMCore/ConstantFolding.cpp Message-ID: <200701040156.l041us37005919@zion.cs.uiuc.edu> Changes in directory llvm/lib/VMCore: ConstantFolding.cpp updated: 1.123 -> 1.124 --- Log message: fix some bugs handling vectors, avoid host-specific handling of undefined shift results. --- Diffs of the changes: (+15 -5) ConstantFolding.cpp | 20 +++++++++++++++----- 1 files changed, 15 insertions(+), 5 deletions(-) Index: llvm/lib/VMCore/ConstantFolding.cpp diff -u llvm/lib/VMCore/ConstantFolding.cpp:1.123 llvm/lib/VMCore/ConstantFolding.cpp:1.124 --- llvm/lib/VMCore/ConstantFolding.cpp:1.123 Sun Dec 31 15:43:30 2006 +++ llvm/lib/VMCore/ConstantFolding.cpp Wed Jan 3 19:56:39 2007 @@ -444,6 +444,8 @@ return Constant::getNullValue(C1->getType()); return const_cast(C2); // X / undef -> undef case Instruction::Or: // X | undef -> -1 + if (const PackedType *PTy = dyn_cast(C1->getType())) + return ConstantPacked::getAllOnesValue(PTy); return ConstantInt::getAllOnesValue(C1->getType()); case Instruction::LShr: if (isa(C2) && isa(C1)) @@ -496,8 +498,9 @@ return Constant::getNullValue(CI->getType()); // X % 1 == 0 break; case Instruction::And: - if (cast(C2)->isAllOnesValue()) - return const_cast(C1); // X & -1 == X + if (const ConstantInt *CI = dyn_cast(C2)) + if (CI->isAllOnesValue()) + return const_cast(C1); // X & -1 == X if (C2->isNullValue()) return const_cast(C2); // X & 0 == 0 if (CE1->isCast() && isa(CE1->getOperand(0))) { GlobalValue *CPR = cast(CE1->getOperand(0)); @@ -511,8 +514,9 @@ break; case Instruction::Or: if (C2->isNullValue()) return const_cast(C1); // X | 0 == X - if (cast(C2)->isAllOnesValue()) - return const_cast(C2); // X | -1 == -1 + if (const ConstantInt *CI = dyn_cast(C2)) + if (CI->isAllOnesValue()) + return const_cast(C2); // X | -1 == -1 break; case Instruction::Xor: if (C2->isNullValue()) return const_cast(C1); // X ^ 0 == X @@ -547,7 +551,7 @@ } // At this point we know neither constant is an UndefValue nor a ConstantExpr - // so look at directly computing the + // so look at directly computing the value. if (const ConstantBool *CB1 = dyn_cast(C1)) { if (const ConstantBool *CB2 = dyn_cast(C2)) { switch (Opcode) { @@ -606,10 +610,16 @@ case Instruction::Xor: return ConstantInt::get(C1->getType(), C1Val ^ C2Val); case Instruction::Shl: + if (C2Val >= CI1->getType()->getPrimitiveSizeInBits()) + C2Val = CI1->getType()->getPrimitiveSizeInBits() - 1; return ConstantInt::get(C1->getType(), C1Val << C2Val); case Instruction::LShr: + if (C2Val >= CI1->getType()->getPrimitiveSizeInBits()) + C2Val = CI1->getType()->getPrimitiveSizeInBits() - 1; return ConstantInt::get(C1->getType(), C1Val >> C2Val); case Instruction::AShr: + if (C2Val >= CI1->getType()->getPrimitiveSizeInBits()) + C2Val = CI1->getType()->getPrimitiveSizeInBits() - 1; return ConstantInt::get(C1->getType(), CI1->getSExtValue() >> C2Val); } From sabre at nondot.org Wed Jan 3 20:12:56 2007 From: sabre at nondot.org (Chris Lattner) Date: Wed, 3 Jan 2007 20:12:56 -0600 Subject: [llvm-commits] CVS: llvm/lib/Transforms/Scalar/SCCP.cpp Message-ID: <200701040212.l042Cul6006282@zion.cs.uiuc.edu> Changes in directory llvm/lib/Transforms/Scalar: SCCP.cpp updated: 1.146 -> 1.147 --- Log message: Enable a couple xforms for packed vectors (undef | v) -> -1 for packed. --- Diffs of the changes: (+9 -8) SCCP.cpp | 17 +++++++++-------- 1 files changed, 9 insertions(+), 8 deletions(-) Index: llvm/lib/Transforms/Scalar/SCCP.cpp diff -u llvm/lib/Transforms/Scalar/SCCP.cpp:1.146 llvm/lib/Transforms/Scalar/SCCP.cpp:1.147 --- llvm/lib/Transforms/Scalar/SCCP.cpp:1.146 Tue Jan 2 18:11:03 2007 +++ llvm/lib/Transforms/Scalar/SCCP.cpp Wed Jan 3 20:12:40 2007 @@ -700,9 +700,10 @@ // Could annihilate value. if (I.getOpcode() == Instruction::And) markConstant(IV, &I, Constant::getNullValue(I.getType())); - else if (Constant *Ones = ConstantInt::getAllOnesValue(I.getType())) { - markConstant(IV, &I, Ones); - } + else if (const PackedType *PT = dyn_cast(I.getType())) + markConstant(IV, &I, ConstantPacked::getAllOnesValue(PT)); + else + markConstant(IV, &I, ConstantInt::getAllOnesValue(I.getType())); return; } else { if (I.getOpcode() == Instruction::And) { @@ -1233,11 +1234,11 @@ case Instruction::Or: // undef | X -> -1. X could be -1. - if (Constant *Ones = ConstantInt::getAllOnesValue(ITy)) { - markForcedConstant(LV, I, Ones); - return true; - } - break; + if (const PackedType *PTy = dyn_cast(ITy)) + markForcedConstant(LV, I, ConstantPacked::getAllOnesValue(PTy)); + else + markForcedConstant(LV, I, ConstantInt::getAllOnesValue(ITy)); + return true; case Instruction::SDiv: case Instruction::UDiv: From sabre at nondot.org Wed Jan 3 20:13:35 2007 From: sabre at nondot.org (Chris Lattner) Date: Wed, 3 Jan 2007 20:13:35 -0600 Subject: [llvm-commits] CVS: llvm/lib/VMCore/ConstantFolding.cpp Message-ID: <200701040213.l042DZJR006358@zion.cs.uiuc.edu> Changes in directory llvm/lib/VMCore: ConstantFolding.cpp updated: 1.124 -> 1.125 --- Log message: fix typo --- Diffs of the changes: (+1 -1) ConstantFolding.cpp | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/lib/VMCore/ConstantFolding.cpp diff -u llvm/lib/VMCore/ConstantFolding.cpp:1.124 llvm/lib/VMCore/ConstantFolding.cpp:1.125 --- llvm/lib/VMCore/ConstantFolding.cpp:1.124 Wed Jan 3 19:56:39 2007 +++ llvm/lib/VMCore/ConstantFolding.cpp Wed Jan 3 20:13:20 2007 @@ -744,7 +744,7 @@ return 1; } -/// evaluatFCmpeRelation - This function determines if there is anything we can +/// evaluateFCmpRelation - This function determines if there is anything we can /// decide about the two constants provided. This doesn't need to handle simple /// things like ConstantFP comparisons, but should instead handle ConstantExprs. /// If we can determine that the two constants have a particular relation to From sabre at nondot.org Wed Jan 3 20:15:56 2007 From: sabre at nondot.org (Chris Lattner) Date: Wed, 3 Jan 2007 20:15:56 -0600 Subject: [llvm-commits] CVS: llvm/include/llvm/Value.h Instruction.h Message-ID: <200701040215.l042FuEo006450@zion.cs.uiuc.edu> Changes in directory llvm/include/llvm: Value.h updated: 1.88 -> 1.89 Instruction.h updated: 1.77 -> 1.78 --- Log message: Now that setcondinst has been eliminated, we can mark Value::SubclassID const and remove the ugly mutator methods. --- Diffs of the changes: (+1 -12) Instruction.h | 6 ------ Value.h | 7 +------ 2 files changed, 1 insertion(+), 12 deletions(-) Index: llvm/include/llvm/Value.h diff -u llvm/include/llvm/Value.h:1.88 llvm/include/llvm/Value.h:1.89 --- llvm/include/llvm/Value.h:1.88 Sat Dec 16 23:15:12 2006 +++ llvm/include/llvm/Value.h Wed Jan 3 20:15:37 2007 @@ -48,7 +48,7 @@ /// using this Value. /// @brief LLVM Value Representation class Value { - unsigned short SubclassID; // Subclass identifier (for isa/dyn_cast) + const unsigned short SubclassID; // Subclass identifier (for isa/dyn_cast) protected: /// SubclassData - This member is defined by this class, but is not used for /// anything. Subclasses can use it to hold whatever state they find useful. @@ -186,11 +186,6 @@ /// getRawType - This should only be used to implement the vmcore library. /// const Type *getRawType() const { return Ty.getRawType(); } - -private: - /// FIXME: this is a gross hack, needed by another gross hack. Eliminate! - void setValueType(unsigned short VT) { SubclassID = VT; } - friend class Instruction; }; inline std::ostream &operator<<(std::ostream &OS, const Value &V) { Index: llvm/include/llvm/Instruction.h diff -u llvm/include/llvm/Instruction.h:1.77 llvm/include/llvm/Instruction.h:1.78 --- llvm/include/llvm/Instruction.h:1.77 Sat Dec 23 00:05:40 2006 +++ llvm/include/llvm/Instruction.h Wed Jan 3 20:15:37 2007 @@ -39,12 +39,6 @@ friend class SymbolTableListTraits >; void setParent(BasicBlock *P); - -private: - // FIXME: This is a dirty hack. Setcc instructions shouldn't encode the CC - // into the opcode field. When they don't, this will be unneeded. - void setOpcode(unsigned NewOpcode); - friend class BinaryOperator; protected: Instruction(const Type *Ty, unsigned iType, Use *Ops, unsigned NumOps, const std::string &Name = "", From sabre at nondot.org Wed Jan 3 20:15:56 2007 From: sabre at nondot.org (Chris Lattner) Date: Wed, 3 Jan 2007 20:15:56 -0600 Subject: [llvm-commits] CVS: llvm/lib/VMCore/Instruction.cpp Message-ID: <200701040215.l042Fu4g006443@zion.cs.uiuc.edu> Changes in directory llvm/lib/VMCore: Instruction.cpp updated: 1.61 -> 1.62 --- Log message: Now that setcondinst has been eliminated, we can mark Value::SubclassID const and remove the ugly mutator methods. --- Diffs of the changes: (+0 -4) Instruction.cpp | 4 ---- 1 files changed, 4 deletions(-) Index: llvm/lib/VMCore/Instruction.cpp diff -u llvm/lib/VMCore/Instruction.cpp:1.61 llvm/lib/VMCore/Instruction.cpp:1.62 --- llvm/lib/VMCore/Instruction.cpp:1.61 Sat Dec 23 00:05:41 2006 +++ llvm/lib/VMCore/Instruction.cpp Wed Jan 3 20:15:37 2007 @@ -49,10 +49,6 @@ } -void Instruction::setOpcode(unsigned opc) { - setValueType(Value::InstructionVal + opc); -} - void Instruction::setParent(BasicBlock *P) { if (getParent()) { if (!P) LeakDetector::addGarbageObject(this); From rspencer at reidspencer.com Wed Jan 3 20:28:14 2007 From: rspencer at reidspencer.com (Reid Spencer) Date: Thu, 04 Jan 2007 02:28:14 +0000 Subject: [llvm-commits] CVS: llvm/include/llvm/Pass.h In-Reply-To: <200701040127.l041RIWw005272@zion.cs.uiuc.edu> References: <200701040127.l041RIWw005272@zion.cs.uiuc.edu> Message-ID: <1167877694.22536.57.camel@bashful.x10sys.com> On Wed, 2007-01-03 at 19:27 -0600, Devang Patel wrote: > > Changes in directory llvm/include/llvm: > > Pass.h updated: 1.67 -> 1.68 > --- > Log message: > > Enable new pass manager, which was accidentally disabled. FYI, this passed on Linux. > > > > --- > Diffs of the changes: (+2 -1) > > Pass.h | 3 ++- > 1 files changed, 2 insertions(+), 1 deletion(-) > > > Index: llvm/include/llvm/Pass.h > diff -u llvm/include/llvm/Pass.h:1.67 llvm/include/llvm/Pass.h:1.68 > --- llvm/include/llvm/Pass.h:1.67 Sat Dec 23 00:05:40 2006 > +++ llvm/include/llvm/Pass.h Wed Jan 3 19:27:03 2007 > @@ -36,7 +36,8 @@ > #include > #include > > -#define USE_OLD_PASSMANAGER 1 > +//Use new Pass Manager. Disable old Pass Manager. > +//#define USE_OLD_PASSMANAGER 1 > > namespace llvm { > > > > > _______________________________________________ > llvm-commits mailing list > llvm-commits at cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits From jlaskey at apple.com Wed Jan 3 20:44:17 2007 From: jlaskey at apple.com (Jim Laskey) Date: Wed, 3 Jan 2007 22:44:17 -0400 Subject: [llvm-commits] target specific C++ file in llvm-gcc In-Reply-To: References: Message-ID: <005D17E8-EE77-41A8-AA66-E83F396220EC@apple.com> Roger. On 3-Jan-07, at 09:36 PM, Chris Lattner wrote: > > Thanks Devang, > > Jim and Evan, can you move the monster altivec/sse macros out of the > i386.h / rs6000.h files when convenient? > > -Chris > > On Jan 3, 2007, at 11:59 AM, Devang Patel wrote: > >> I've applied following patch to support target-specific C++ file in >> llvm-gcc. >> >> - >> Devang >> >> >> $ cat ~/patch_collection/llvm/R4897246.take2.diff >> Index: configure >> =================================================================== >> --- configure (revision 121791) >> +++ configure (working copy) >> @@ -309,7 +309,10 @@ ac_includes_default="\ >> # include >> #endif" >> -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME >> PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix >> program_transform_name bindir sbindir libexecdir datadir sysconfdir >> sharedstatedir localstatedir libdir includedir oldincludedir infodir >> mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T >> LIBS build build_cpu build_vendor build_os host host_cpu host_vendor >> host_os target target_cpu target_vendor target_os target_noncanonical >> build_subdir host_subdir target_subdir gcc_version_trigger >> gcc_version_full gcc_version GENINSRC CC CFLAGS LDFLAGS CPPFLAGS >> ac_ct_CC EXEEXT OBJEXT NO_MINUS_C_MINUS_O OUTPUT_OPTION CPP EGREP >> strict1_warn warn_cflags WERROR checkingenabled_flag nocommon_flag >> TREEBROWSER valgrind_path valgrind_path_defines valgrind_command >> coverage_flags enable_multilib enable_shared TARGET_SYSTEM_ROOT >> TARGET_SYSTEM_ROOT_DEFINE CROSS_SYSTEM_HEADER_DIR onestep >> LLVMBASEPATH SET_MAKE AWK LN_S LN RANLIB ac_ct_RANLIB ranlib_flags >> INSTALL INSTALL_PROGRAM INSTALL_DATA make_compare_target >> have_mktemp_command MAKEINFO BUILD_INFO GENERATED_MANPAGES FLEX BISON >> NM AR stage1_cflags COLLECT2_LIBS GNAT_LIBEXC LDEXP_LIB >> TARGET_GETGROUPS_T LIBICONV LTLIBICONV LIBICONV_DEP manext objext >> gthread_flags extra_modes_file PACKAGE VERSION USE_NLS LIBINTL >> LIBINTL_DEP INCINTL XGETTEXT GMSGFMT POSUB CATALOGS >> cc_for_cross_gnattools CROSS ALL SYSTEM_HEADER_DIR inhibit_libc >> CC_FOR_BUILD BUILD_CFLAGS STMP_FIXINC STMP_FIXPROTO collect2 >> libgcc_visibility GGC zlibdir zlibinc MAINT gcc_tooldir dollar >> slibdir objdir subdirs srcdir all_boot_languages all_compilers >> all_gtfiles all_gtfiles_files_langs all_gtfiles_files_files >> all_lang_makefrags all_lang_makefiles all_languages all_stagestuff >> build_exeext build_install_headers_dir build_xm_file_list >> build_xm_include_list build_xm_defines check_languages >> cc_set_by_configure quoted_cc_set_by_configure cpp_install_dir >> xmake_file tmake_file extra_gcc_objs extra_headers_list extra_objs >> extra_parts extra_passes extra_programs float_h_file >> gcc_config_arguments gcc_gxx_include_dir libstdcxx_incdir host_exeext >> host_xm_file_list host_xm_include_list host_xm_defines >> out_host_hook_obj install lang_opt_files lang_specs_files >> lang_tree_files local_prefix md_file objc_boehm_gc out_file >> out_object_file stage_prefix_set_by_configure >> quoted_stage_prefix_set_by_configure thread_file tm_file_list >> tm_include_list tm_defines tm_p_file_list tm_p_include_list >> xm_file_list xm_include_list xm_defines c_target_objs cxx_target_objs >> target_cpu_default set_gcc_lib_path GMPLIBS GMPINC LIBOBJS LTLIBOBJS' >> +# APPLE LOCAL begin LLVM >> +# Add out_cxx_file >> +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME >> PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix >> program_transform_name bindir sbindir libexecdir datadir sysconfdir >> sharedstatedir localstatedir libdir includedir oldincludedir infodir >> mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T >> LIBS build build_cpu build_vendor build_os host host_cpu host_vendor >> host_os target target_cpu target_vendor target_os target_noncanonical >> build_subdir host_subdir target_subdir gcc_version_trigger >> gcc_version_full gcc_version GENINSRC CC CFLAGS LDFLAGS CPPFLAGS >> ac_ct_CC EXEEXT OBJEXT NO_MINUS_C_MINUS_O OUTPUT_OPTION CPP EGREP >> strict1_warn warn_cflags WERROR checkingenabled_flag nocommon_flag >> TREEBROWSER valgrind_path valgrind_path_defines valgrind_command >> coverage_flags enable_multilib enable_shared TARGET_SYSTEM_ROOT >> TARGET_SYSTEM_ROOT_DEFINE CROSS_SYSTEM_HEADER_DIR onestep >> LLVMBASEPATH SET_MAKE AWK LN_S LN RANLIB ac_ct_RANLIB ranlib_flags >> INSTALL INSTALL_PROGRAM INSTALL_DATA make_compare_target >> have_mktemp_command MAKEINFO BUILD_INFO GENERATED_MANPAGES FLEX BISON >> NM AR stage1_cflags COLLECT2_LIBS GNAT_LIBEXC LDEXP_LIB >> TARGET_GETGROUPS_T LIBICONV LTLIBICONV LIBICONV_DEP manext objext >> gthread_flags extra_modes_file PACKAGE VERSION USE_NLS LIBINTL >> LIBINTL_DEP INCINTL XGETTEXT GMSGFMT POSUB CATALOGS >> cc_for_cross_gnattools CROSS ALL SYSTEM_HEADER_DIR inhibit_libc >> CC_FOR_BUILD BUILD_CFLAGS STMP_FIXINC STMP_FIXPROTO collect2 >> libgcc_visibility GGC zlibdir zlibinc MAINT gcc_tooldir dollar >> slibdir objdir subdirs srcdir all_boot_languages all_compilers >> all_gtfiles all_gtfiles_files_langs all_gtfiles_files_files >> all_lang_makefrags all_lang_makefiles all_languages all_stagestuff >> build_exeext build_install_headers_dir build_xm_file_list >> build_xm_include_list build_xm_defines check_languages >> cc_set_by_configure quoted_cc_set_by_configure cpp_install_dir >> xmake_file tmake_file extra_gcc_objs extra_headers_list extra_objs >> extra_parts extra_passes extra_programs float_h_file >> gcc_config_arguments gcc_gxx_include_dir libstdcxx_incdir host_exeext >> host_xm_file_list host_xm_include_list host_xm_defines >> out_host_hook_obj install lang_opt_files lang_specs_files >> lang_tree_files local_prefix md_file objc_boehm_gc out_file >> out_cxx_file out_object_file out_cxx_object_file >> stage_prefix_set_by_configure quoted_stage_prefix_set_by_configure >> thread_file tm_file_list tm_include_list tm_defines tm_p_file_list >> tm_p_include_list xm_file_list xm_include_list xm_defines >> c_target_objs cxx_target_objs target_cpu_default set_gcc_lib_path >> GMPLIBS GMPINC LIBOBJS LTLIBOBJS' >> +# APPLE LOCAL end LLVM >> ac_subst_files='language_hooks' >> # Initialize some variables set by options. >> @@ -12200,6 +12203,8 @@ fi >> # Say what files are being used for the output code and MD file. >> echo "Using \`$srcdir/config/$out_file' for machine-specific logic." >> +# APPLE LOCAL LLVM >> +echo "Using \`$srcdir/config/$out_cxx_file' for machine-specific C++ >> logic." >> echo "Using \`$srcdir/config/$md_file' as machine description file." >> # If any of the xm_file variables contain nonexistent files, warn >> @@ -12909,6 +12914,8 @@ cc_for_cross_gnattools=${CC} >> out_object_file=`basename $out_file .c`.o >> +# APPLE LOCAL LLVM >> +out_cxx_object_file=`basename $out_cxx_file .cpp`.o >> tm_file_list= >> tm_include_list= >> @@ -16615,7 +16622,11 @@ s, at local_prefix@,$local_prefix,;t t >> s, at md_file@,$md_file,;t t >> s, at objc_boehm_gc@,$objc_boehm_gc,;t t >> s, at out_file@,$out_file,;t t >> +# APPLE LOCAL LLVM >> +s, at out_cxx_file@,$out_cxx_file,;t t >> s, at out_object_file@,$out_object_file,;t t >> +# APPLE LOCAL LLVM >> +s, at out_cxx_object_file@,$out_cxx_object_file,;t t >> s, at stage_prefix_set_by_configure@,$stage_prefix_set_by_configure,;t t >> s, at quoted_stage_prefix_set_by_configure@, >> $quoted_stage_prefix_set_by_configure,;t t >> s, at thread_file@,$thread_file,;t t >> Index: config.gcc >> =================================================================== >> --- config.gcc (revision 121791) >> +++ config.gcc (working copy) >> @@ -64,10 +64,13 @@ >> # defining header ${cpu_type}/${cpu_type.h}. >> # >> # tm_p_file Location of file with declarations for >> functions >> -# in $out_file. >> +# APPLE LOCAL LLVM >> +# in $out_file & $out_cxx_file >> # >> # out_file The name of the machine description C support >> # file, if different from "$cpu_type/ >> $cpu_type.c". >> +# APPLE LOCAL LLVM >> +# out_cxx_file The name of the machine >> description C+ >> + support file. >> # >> # md_file The name of the machine-description file, if >> # different from "$cpu_type/$cpu_type.md". >> @@ -144,6 +147,8 @@ >> # system normally uses GNU ld. >> out_file= >> +# APPLE LOCAL LLVM >> +out_cxx_file= >> tmake_file= >> extra_headers= >> extra_passes= >> @@ -961,6 +966,9 @@ i[34567]86-*-darwin*) >> # APPLE LOCAL end mainline 2005-10-02 4218570 >> # APPLE LOCAL 4099000 >> tmake_file="${tmake_file} i386/t-darwin" >> +# APPLE LOCAL begin LLVM >> + out_cxx_file=i386/llvm-i386.cpp >> +# APPLE LOCAL end LLVM >> # APPLE LOCAL 4126124 >> need_64bit_hwint=yes >> ;; >> @@ -2842,6 +2850,8 @@ case ${target} in >> target_cpu_default2="\\\"$with_cpu\\\"" >> fi >> out_file=rs6000/rs6000.c >> + # APPLE LOCAL begin LLVM >> + out_cxx_file=rs6000/llvm-rs6000.cpp >> c_target_objs="${c_target_objs} rs6000-c.o" >> cxx_target_objs="${cxx_target_objs} rs6000-c.o" >> tmake_file="rs6000/t-rs6000 ${tmake_file}" >> Index: Makefile.in >> =================================================================== >> --- Makefile.in (revision 121791) >> +++ Makefile.in (working copy) >> @@ -428,7 +428,11 @@ TARGET_SYSTEM_ROOT = @TARGET_SYSTEM_ROOT >> xmake_file=@xmake_file@ >> tmake_file=@tmake_file@ >> out_file=$(srcdir)/config/@out_file@ >> +# APPLE LOCAL LLVM >> +out_cxx_file=$(srcdir)/config/@out_cxx_file@ >> out_object_file=@out_object_file@ >> +# APPLE LOCAL LLVM >> +out_cxx_object_file=@out_cxx_object_file@ >> md_file=$(srcdir)/config/@md_file@ >> tm_file_list=@tm_file_list@ >> tm_include_list=@tm_include_list@ >> @@ -1019,7 +1023,8 @@ OBJS-common = \ >> lambda-trans.o lambda-code.o tree-loop-linear.o >> # APPLE LOCAL end lno, loops-to-memset >> -OBJS-md = $(out_object_file) >> +# APPLE LOCAL LLVM >> +OBJS-md = $(out_object_file) $(out_cxx_object_file) >> OBJS-archive = $(EXTRA_OBJS) $(host_hook_obj) tree- >> inline.o \ >> cgraph.o cgraphunit.o tree-nomudflap.o >> @@ -1109,7 +1114,8 @@ endif >> endif >> # APPLE LOCAL end LLVM >> -OBJS = $(OBJS-common) $(out_object_file) $(OBJS-archive) >> +# APPLE LOCAL LLVM >> +OBJS = $(OBJS-common) $(out_object_file) $(OBJS-archive) $ >> (out_cxx_object_file) >> OBJS-onestep = libbackend.o $(OBJS-archive) >> @@ -2465,6 +2471,15 @@ $(out_object_file): $(out_file) $(CONFIG >> langhooks.h >> $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ >> $(out_file) $(OUTPUT_OPTION) >> +# APPLE LOCAL begin LLVM >> +$(out_cxx_object_file): $(out_cxx_file) $(CONFIG_H) coretypes.h $ >> (TM_H) $(TREE_H) $(GGC_H) \ >> + $(RTL_H) $(REGS_H) hard-reg-set.h real.h insn-config.h >> conditions.h \ >> + output.h $(INSN_ATTR_H) $(SYSTEM_H) toplev.h $(TARGET_H) >> libfuncs.h \ >> + $(TARGET_DEF_H) function.h $(SCHED_INT_H) $(TM_P_H) $(EXPR_H) $ >> (OPTABS_H) \ >> + langhooks.h >> + $(CXX) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ >> + $(out_cxx_file) $(OUTPUT_OPTION) >> +# APPLE LOCAL end LLVM >> # Build auxiliary files that support ecoff format. >> mips-tfile: mips-tfile.o version.o $(LIBDEPS) >> @@ -2481,7 +2496,8 @@ mips-tdump.o : mips-tdump.c $(CONFIG_H) >> ifeq ($(LLVMOBJDIR),) >> # FIXME: writing proper dependencies for this is a *LOT* of work. >> -libbackend.o : $(OBJS-common:.o=.c) $(out_file) \ >> +# APPLE LOCAL LLVM >> +libbackend.o : $(OBJS-common:.o=.c) $(out_file) $(out_cxx_file) \ >> insn-config.h insn-flags.h insn-codes.h insn-constants.h \ >> insn-attr.h >> $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ >> Index: config/i386/llvm-i386.cpp >> =================================================================== >> Index: config/rs6000/llvm-rs6000.cpp >> =================================================================== >> $ >> _______________________________________________ >> llvm-commits mailing list >> llvm-commits at cs.uiuc.edu >> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits > > _______________________________________________ > llvm-commits mailing list > llvm-commits at cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits -------------- next part -------------- A non-text attachment was scrubbed... Name: smime.p7s Type: application/pkcs7-signature Size: 2417 bytes Desc: not available Url : http://lists.cs.uiuc.edu/pipermail/llvm-commits/attachments/20070103/6f0b8d20/attachment.bin From reid at x10sys.com Wed Jan 3 20:57:37 2007 From: reid at x10sys.com (Reid Spencer) Date: Wed, 3 Jan 2007 20:57:37 -0600 Subject: [llvm-commits] CVS: llvm/lib/AsmParser/llvmAsmParser.y Message-ID: <200701040257.l042vbgd007091@zion.cs.uiuc.edu> Changes in directory llvm/lib/AsmParser: llvmAsmParser.y updated: 1.297 -> 1.298 --- Log message: Disallow packed types in icmp/fcmp instructions. The code generator is not prepared to handle them yet. --- Diffs of the changes: (+4 -0) llvmAsmParser.y | 4 ++++ 1 files changed, 4 insertions(+) Index: llvm/lib/AsmParser/llvmAsmParser.y diff -u llvm/lib/AsmParser/llvmAsmParser.y:1.297 llvm/lib/AsmParser/llvmAsmParser.y:1.298 --- llvm/lib/AsmParser/llvmAsmParser.y:1.297 Wed Jan 3 18:05:48 2007 +++ llvm/lib/AsmParser/llvmAsmParser.y Wed Jan 3 20:57:22 2007 @@ -2549,6 +2549,8 @@ | ICMP IPredicates Types ValueRef ',' ValueRef { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*$3)->getDescription()); + if (isa((*$3).get())) + GEN_ERROR("Packed types not supported by icmp instruction"); Value* tmpVal1 = getVal(*$3, $4); CHECK_FOR_ERROR Value* tmpVal2 = getVal(*$3, $6); @@ -2560,6 +2562,8 @@ | FCMP FPredicates Types ValueRef ',' ValueRef { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*$3)->getDescription()); + if (isa((*$3).get())) + GEN_ERROR("Packed types not supported by fcmp instruction"); Value* tmpVal1 = getVal(*$3, $4); CHECK_FOR_ERROR Value* tmpVal2 = getVal(*$3, $6); From reid at x10sys.com Wed Jan 3 20:58:07 2007 From: reid at x10sys.com (Reid Spencer) Date: Wed, 3 Jan 2007 20:58:07 -0600 Subject: [llvm-commits] CVS: llvm/lib/AsmParser/llvmAsmParser.cpp.cvs llvmAsmParser.y.cvs Message-ID: <200701040258.l042w7aU007112@zion.cs.uiuc.edu> Changes in directory llvm/lib/AsmParser: llvmAsmParser.cpp.cvs updated: 1.43 -> 1.44 llvmAsmParser.y.cvs updated: 1.44 -> 1.45 --- Log message: Regenerate. --- Diffs of the changes: (+35 -27) llvmAsmParser.cpp.cvs | 58 ++++++++++++++++++++++++++------------------------ llvmAsmParser.y.cvs | 4 +++ 2 files changed, 35 insertions(+), 27 deletions(-) Index: llvm/lib/AsmParser/llvmAsmParser.cpp.cvs diff -u llvm/lib/AsmParser/llvmAsmParser.cpp.cvs:1.43 llvm/lib/AsmParser/llvmAsmParser.cpp.cvs:1.44 --- llvm/lib/AsmParser/llvmAsmParser.cpp.cvs:1.43 Wed Jan 3 18:06:14 2007 +++ llvm/lib/AsmParser/llvmAsmParser.cpp.cvs Wed Jan 3 20:57:52 2007 @@ -1671,9 +1671,9 @@ 2192, 2196, 2210, 2214, 2220, 2220, 2226, 2235, 2239, 2248, 2259, 2268, 2280, 2293, 2297, 2301, 2306, 2315, 2334, 2343, 2410, 2414, 2421, 2432, 2445, 2454, 2465, 2475, 2483, 2491, - 2494, 2495, 2502, 2506, 2511, 2532, 2549, 2560, 2571, 2584, - 2593, 2606, 2614, 2621, 2627, 2633, 2639, 2654, 2716, 2721, - 2725, 2732, 2739, 2747, 2754, 2762, 2770, 2784, 2801 + 2494, 2495, 2502, 2506, 2511, 2532, 2549, 2562, 2575, 2588, + 2597, 2610, 2618, 2625, 2631, 2637, 2643, 2658, 2720, 2725, + 2729, 2736, 2743, 2751, 2758, 2766, 2774, 2788, 2805 }; #endif @@ -5211,6 +5211,8 @@ { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription()); + if (isa((*(yyvsp[-3].TypeVal)).get())) + GEN_ERROR("Packed types not supported by icmp instruction"); Value* tmpVal1 = getVal(*(yyvsp[-3].TypeVal), (yyvsp[-2].ValIDVal)); CHECK_FOR_ERROR Value* tmpVal2 = getVal(*(yyvsp[-3].TypeVal), (yyvsp[0].ValIDVal)); @@ -5222,10 +5224,12 @@ break; case 267: -#line 2560 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2562 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription()); + if (isa((*(yyvsp[-3].TypeVal)).get())) + GEN_ERROR("Packed types not supported by fcmp instruction"); Value* tmpVal1 = getVal(*(yyvsp[-3].TypeVal), (yyvsp[-2].ValIDVal)); CHECK_FOR_ERROR Value* tmpVal2 = getVal(*(yyvsp[-3].TypeVal), (yyvsp[0].ValIDVal)); @@ -5237,7 +5241,7 @@ break; case 268: -#line 2571 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2575 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { cerr << "WARNING: Use of eliminated 'not' instruction:" << " Replacing with 'xor'.\n"; @@ -5254,7 +5258,7 @@ break; case 269: -#line 2584 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2588 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[0].ValueVal)->getType() != Type::Int8Ty) GEN_ERROR("Shift amount must be i8 type!"); @@ -5267,7 +5271,7 @@ break; case 270: -#line 2593 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2597 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription()); @@ -5284,7 +5288,7 @@ break; case 271: -#line 2606 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2610 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[-4].ValueVal)->getType() != Type::BoolTy) GEN_ERROR("select condition must be boolean!"); @@ -5296,7 +5300,7 @@ break; case 272: -#line 2614 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2618 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription()); @@ -5307,7 +5311,7 @@ break; case 273: -#line 2621 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2625 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!ExtractElementInst::isValidOperands((yyvsp[-2].ValueVal), (yyvsp[0].ValueVal))) GEN_ERROR("Invalid extractelement operands!"); @@ -5317,7 +5321,7 @@ break; case 274: -#line 2627 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2631 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!InsertElementInst::isValidOperands((yyvsp[-4].ValueVal), (yyvsp[-2].ValueVal), (yyvsp[0].ValueVal))) GEN_ERROR("Invalid insertelement operands!"); @@ -5327,7 +5331,7 @@ break; case 275: -#line 2633 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2637 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!ShuffleVectorInst::isValidOperands((yyvsp[-4].ValueVal), (yyvsp[-2].ValueVal), (yyvsp[0].ValueVal))) GEN_ERROR("Invalid shufflevector operands!"); @@ -5337,7 +5341,7 @@ break; case 276: -#line 2639 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2643 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { const Type *Ty = (yyvsp[0].PHIList)->front().first->getType(); if (!Ty->isFirstClassType()) @@ -5356,7 +5360,7 @@ break; case 277: -#line 2654 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2658 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { // Handle the short syntax @@ -5422,7 +5426,7 @@ break; case 278: -#line 2716 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2720 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.InstVal) = (yyvsp[0].InstVal); CHECK_FOR_ERROR @@ -5430,7 +5434,7 @@ break; case 279: -#line 2721 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2725 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = true; CHECK_FOR_ERROR @@ -5438,7 +5442,7 @@ break; case 280: -#line 2725 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2729 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = false; CHECK_FOR_ERROR @@ -5446,7 +5450,7 @@ break; case 281: -#line 2732 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2736 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); @@ -5457,7 +5461,7 @@ break; case 282: -#line 2739 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2743 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-4].TypeVal))->getDescription()); @@ -5469,7 +5473,7 @@ break; case 283: -#line 2747 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2751 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); @@ -5480,7 +5484,7 @@ break; case 284: -#line 2754 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2758 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-4].TypeVal))->getDescription()); @@ -5492,7 +5496,7 @@ break; case 285: -#line 2762 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2766 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!isa((yyvsp[0].ValueVal)->getType())) GEN_ERROR("Trying to free nonpointer type " + @@ -5503,7 +5507,7 @@ break; case 286: -#line 2770 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2774 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); @@ -5521,7 +5525,7 @@ break; case 287: -#line 2784 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2788 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); @@ -5542,7 +5546,7 @@ break; case 288: -#line 2801 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2805 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription()); @@ -5565,7 +5569,7 @@ } /* Line 1126 of yacc.c. */ -#line 5569 "llvmAsmParser.tab.c" +#line 5573 "llvmAsmParser.tab.c" yyvsp -= yylen; yyssp -= yylen; @@ -5833,7 +5837,7 @@ } -#line 2818 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2822 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" // common code from the two 'RunVMAsmParser' functions Index: llvm/lib/AsmParser/llvmAsmParser.y.cvs diff -u llvm/lib/AsmParser/llvmAsmParser.y.cvs:1.44 llvm/lib/AsmParser/llvmAsmParser.y.cvs:1.45 --- llvm/lib/AsmParser/llvmAsmParser.y.cvs:1.44 Wed Jan 3 18:06:14 2007 +++ llvm/lib/AsmParser/llvmAsmParser.y.cvs Wed Jan 3 20:57:52 2007 @@ -2549,6 +2549,8 @@ | ICMP IPredicates Types ValueRef ',' ValueRef { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*$3)->getDescription()); + if (isa((*$3).get())) + GEN_ERROR("Packed types not supported by icmp instruction"); Value* tmpVal1 = getVal(*$3, $4); CHECK_FOR_ERROR Value* tmpVal2 = getVal(*$3, $6); @@ -2560,6 +2562,8 @@ | FCMP FPredicates Types ValueRef ',' ValueRef { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*$3)->getDescription()); + if (isa((*$3).get())) + GEN_ERROR("Packed types not supported by fcmp instruction"); Value* tmpVal1 = getVal(*$3, $4); CHECK_FOR_ERROR Value* tmpVal2 = getVal(*$3, $6); From reid at x10sys.com Wed Jan 3 21:06:38 2007 From: reid at x10sys.com (Reid Spencer) Date: Wed, 3 Jan 2007 21:06:38 -0600 Subject: [llvm-commits] CVS: llvm/test/Feature/packed_cmp.ll Message-ID: <200701040306.l0436cZ7007287@zion.cs.uiuc.edu> Changes in directory llvm/test/Feature: packed_cmp.ll updated: 1.1 -> 1.2 --- Log message: XFAIL this test until such time that code gen can handle a comparison of packed types. --- Diffs of the changes: (+1 -0) packed_cmp.ll | 1 + 1 files changed, 1 insertion(+) Index: llvm/test/Feature/packed_cmp.ll diff -u llvm/test/Feature/packed_cmp.ll:1.1 llvm/test/Feature/packed_cmp.ll:1.2 --- llvm/test/Feature/packed_cmp.ll:1.1 Wed Jan 3 18:29:09 2007 +++ llvm/test/Feature/packed_cmp.ll Wed Jan 3 21:06:23 2007 @@ -3,6 +3,7 @@ ; RUN: llvm-as < %s | llvm-dis > %t1.ll ; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll ; RUN: diff %t1.ll %t2.ll +; XFAIL: * %ivec_type = type <4 x i8> %ivec1 = constant %ivec_type < i8 1, i8 1, i8 1, i8 1 > From reid at x10sys.com Wed Jan 3 23:20:14 2007 From: reid at x10sys.com (Reid Spencer) Date: Wed, 3 Jan 2007 23:20:14 -0600 Subject: [llvm-commits] CVS: llvm/docs/LangRef.html Message-ID: <200701040520.l045KEUZ009288@zion.cs.uiuc.edu> Changes in directory llvm/docs: LangRef.html updated: 1.184 -> 1.185 --- Log message: icmp and fcmp do not take packed type operands. --- Diffs of the changes: (+6 -7) LangRef.html | 13 ++++++------- 1 files changed, 6 insertions(+), 7 deletions(-) Index: llvm/docs/LangRef.html diff -u llvm/docs/LangRef.html:1.184 llvm/docs/LangRef.html:1.185 --- llvm/docs/LangRef.html:1.184 Sun Dec 31 15:30:18 2006 +++ llvm/docs/LangRef.html Wed Jan 3 23:19:58 2007 @@ -3139,9 +3139,8 @@
  • slt: signed less than
  • sle: signed less or equal
  • -

    The remaining two arguments must be of integral, -pointer or a packed integral -type. They must have identical types.

    +

    The remaining two arguments must be integral or +pointer typed. They must also be identical types.

    Semantics:

    The 'icmp' compares var1 and var2 according to the condition code given as cond. The comparison performed always @@ -3220,9 +3219,9 @@

    In the preceding, ordered means that neither operand is a QNAN while unordered means that either operand may be a QNAN.

    -

    The val1 and val2 arguments must be of -floating point, or a packed -floating point type. They must have identical types.

    +

    The val1 and val2 arguments must be +floating point typed. They must have identical +types.

    In the foregoing, ordered means that neither operand is a QNAN and unordered means that either operand is a QNAN.

    Semantics:
    @@ -4501,7 +4500,7 @@ Chris Lattner
    The LLVM Compiler Infrastructure
    - Last modified: $Date: 2006/12/31 21:30:18 $ + Last modified: $Date: 2007/01/04 05:19:58 $ From reid at x10sys.com Wed Jan 3 23:22:33 2007 From: reid at x10sys.com (Reid Spencer) Date: Wed, 3 Jan 2007 23:22:33 -0600 Subject: [llvm-commits] CVS: llvm/lib/VMCore/Verifier.cpp Message-ID: <200701040522.l045MXtn009341@zion.cs.uiuc.edu> Changes in directory llvm/lib/VMCore: Verifier.cpp updated: 1.180 -> 1.181 --- Log message: Do not allow packed types for icmp and fcmp instructions. --- Diffs of the changes: (+2 -5) Verifier.cpp | 7 ++----- 1 files changed, 2 insertions(+), 5 deletions(-) Index: llvm/lib/VMCore/Verifier.cpp diff -u llvm/lib/VMCore/Verifier.cpp:1.180 llvm/lib/VMCore/Verifier.cpp:1.181 --- llvm/lib/VMCore/Verifier.cpp:1.180 Sat Dec 30 23:26:44 2006 +++ llvm/lib/VMCore/Verifier.cpp Wed Jan 3 23:22:18 2007 @@ -739,9 +739,7 @@ Assert1(Op0Ty == Op1Ty, "Both operands to ICmp instruction are not of the same type!", &IC); // Check that the operands are the right type - Assert1(Op0Ty->isIntegral() || Op0Ty->getTypeID() == Type::PointerTyID || - (isa(Op0Ty) && - cast(Op0Ty)->getElementType()->isIntegral()), + Assert1(Op0Ty->isIntegral() || Op0Ty->getTypeID() == Type::PointerTyID, "Invalid operand types for ICmp instruction", &IC); visitInstruction(IC); } @@ -753,8 +751,7 @@ Assert1(Op0Ty == Op1Ty, "Both operands to FCmp instruction are not of the same type!", &FC); // Check that the operands are the right type - Assert1(Op0Ty->isFloatingPoint() || (isa(Op0Ty) && - cast(Op0Ty)->getElementType()->isFloatingPoint()), + Assert1(Op0Ty->isFloatingPoint(), "Invalid operand types for FCmp instruction", &FC); visitInstruction(FC); } From reid at x10sys.com Wed Jan 3 23:24:06 2007 From: reid at x10sys.com (Reid Spencer) Date: Wed, 3 Jan 2007 23:24:06 -0600 Subject: [llvm-commits] CVS: llvm/lib/Transforms/Scalar/InstructionCombining.cpp Message-ID: <200701040524.l045O6lv009374@zion.cs.uiuc.edu> Changes in directory llvm/lib/Transforms/Scalar: InstructionCombining.cpp updated: 1.577 -> 1.578 --- Log message: Death to useless bitcast instructions! --- Diffs of the changes: (+3 -33) InstructionCombining.cpp | 36 +++--------------------------------- 1 files changed, 3 insertions(+), 33 deletions(-) Index: llvm/lib/Transforms/Scalar/InstructionCombining.cpp diff -u llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.577 llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.578 --- llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.577 Sat Dec 30 23:48:39 2006 +++ llvm/lib/Transforms/Scalar/InstructionCombining.cpp Wed Jan 3 23:23:51 2007 @@ -1998,9 +1998,6 @@ // FIXME: Once integer types are signless, this cast should be // removed. Value *ShiftOp = SI->getOperand(0); - if (ShiftOp->getType() != I.getType()) - ShiftOp = InsertCastBefore(Instruction::BitCast, ShiftOp, - I.getType(), I); return new ShiftInst(Instruction::AShr, ShiftOp, CU, SI->getName()); } @@ -4267,10 +4264,6 @@ else if (NumDifferences == 1) { Value *LHSV = GEPLHS->getOperand(DiffOperand); Value *RHSV = GEPRHS->getOperand(DiffOperand); - if (LHSV->getType() != RHSV->getType()) - // Doesn't matter which one we bitconvert here. - LHSV = InsertCastBefore(Instruction::BitCast, LHSV, RHSV->getType(), - I); // Make sure we do a signed comparison here. return new ICmpInst(ICmpInst::getSignedPredicate(Cond), LHSV, RHSV); } @@ -4651,14 +4644,7 @@ else NewAndCST = ConstantExpr::getShl(AndCST, ShAmt); LHSI->setOperand(1, NewAndCST); - if (AndTy == Ty) - LHSI->setOperand(0, Shift->getOperand(0)); - else { - Value *NewCast = InsertCastBefore(Instruction::BitCast, - Shift->getOperand(0), AndTy, - *Shift); - LHSI->setOperand(0, NewCast); - } + LHSI->setOperand(0, Shift->getOperand(0)); WorkList.push_back(Shift); // Shift is dead. AddUsesToWorkList(I); return &I; @@ -4684,19 +4670,9 @@ } InsertNewInstBefore(cast(NS), I); - // If C's sign doesn't agree with the and, insert a cast now. - if (NS->getType() != LHSI->getType()) - NS = InsertCastBefore(Instruction::BitCast, NS, LHSI->getType(), - I); - - Value *ShiftOp = Shift->getOperand(0); - if (ShiftOp->getType() != LHSI->getType()) - ShiftOp = InsertCastBefore(Instruction::BitCast, ShiftOp, - LHSI->getType(), I); - // Compute X & (C << Y). - Instruction *NewAnd = - BinaryOperator::createAnd(ShiftOp, NS, LHSI->getName()); + Instruction *NewAnd = BinaryOperator::createAnd( + Shift->getOperand(0), NS, LHSI->getName()); InsertNewInstBefore(NewAnd, I); I.setOperand(0, NewAnd); @@ -5630,8 +5606,6 @@ C = ConstantExpr::getLShr(C, ShiftAmt1C); Value *Op = ShiftOp->getOperand(0); - if (Op->getType() != C->getType()) - Op = InsertCastBefore(Instruction::BitCast, Op, I.getType(), I); Instruction *Mask = BinaryOperator::createAnd(Op, C, Op->getName()+".mask"); @@ -6070,10 +6044,6 @@ ConstantInt::get(Type::Int64Ty, (1ULL << SrcBitSize)-1); if (DestBitSize < 64) C = ConstantExpr::getTrunc(C, DestTy); - else { - assert(DestBitSize == 64); - C = ConstantExpr::getBitCast(C, DestTy); - } return BinaryOperator::createAnd(Res, C); } case Instruction::SExt: From sabre at nondot.org Thu Jan 4 01:06:21 2007 From: sabre at nondot.org (Chris Lattner) Date: Thu, 4 Jan 2007 01:06:21 -0600 Subject: [llvm-commits] CVS: llvm/docs/GettingStarted.html Message-ID: <200701040706.l0476LCZ011192@zion.cs.uiuc.edu> Changes in directory llvm/docs: GettingStarted.html updated: 1.149 -> 1.150 --- Log message: gcc 4.1.1 on amd64 is broken --- Diffs of the changes: (+7 -2) GettingStarted.html | 9 +++++++-- 1 files changed, 7 insertions(+), 2 deletions(-) Index: llvm/docs/GettingStarted.html diff -u llvm/docs/GettingStarted.html:1.149 llvm/docs/GettingStarted.html:1.150 --- llvm/docs/GettingStarted.html:1.149 Mon Nov 20 00:07:10 2006 +++ llvm/docs/GettingStarted.html Thu Jan 4 01:06:05 2007 @@ -174,7 +174,8 @@
    1. gmake -k |& tee gnumake.out    # this is csh or tcsh syntax
    2. -
    3. If you get an "internal compiler error (ICE)" see below.
    4. +
    5. If you get an "internal compiler error (ICE)" or test failures, see + below.
    @@ -533,6 +534,10 @@

    GCC 4.1.1: GCC fails to build LLVM with template concept check errors compiling some files. At the time of this writing, GCC mainline (4.2) did not share the problem.

    +

    GCC 4.1.1 on X86-64/amd64: GCC + miscompiles portions of LLVM when compiling llvm itself into 64-bit + code. LLVM will appear to mostly work but will be buggy, e.g. failing + portions of its testsuite.

    GNU ld 2.16.X. Some 2.16.X versions of the ld linker will produce very long warning messages complaining that some ".gnu.linkonce.t.*" symbol was defined in a discarded section. You can safely ignore these messages as they are @@ -1693,7 +1698,7 @@ Chris Lattner
    Reid Spencer
    The LLVM Compiler Infrastructure
    - Last modified: $Date: 2006/11/20 06:07:10 $ + Last modified: $Date: 2007/01/04 07:06:05 $ From sabre at nondot.org Thu Jan 4 01:08:42 2007 From: sabre at nondot.org (Chris Lattner) Date: Thu, 4 Jan 2007 01:08:42 -0600 Subject: [llvm-commits] CVS: llvm/docs/GettingStarted.html Message-ID: <200701040708.l0478gVw011273@zion.cs.uiuc.edu> Changes in directory llvm/docs: GettingStarted.html updated: 1.150 -> 1.151 --- Log message: ding dong llvm-gcc3 is dead --- Diffs of the changes: (+3 -75) GettingStarted.html | 78 ++-------------------------------------------------- 1 files changed, 3 insertions(+), 75 deletions(-) Index: llvm/docs/GettingStarted.html diff -u llvm/docs/GettingStarted.html:1.150 llvm/docs/GettingStarted.html:1.151 --- llvm/docs/GettingStarted.html:1.150 Thu Jan 4 01:06:05 2007 +++ llvm/docs/GettingStarted.html Thu Jan 4 01:08:27 2007 @@ -54,7 +54,6 @@

  • An Example Using the LLVM Tool Chain
    1. Example with llvm-gcc4
    2. -
    3. Example with llvm-gcc3
  • Common Problems
  • Links @@ -648,12 +647,6 @@
    llvm-test-x.y.tar.gz
    Source release for the LLVM test suite.
    -
    llvm-gcc3.4-x.y.source.tar.gz
    -
    Source release of the LLVM GCC 3.4 front end.
    - -
    llvm-gcc3.4-x.y-platform.tar.gz
    -
    Binary release of the LLVM GCC 3.4 for a specific platform.
    -
    llvm-gcc4-x.y.source.tar.gz
    Source release of the llvm-gcc4 front end. See README.LLVM in the root directory for build instructions.
    @@ -750,11 +743,6 @@ -
  • -

    Next, you will need to fix your system header files (llvm-gcc3.4 only):

    - -

    cd llvm-gcc3.4/platform
    - ./fixheaders

    -

    The binary versions of the GCC front end may not suit all of your needs. For example, the binary distribution may include an old version of a system header file, not "fix" a header file that needs to be fixed for GCC, or it may be @@ -1504,8 +1492,8 @@

    -

    This section gives an example of using LLVM. Since we are currently -transitioning from llvm-gcc3 to llvm-gcc4, we include examples for both. +

    This section gives an example of using LLVM. llvm-gcc3 is now obsolete, +so we only include instructiosn for llvm-gcc4.

    Note: The gcc4 frontend's invocation is considerably different @@ -1588,66 +1576,6 @@

    - - - -
    - -
      -
    1. First, create a simple C file, name it 'hello.c': -
      -   #include <stdio.h>
      -   int main() {
      -     printf("hello world\n");
      -     return 0;
      -   }
      -       
    2. - -
    3. Next, compile the C file into a LLVM bytecode file:

      -

      % llvm-gcc hello.c -o hello

      - -

      Note that you should have already built the tools and they have to be - in your path, at least gccas and gccld.

      - -

      This will create two result files: hello and - hello.bc. The hello.bc is the LLVM bytecode that - corresponds the the compiled program and the library facilities that it - required. hello is a simple shell script that runs the bytecode - file with lli, making the result directly executable. Note that - all LLVM optimizations are enabled by default, so there is no need for a - "-O3" switch.

    4. - -
    5. Run the program. To make sure the program ran, execute one of the - following commands:

      - -

      % ./hello

      - -

      or

      - -

      % lli hello.bc

    6. - -
    7. Use the llvm-dis utility to take a look at the LLVM assembly - code:

      - -

      % llvm-dis < hello.bc | less

    8. - -
    9. Compile the program to native assembly using the LLC code - generator:

      - -

      % llc hello.bc -o hello.s

      - -
    10. Assemble the native assembly language file into a program:

      - -

      Solaris:% /opt/SUNWspro/bin/cc -xarch=v9 hello.s -o hello.native

      -

      Others:% gcc hello.s -o hello.native

      - -
    11. Execute the native code program:

      - -

      % ./hello.native

    12. - -
    - -
    @@ -1698,7 +1626,7 @@ Chris Lattner
    Reid Spencer
    The LLVM Compiler Infrastructure
    - Last modified: $Date: 2007/01/04 07:06:05 $ + Last modified: $Date: 2007/01/04 07:08:27 $ From isanbard at gmail.com Thu Jan 4 02:19:30 2007 From: isanbard at gmail.com (Bill Wendling) Date: Thu, 4 Jan 2007 00:19:30 -0800 Subject: [llvm-commits] CVS: llvm/docs/GettingStarted.html In-Reply-To: <200701040708.l0478gVw011273@zion.cs.uiuc.edu> References: <200701040708.l0478gVw011273@zion.cs.uiuc.edu> Message-ID: <1DC0E9EB-45C5-4E9A-91BA-2F3D061D02CE@gmail.com> On Jan 3, 2007, at 11:08 PM, Chris Lattner wrote: > > > Changes in directory llvm/docs: > > GettingStarted.html updated: 1.150 -> 1.151 > --- > Log message: > > ding dong llvm-gcc3 is dead > > YAY!!!! THANK GOD!!!! -bw From isanbard at gmail.com Thu Jan 4 02:38:28 2007 From: isanbard at gmail.com (Bill Wendling) Date: Thu, 4 Jan 2007 02:38:28 -0600 Subject: [llvm-commits] CVS: llvm/docs/CodingStandards.html Message-ID: <200701040838.l048cSE4021302@zion.cs.uiuc.edu> Changes in directory llvm/docs: CodingStandards.html updated: 1.33 -> 1.34 --- Log message: Removed reference to "cnull" because typical users shouldn't need to use it. --- Diffs of the changes: (+1 -7) CodingStandards.html | 8 +------- 1 files changed, 1 insertion(+), 7 deletions(-) Index: llvm/docs/CodingStandards.html diff -u llvm/docs/CodingStandards.html:1.33 llvm/docs/CodingStandards.html:1.34 --- llvm/docs/CodingStandards.html:1.33 Sun Dec 17 05:40:40 2006 +++ llvm/docs/CodingStandards.html Thu Jan 4 02:38:04 2007 @@ -538,12 +538,6 @@
    llvm::cin >> Var;
    - N/A -
    llvm::cnull >> Var;
    -
      N.B. Eats up argument Var outputting - nothing.
    - -
    std::ostream
    llvm::OStream
    @@ -765,7 +759,7 @@ Chris Lattner
    LLVM Compiler Infrastructure
    - Last modified: $Date: 2006/12/17 11:40:40 $ + Last modified: $Date: 2007/01/04 08:38:04 $ From lauro.venancio at gmail.com Thu Jan 4 08:01:53 2007 From: lauro.venancio at gmail.com (Lauro Ramos Venancio) Date: Thu, 4 Jan 2007 08:01:53 -0600 Subject: [llvm-commits] CVS: llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp Message-ID: <200701041401.l04E1r3s027891@zion.cs.uiuc.edu> Changes in directory llvm/lib/Target/ARM: ARMISelDAGToDAG.cpp updated: 1.96 -> 1.97 --- Log message: Expand SELECT (f32/f64) and FCOPYSIGN (f32/f64). --- Diffs of the changes: (+5 -0) ARMISelDAGToDAG.cpp | 5 +++++ 1 files changed, 5 insertions(+) Index: llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp diff -u llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp:1.96 llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp:1.97 --- llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp:1.96 Sun Dec 31 12:52:39 2006 +++ llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp Thu Jan 4 08:01:38 2007 @@ -67,6 +67,8 @@ setOperationAction(ISD::SIGN_EXTEND_INREG, MVT::i1 , Expand); setOperationAction(ISD::SELECT, MVT::i32, Expand); + setOperationAction(ISD::SELECT, MVT::f32, Expand); + setOperationAction(ISD::SELECT, MVT::f64, Expand); setOperationAction(ISD::SETCC, MVT::i32, Expand); setOperationAction(ISD::SETCC, MVT::f32, Expand); @@ -104,6 +106,9 @@ setOperationAction(ISD::ConstantFP, MVT::f64, Expand); setOperationAction(ISD::ConstantFP, MVT::f32, Expand); + setOperationAction(ISD::FCOPYSIGN, MVT::f64, Expand); + setOperationAction(ISD::FCOPYSIGN, MVT::f32, Expand); + setStackPointerRegisterToSaveRestore(ARM::R13); setSchedulingPreference(SchedulingForRegPressure); From lauro.venancio at gmail.com Thu Jan 4 08:24:47 2007 From: lauro.venancio at gmail.com (Lauro Ramos Venancio) Date: Thu, 4 Jan 2007 08:24:47 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/CodeGen/ARM/fcopysign.ll Message-ID: <200701041424.l04EOlnP028256@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/CodeGen/ARM: fcopysign.ll added (r1.1) --- Log message: Add test for FCOPYSIGN. --- Diffs of the changes: (+21 -0) fcopysign.ll | 21 +++++++++++++++++++++ 1 files changed, 21 insertions(+) Index: llvm/test/Regression/CodeGen/ARM/fcopysign.ll diff -c /dev/null llvm/test/Regression/CodeGen/ARM/fcopysign.ll:1.1 *** /dev/null Thu Jan 4 08:24:42 2007 --- llvm/test/Regression/CodeGen/ARM/fcopysign.ll Thu Jan 4 08:24:32 2007 *************** *** 0 **** --- 1,21 ---- + ; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm + + define csretcc void %__divsc3({ float, float }* %agg.result, float %a, float %b, float %c, float %d) { + entry: + br bool false, label %bb, label %cond_next375 + + bb: ; preds = %entry + %tmp81 = tail call float %copysignf( float 0x7FF0000000000000, float %c ) ; [#uses=1] + %tmp87 = mul float %tmp81, %b ; [#uses=1] + br label %cond_next375 + + cond_next375: ; preds = %bb, %entry + %y.1 = phi float [ %tmp87, %bb ], [ 0.000000e+00, %entry ] ; [#uses=0] + ret void + } + + declare float %fabsf(float) + + declare bool %llvm.isunordered.f32(float, float) + + declare float %copysignf(float, float) From lauro.venancio at gmail.com Thu Jan 4 08:27:36 2007 From: lauro.venancio at gmail.com (Lauro Ramos Venancio) Date: Thu, 4 Jan 2007 08:27:36 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/CodeGen/ARM/extloadi1.ll Message-ID: <200701041427.l04ERaIK028309@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/CodeGen/ARM: extloadi1.ll added (r1.1) --- Log message: Add extload(i1) test. --- Diffs of the changes: (+22 -0) extloadi1.ll | 22 ++++++++++++++++++++++ 1 files changed, 22 insertions(+) Index: llvm/test/Regression/CodeGen/ARM/extloadi1.ll diff -c /dev/null llvm/test/Regression/CodeGen/ARM/extloadi1.ll:1.1 *** /dev/null Thu Jan 4 08:27:31 2007 --- llvm/test/Regression/CodeGen/ARM/extloadi1.ll Thu Jan 4 08:27:21 2007 *************** *** 0 **** --- 1,22 ---- + ; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm + + %handler_installed.6144.b = external global bool ; [#uses=1] + + + void %__mf_sigusr1_respond() { + entry: + %tmp8.b = load bool* %handler_installed.6144.b ; [#uses=1] + br bool false, label %cond_true7, label %cond_next + + cond_next: ; preds = %entry + br bool %tmp8.b, label %bb, label %cond_next3 + + cond_next3: ; preds = %cond_next + ret void + + bb: ; preds = %cond_next + ret void + + cond_true7: ; preds = %entry + ret void + } From lauro.venancio at gmail.com Thu Jan 4 08:41:48 2007 From: lauro.venancio at gmail.com (Lauro Ramos Venancio) Date: Thu, 4 Jan 2007 08:41:48 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/CodeGen/ARM/ctors_dtors.ll Message-ID: <200701041441.l04EfmAQ028545@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/CodeGen/ARM: ctors_dtors.ll added (r1.1) --- Log message: Add test for constructor and destructor sections. --- Diffs of the changes: (+16 -0) ctors_dtors.ll | 16 ++++++++++++++++ 1 files changed, 16 insertions(+) Index: llvm/test/Regression/CodeGen/ARM/ctors_dtors.ll diff -c /dev/null llvm/test/Regression/CodeGen/ARM/ctors_dtors.ll:1.1 *** /dev/null Thu Jan 4 08:41:43 2007 --- llvm/test/Regression/CodeGen/ARM/ctors_dtors.ll Thu Jan 4 08:41:33 2007 *************** *** 0 **** --- 1,16 ---- + ; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -o %t.s -f && + ; RUN: grep '\.section \.ctors,"aw",.progbits' %t.s | grep % && + ; RUN: grep '\.section \.dtors,"aw",.progbits' %t.s | grep % + + %llvm.global_ctors = appending global [1 x { int, void ()* }] [ { int, void ()* } { int 65535, void ()* %__mf_init } ] ; <[1 x { int, void ()* }]*> [#uses=0] + %llvm.global_dtors = appending global [1 x { int, void ()* }] [ { int, void ()* } { int 65535, void ()* %__mf_fini } ] ; <[1 x { int, void ()* }]*> [#uses=0] + + void %__mf_init() { + entry: + ret void + } + + void %__mf_fini() { + entry: + ret void + } From jlaskey at apple.com Thu Jan 4 09:41:48 2007 From: jlaskey at apple.com (Jim Laskey) Date: Thu, 4 Jan 2007 11:41:48 -0400 Subject: [llvm-commits] [llvm-gcc4]First round of get rid of massive macro (PowerPC.) Message-ID: This is just a start. Next round will clean up #includes and macro usage. -- Jim -------------- next part -------------- A non-text attachment was scrubbed... Name: rs6000.patch Type: application/octet-stream Size: 44645 bytes Desc: not available Url : http://lists.cs.uiuc.edu/pipermail/llvm-commits/attachments/20070104/d3d04ac0/attachment.obj -------------- next part -------------- -------------- next part -------------- A non-text attachment was scrubbed... Name: smime.p7s Type: application/pkcs7-signature Size: 2417 bytes Desc: not available Url : http://lists.cs.uiuc.edu/pipermail/llvm-commits/attachments/20070104/d3d04ac0/attachment.bin From reid at x10sys.com Thu Jan 4 10:43:38 2007 From: reid at x10sys.com (Reid Spencer) Date: Thu, 4 Jan 2007 10:43:38 -0600 Subject: [llvm-commits] CVS: llvm/docs/LangRef.html Message-ID: <200701041643.l04GhcQ3030713@zion.cs.uiuc.edu> Changes in directory llvm/docs: LangRef.html updated: 1.185 -> 1.186 --- Log message: Clean up usage of "unsigned" and "signed" in the documentation to indicate only that specific instructions regard their operands as signed and unsigned not that the operands *are* signed or unsigned. --- Diffs of the changes: (+22 -21) LangRef.html | 43 ++++++++++++++++++++++--------------------- 1 files changed, 22 insertions(+), 21 deletions(-) Index: llvm/docs/LangRef.html diff -u llvm/docs/LangRef.html:1.185 llvm/docs/LangRef.html:1.186 --- llvm/docs/LangRef.html:1.185 Wed Jan 3 23:19:58 2007 +++ llvm/docs/LangRef.html Thu Jan 4 10:43:23 2007 @@ -857,12 +857,12 @@ [40 x i32 ]
    [41 x i32 ]
    - [40 x i32]
    + [40 x i8]
    - Array of 40 integer values.
    - Array of 41 integer values.
    - Array of 40 unsigned integer values.
    + Array of 40 32-bit integer values.
    + Array of 41 32-bit integer values.
    + Array of 40 8-bit integer values.
    @@ -872,12 +872,12 @@ [3 x [4 x i32]]
    [12 x [10 x float]]
    - [2 x [3 x [4 x i32]]]
    + [2 x [3 x [4 x i16]]]
    - 3x4 array of integer values.
    + 3x4 array of 32-bit integer values.
    12x10 array of single precision floating point values.
    - 2x3x4 array of unsigned integer values.
    + 2x3x4 array of 16-bit integer values.
    @@ -927,7 +927,7 @@ i32 (i8*, ...) A vararg function that takes at least one - pointer to i8 (signed char in C), + pointer to i8 (char in C), which returns an integer. This is the signature for printf in LLVM. @@ -1054,12 +1054,12 @@ <4 x i32>
    <8 x float>
    - <2 x i32>
    + <2 x i64>
    - Packed vector of 4 integer values.
    + Packed vector of 4 32-bit integer values.
    Packed vector of 8 floating-point values.
    - Packed vector of 2 unsigned integer values.
    + Packed vector of 2 64-bit integer values.
    @@ -1123,7 +1123,7 @@
    Integer constants
    Standard integers (such as '4') are constants of the integer type. Negative numbers may be used with signed + href="#t_integer">integer type. Negative numbers may be used with integer types.
    @@ -1770,8 +1770,9 @@
    Semantics:

    The value produced is the integer or floating point product of the two operands.

    -

    There is no signed vs unsigned multiplication. The appropriate -action is taken based on the type of the operand.

    +

    Because the operands are the same width, the result of an integer +multiplication is the same whether the operands should be deemed unsigned or +signed.

    Example:
      <result> = mul i32 4, %var          ; yields {i32}:result = 4 * %var
     
    @@ -2127,9 +2128,9 @@ href="#t_integer">integer type. The second argument must be an 'i8' type.

    Semantics:
    -

    This instruction always performs a logical shift right operation, regardless -of whether the arguments are unsigned or not. The var2 most significant -bits will be filled with zero bits after the shift.

    +

    This instruction always performs a logical shift right operation. The +var2 most significant bits will be filled with zero bits after the +shift.

    Example:
    @@ -4387,7 +4388,7 @@
     
     

    The only argument is the value to be counted. The argument may be of any -unsigned integer type. The return type must match the argument type. +integer type. The return type must match the argument type.

    Semantics:
    @@ -4423,7 +4424,7 @@

    The only argument is the value to be counted. The argument may be of any -unsigned integer type. The return type must match the argument type. +integer type. The return type must match the argument type.

    Semantics:
    @@ -4463,7 +4464,7 @@

    The only argument is the value to be counted. The argument may be of any -unsigned integer type. The return type must match the argument type. +integer type. The return type must match the argument type.

    Semantics:
    @@ -4500,7 +4501,7 @@ Chris Lattner
    The LLVM Compiler Infrastructure
    - Last modified: $Date: 2007/01/04 05:19:58 $ + Last modified: $Date: 2007/01/04 16:43:23 $ From reid at x10sys.com Thu Jan 4 10:47:01 2007 From: reid at x10sys.com (Reid Spencer) Date: Thu, 4 Jan 2007 10:47:01 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/Transforms/SimplifyCFG/2006-12-08-Ptr-ICmp-Branch.ll Message-ID: <200701041647.l04Gl14e030776@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/Transforms/SimplifyCFG: 2006-12-08-Ptr-ICmp-Branch.ll updated: 1.3 -> 1.4 --- Log message: Remove a manual renaming of a variable that was introduced before llvm-upgrade could properly handle collapsed type planes. --- Diffs of the changes: (+1 -1) 2006-12-08-Ptr-ICmp-Branch.ll | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/test/Regression/Transforms/SimplifyCFG/2006-12-08-Ptr-ICmp-Branch.ll diff -u llvm/test/Regression/Transforms/SimplifyCFG/2006-12-08-Ptr-ICmp-Branch.ll:1.3 llvm/test/Regression/Transforms/SimplifyCFG/2006-12-08-Ptr-ICmp-Branch.ll:1.4 --- llvm/test/Regression/Transforms/SimplifyCFG/2006-12-08-Ptr-ICmp-Branch.ll:1.3 Sun Dec 31 00:02:00 2006 +++ llvm/test/Regression/Transforms/SimplifyCFG/2006-12-08-Ptr-ICmp-Branch.ll Thu Jan 4 10:46:46 2007 @@ -56,7 +56,7 @@ bb: ; preds = %bb33 %tmp = load %struct.FILE** %f_addr ; <%struct.FILE*> [#uses=1] - %tmp.r = call int %_IO_getc( %struct.FILE* %tmp ) ; [#uses=1] + %tmp = call int %_IO_getc( %struct.FILE* %tmp ) ; [#uses=1] %tmp6 = call int %tolower( int %tmp ) ; [#uses=1] %tmp6 = trunc int %tmp6 to sbyte ; [#uses=1] store sbyte %tmp6, sbyte* %c From rspencer at reidspencer.com Thu Jan 4 11:02:31 2007 From: rspencer at reidspencer.com (Reid Spencer) Date: Thu, 04 Jan 2007 09:02:31 -0800 Subject: [llvm-commits] [llvm-gcc4]First round of get rid of massive macro (PowerPC.) In-Reply-To: References: Message-ID: <1167930151.22536.97.camel@bashful.x10sys.com> That is *such* a welcome change :) Reid. On Thu, 2007-01-04 at 11:41 -0400, Jim Laskey wrote: > This is just a start. Next round will clean up #includes and macro > usage. > > -- Jim > > > _______________________________________________ > llvm-commits mailing list > llvm-commits at cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits From jlaskey at apple.com Thu Jan 4 11:35:14 2007 From: jlaskey at apple.com (Jim Laskey) Date: Thu, 4 Jan 2007 13:35:14 -0400 Subject: [llvm-commits] [llvm-gcc4] Second round of get rid of massive macro (PowerPC.) Message-ID: <5D1F2A09-5778-4C8A-A6D5-554A27F76CAE@apple.com> Combined patch [checked in.] Waiting for reviews. -- Jim -------------- next part -------------- A non-text attachment was scrubbed... Name: rs6000.patch Type: application/octet-stream Size: 44625 bytes Desc: not available Url : http://lists.cs.uiuc.edu/pipermail/llvm-commits/attachments/20070104/0b304185/attachment.obj -------------- next part -------------- A non-text attachment was scrubbed... Name: smime.p7s Type: application/pkcs7-signature Size: 2417 bytes Desc: not available Url : http://lists.cs.uiuc.edu/pipermail/llvm-commits/attachments/20070104/0b304185/attachment.bin From clattner at apple.com Thu Jan 4 11:37:47 2007 From: clattner at apple.com (Chris Lattner) Date: Thu, 4 Jan 2007 09:37:47 -0800 Subject: [llvm-commits] [llvm-gcc] SETCC Removal Patch (Please Commit) In-Reply-To: <1166854083.18862.18.camel@bashful.x10sys.com> References: <1166854083.18862.18.camel@bashful.x10sys.com> Message-ID: <5E08A545-8686-4AF8-A677-A676ACBD3771@apple.com> On Dec 22, 2006, at 10:08 PM, Reid Spencer wrote: > All, > > As the SetCondInst instruction has been replaced with the new FCmpInst > and ICmpInst instrucitons in LLVM, the attached patch compensates for > this in llvm-gcc. Since the Apple developers are unlikely to commit > this > for over a week, if you're working over the holidays you'll need to > apply this manually to your llvm-gcc tree. This patch is incorrect for many FP comparisons. It looks like you've fixed almost all of them in later patches. However LTGT_EXPR should be FCMP_ONE, not FCMP_UNE, and that is still in mainline. -Chris From rspencer at reidspencer.com Thu Jan 4 11:45:11 2007 From: rspencer at reidspencer.com (Reid Spencer) Date: Thu, 04 Jan 2007 17:45:11 +0000 Subject: [llvm-commits] [llvm-gcc] SETCC Removal Patch (Please Commit) In-Reply-To: <5E08A545-8686-4AF8-A677-A676ACBD3771@apple.com> References: <1166854083.18862.18.camel@bashful.x10sys.com> <5E08A545-8686-4AF8-A677-A676ACBD3771@apple.com> Message-ID: <1167932711.22536.117.camel@bashful.x10sys.com> On Thu, 2007-01-04 at 09:37 -0800, Chris Lattner wrote: > On Dec 22, 2006, at 10:08 PM, Reid Spencer wrote: > > > All, > > > > As the SetCondInst instruction has been replaced with the new FCmpInst > > and ICmpInst instrucitons in LLVM, the attached patch compensates for > > this in llvm-gcc. Since the Apple developers are unlikely to commit > > this > > for over a week, if you're working over the holidays you'll need to > > apply this manually to your llvm-gcc tree. > > This patch is incorrect for many FP comparisons. It looks like > you've fixed almost all of them in later patches. However LTGT_EXPR > should be FCMP_ONE, not FCMP_UNE, and that is still in mainline. This is something that was changed recently because it broke something for Rafael and he indicates that gcc was doing, essentially an FCMP_UNE. I thought != was supposed to be UNE while == was supposed to be ONE. You made that comment to me in a previous review. In any event, its easy enough to fix. Reid. > > -Chris From lattner at cs.uiuc.edu Thu Jan 4 11:47:58 2007 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Thu, 4 Jan 2007 11:47:58 -0600 Subject: [llvm-commits] CVS: llvm/test/Regression/Transforms/LevelRaise/2002-02-11-ArrayShape.ll Message-ID: <200701041747.l04Hlwl3031851@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/Transforms/LevelRaise: 2002-02-11-ArrayShape.ll (r1.7) removed --- Log message: remove xfailed test that depends on obsolete argument to lli --- Diffs of the changes: (+0 -0) 0 files changed From clattner at apple.com Thu Jan 4 11:49:42 2007 From: clattner at apple.com (Chris Lattner) Date: Thu, 4 Jan 2007 09:49:42 -0800 Subject: [llvm-commits] CVS: llvm/test/Regression/Transforms/LevelRaise/2002-03-21-MissedRaise.ll In-Reply-To: <200612292002.kBTK2R7q004146@zion.cs.uiuc.edu> References: <200612292002.kBTK2R7q004146@zion.cs.uiuc.edu> Message-ID: llvm-upgrade gets a parse error on this testcase, so it's not being tested at all. This appears to be an llvm-upgrade bug: $ llvm-upgrade 2002-03-21-MissedRaise.ll llvm-upgrade: parse error 2002-03-21-MissedRaise.ll:7: while reading token: '%Hash' -Chris On Dec 29, 2006, at 12:02 PM, Reid Spencer wrote: > > > Changes in directory llvm/test/Regression/Transforms/LevelRaise: > > 2002-03-21-MissedRaise.ll updated: 1.8 -> 1.9 > --- > Log message: > > Update tests that need to be run through llvm-upgrade. This is > necessary > for upcoming changes to the llvm assembly grammar. > > > --- > Diffs of the changes: (+1 -1) > > 2002-03-21-MissedRaise.ll | 2 +- > 1 files changed, 1 insertion(+), 1 deletion(-) > > > Index: llvm/test/Regression/Transforms/LevelRaise/2002-03-21- > MissedRaise.ll > diff -u llvm/test/Regression/Transforms/LevelRaise/2002-03-21- > MissedRaise.ll:1.8 llvm/test/Regression/Transforms/LevelRaise/ > 2002-03-21-MissedRaise.ll:1.9 > --- llvm/test/Regression/Transforms/LevelRaise/2002-03-21- > MissedRaise.ll:1.8 Wed Dec 6 22:20:23 2006 > +++ llvm/test/Regression/Transforms/LevelRaise/2002-03-21- > MissedRaise.ll Fri Dec 29 14:01:32 2006 > @@ -2,7 +2,7 @@ > ; LevelRaise should eliminate all cast instructions from this > testcase. > ; > ; XFAIL: * > -; RUN: llvm-as < %s | opt -raise | llvm-dis | notcast > +; RUN: llvm-upgrade < %s | llvm-as | opt -raise | llvm-dis | notcast > > %Hash = type { { uint, sbyte *, \2 } * *, int (uint) *, int } * > %hash = type { { uint, sbyte *, \2 } * *, int (uint) *, int } > > > > _______________________________________________ > llvm-commits mailing list > llvm-commits at cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits From sabre at nondot.org Thu Jan 4 11:50:57 2007 From: sabre at nondot.org (Chris Lattner) Date: Thu, 4 Jan 2007 11:50:57 -0600 Subject: [llvm-commits] CVS: llvm/include/llvm/DerivedTypes.h Message-ID: <200701041750.l04HovM7031954@zion.cs.uiuc.edu> Changes in directory llvm/include/llvm: DerivedTypes.h updated: 1.75 -> 1.76 --- Log message: remove the 'protected' workaround now that we don't care about gcc 2.95 anymore. Reid already did this for FunctionType, this just cleans the rest up. --- Diffs of the changes: (+0 -39) DerivedTypes.h | 39 --------------------------------------- 1 files changed, 39 deletions(-) Index: llvm/include/llvm/DerivedTypes.h diff -u llvm/include/llvm/DerivedTypes.h:1.75 llvm/include/llvm/DerivedTypes.h:1.76 --- llvm/include/llvm/DerivedTypes.h:1.75 Sat Dec 30 23:22:12 2006 +++ llvm/include/llvm/DerivedTypes.h Thu Jan 4 11:50:42 2007 @@ -186,16 +186,7 @@ friend class TypeMap; StructType(const StructType &); // Do not implement const StructType &operator=(const StructType &); // Do not implement - -protected: - /// This should really be private, but it squelches a bogus warning - /// from GCC to make them protected: warning: `class StructType' only - /// defines private constructors and has no friends - /// - /// Private ctor - Only can be created by a static member... - /// StructType(const std::vector &Types, bool isPacked); - public: /// StructType::get - This static method is the primary way to create a /// StructType. @@ -282,15 +273,7 @@ ArrayType(const ArrayType &); // Do not implement const ArrayType &operator=(const ArrayType &); // Do not implement -protected: - /// This should really be private, but it squelches a bogus warning - /// from GCC to make them protected: warning: `class ArrayType' only - /// defines private constructors and has no friends - /// - /// Private ctor - Only can be created by a static member... - /// ArrayType(const Type *ElType, uint64_t NumEl); - public: /// ArrayType::get - This static method is the primary way to construct an /// ArrayType @@ -318,15 +301,7 @@ PackedType(const PackedType &); // Do not implement const PackedType &operator=(const PackedType &); // Do not implement -protected: - /// This should really be private, but it squelches a bogus warning - /// from GCC to make them protected: warning: `class PackedType' only - /// defines private constructors and has no friends - /// - /// Private ctor - Only can be created by a static member... - /// PackedType(const Type *ElType, unsigned NumEl); - public: /// PackedType::get - This static method is the primary way to construct an /// PackedType @@ -359,14 +334,7 @@ friend class TypeMap; PointerType(const PointerType &); // Do not implement const PointerType &operator=(const PointerType &); // Do not implement -protected: - // This should really be private, but it squelches a bogus warning - // from GCC to make them protected: warning: `class PointerType' only - // defines private constructors and has no friends - - // Private ctor - Only can be created by a static member... PointerType(const Type *ElType); - public: /// PointerType::get - This is the only way to construct a new pointer type. static PointerType *get(const Type *ElementType); @@ -388,14 +356,7 @@ class OpaqueType : public DerivedType { OpaqueType(const OpaqueType &); // DO NOT IMPLEMENT const OpaqueType &operator=(const OpaqueType &); // DO NOT IMPLEMENT -protected: - /// This should really be private, but it squelches a bogus warning - /// from GCC to make them protected: warning: `class OpaqueType' only - /// defines private constructors and has no friends - /// - /// Private ctor - Only can be created by a static member... OpaqueType(); - public: /// OpaqueType::get - Static factory method for the OpaqueType class... /// From clattner at apple.com Thu Jan 4 11:54:46 2007 From: clattner at apple.com (Chris Lattner) Date: Thu, 4 Jan 2007 09:54:46 -0800 Subject: [llvm-commits] CVS: llvm/test/Regression/Transforms/LevelRaise/2002-03-21-MissedRaise.ll In-Reply-To: References: <200612292002.kBTK2R7q004146@zion.cs.uiuc.edu> Message-ID: On Jan 4, 2007, at 9:49 AM, Chris Lattner wrote: > > llvm-upgrade gets a parse error on this testcase, so it's not being > tested at all. This appears to be an llvm-upgrade bug: > > $ llvm-upgrade 2002-03-21-MissedRaise.ll > llvm-upgrade: parse error > 2002-03-21-MissedRaise.ll:7: while reading token: '%Hash' This actually affects a lot of testcases in the suite, leading me to believe that the testsuite isn't actually testing many programs. Reid, can you run llvm-upgrade on all the .ll files in llvm/test and figure out which ones it barfs on? This is a serious problem. For example Regression/Transforms/ LevelRaise/2003-05-01-CallCast.ll is reported as succeeding because llvm-upgrade fails to parse the input. This means that there may be many tests failing and we don't know it because the failures are masked. Perhaps in addition to returning an error code, llvm-upgrade should emit something like "parse failed" to the output stream, so that later llvm-as's will die. -Chris From reid at x10sys.com Thu Jan 4 11:55:26 2007 From: reid at x10sys.com (Reid Spencer) Date: Thu, 4 Jan 2007 11:55:26 -0600 Subject: [llvm-commits] CVS: llvm/docs/CommandGuide/llvmc.pod Message-ID: <200701041755.l04HtQ2t032093@zion.cs.uiuc.edu> Changes in directory llvm/docs/CommandGuide: llvmc.pod updated: 1.12 -> 1.13 --- Log message: Document this tool as experimental and list its deficiencies. --- Diffs of the changes: (+28 -3) llvmc.pod | 31 ++++++++++++++++++++++++++++--- 1 files changed, 28 insertions(+), 3 deletions(-) Index: llvm/docs/CommandGuide/llvmc.pod diff -u llvm/docs/CommandGuide/llvmc.pod:1.12 llvm/docs/CommandGuide/llvmc.pod:1.13 --- llvm/docs/CommandGuide/llvmc.pod:1.12 Thu Apr 20 09:17:47 2006 +++ llvm/docs/CommandGuide/llvmc.pod Thu Jan 4 11:55:11 2007 @@ -2,7 +2,7 @@ =head1 NAME -llvmc - The LLVM Compiler Driver +llvmc - The LLVM Compiler Driver (experimental) =head1 SYNOPSIS @@ -12,8 +12,8 @@ B is a configurable driver for invoking other LLVM (and non-LLVM) tools in order to compile, optimize and link software for multiple languages. For -those familiar with FSF's B tool, it is very similar. B has the -following goals: +those familiar with FSF's B tool, it is very similar. Please note that +B is considered an experimental tool. B has the following goals: =over @@ -395,6 +395,31 @@ status, pending actions will be discarded and B will return the same result code as the failing compilation tool. +=head1 DEFICIENCIES + +B is considered an experimental LLVM tool because it has these +deficiencies: + +=over + +=item Insufficient support for native linking + +Because B doesn't handle native linking, neither can B + +=item Poor configuration support + +The support for configuring new languages, etc. is weak. There are many +command line configurations that cannot be achieved with the current +support. Furthermore the grammar is cumbersome for configuration files. +Please see L for further details. + +=item Does not handle target specific configurations + +This is one of the major deficiencies, also addressed in +L + +=back + =head1 SEE ALSO L, L, L, L, From clattner at apple.com Thu Jan 4 11:56:13 2007 From: clattner at apple.com (Chris Lattner) Date: Thu, 4 Jan 2007 09:56:13 -0800 Subject: [llvm-commits] [llvm-gcc] SETCC Removal Patch (Please Commit) In-Reply-To: <1167932711.22536.117.camel@bashful.x10sys.com> References: <1166854083.18862.18.camel@bashful.x10sys.com> <5E08A545-8686-4AF8-A677-A676ACBD3771@apple.com> <1167932711.22536.117.camel@bashful.x10sys.com> Message-ID: <8AF0BEA7-62B6-46C2-9E6E-B7FCA3C40B6E@apple.com> On Jan 4, 2007, at 9:45 AM, Reid Spencer wrote: > On Thu, 2007-01-04 at 09:37 -0800, Chris Lattner wrote: >> On Dec 22, 2006, at 10:08 PM, Reid Spencer wrote: >> >>> All, >>> >>> As the SetCondInst instruction has been replaced with the new >>> FCmpInst >>> and ICmpInst instrucitons in LLVM, the attached patch compensates >>> for >>> this in llvm-gcc. Since the Apple developers are unlikely to commit >>> this >>> for over a week, if you're working over the holidays you'll need to >>> apply this manually to your llvm-gcc tree. >> >> This patch is incorrect for many FP comparisons. It looks like >> you've fixed almost all of them in later patches. However LTGT_EXPR >> should be FCMP_ONE, not FCMP_UNE, and that is still in mainline. > > This is something that was changed recently because it broke something > for Rafael and he indicates that gcc was doing, essentially an > FCMP_UNE. > I thought != was supposed to be UNE while == was supposed to be > ONE. You > made that comment to me in a previous review. != and == are currently right (UNE and OEQ). It's islessgreater (LTGT_EXPR) that is wrong. -Chris From rspencer at reidspencer.com Thu Jan 4 12:04:24 2007 From: rspencer at reidspencer.com (Reid Spencer) Date: Thu, 04 Jan 2007 10:04:24 -0800 Subject: [llvm-commits] [llvm-gcc] SETCC Removal Patch (Please Commit) In-Reply-To: <8AF0BEA7-62B6-46C2-9E6E-B7FCA3C40B6E@apple.com> References: <1166854083.18862.18.camel@bashful.x10sys.com> <5E08A545-8686-4AF8-A677-A676ACBD3771@apple.com> <1167932711.22536.117.camel@bashful.x10sys.com> <8AF0BEA7-62B6-46C2-9E6E-B7FCA3C40B6E@apple.com> Message-ID: <1167933864.22536.120.camel@bashful.x10sys.com> On Thu, 2007-01-04 at 09:56 -0800, Chris Lattner wrote: > On Jan 4, 2007, at 9:45 AM, Reid Spencer wrote: > > != and == are currently right (UNE and OEQ). It's islessgreater > (LTGT_EXPR) that is wrong. Okay, can you just fix it then? I don't have a head version of your repository from which to make a patch for it and its probably a one line change. > > -Chris From clattner at apple.com Thu Jan 4 12:09:07 2007 From: clattner at apple.com (Chris Lattner) Date: Thu, 4 Jan 2007 10:09:07 -0800 Subject: [llvm-commits] CVS: llvm/test/Regression/Transforms/SimplifyCFG/2006-12-08-Ptr-ICmp-Branch.ll In-Reply-To: <200612292002.kBTK2QZQ004111@zion.cs.uiuc.edu> References: <200612292002.kBTK2QZQ004111@zion.cs.uiuc.edu> Message-ID: <3D812E80-D1A8-4D2C-AC1B-36653539D572@apple.com> This is another testcase which isn't being tested because llvm- upgrade apparently doesn't support "target". -Chris On Dec 29, 2006, at 12:02 PM, Reid Spencer wrote: > > > Changes in directory llvm/test/Regression/Transforms/SimplifyCFG: > > 2006-12-08-Ptr-ICmp-Branch.ll updated: 1.1 -> 1.2 > --- > Log message: > > Update tests that need to be run through llvm-upgrade. This is > necessary > for upcoming changes to the llvm assembly grammar. > > > --- > Diffs of the changes: (+1 -1) > > 2006-12-08-Ptr-ICmp-Branch.ll | 2 +- > 1 files changed, 1 insertion(+), 1 deletion(-) > > > Index: llvm/test/Regression/Transforms/SimplifyCFG/2006-12-08-Ptr- > ICmp-Branch.ll > diff -u llvm/test/Regression/Transforms/SimplifyCFG/2006-12-08-Ptr- > ICmp-Branch.ll:1.1 llvm/test/Regression/Transforms/SimplifyCFG/ > 2006-12-08-Ptr-ICmp-Branch.ll:1.2 > --- llvm/test/Regression/Transforms/SimplifyCFG/2006-12-08-Ptr-ICmp- > Branch.ll:1.1 Sat Dec 23 00:05:41 2006 > +++ llvm/test/Regression/Transforms/SimplifyCFG/2006-12-08-Ptr-ICmp- > Branch.ll Fri Dec 29 14:01:32 2006 > @@ -1,4 +1,4 @@ > -; RUN: llvm-as < %s | opt -simplifycfg | llvm-dis > +; RUN: llvm-upgrade < %s | llvm-as | opt -simplifycfg | llvm-dis > ; ModuleID = 'bugpoint-tooptimize.bc' > target datalayout = "e-p:32:32" > target endian = little > > > > _______________________________________________ > llvm-commits mailing list > llvm-commits at cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits From rspencer at reidspencer.com Thu Jan 4 12:09:07 2007 From: rspencer at reidspencer.com (Reid Spencer) Date: Thu, 04 Jan 2007 18:09:07 +0000 Subject: [llvm-commits] CVS: llvm/test/Regression/Transforms/LevelRaise/2002-03-21-MissedRaise.ll In-Reply-To: References: <200612292002.kBTK2R7q004146@zion.cs.uiuc.edu> Message-ID: <1167934147.22536.124.camel@bashful.x10sys.com> Chris, Here is what llvm-upgrade produces for this test case: %Hash = type { { uint, sbyte*, \2 }**, int( uint )*, int }* %hash = type { { uint, sbyte*, \2 }**, int( uint )*, int } %hash_el = type { uint, sbyte*, \2 }* implementation define %Hash "MakeHash"(int %size, int( uint )* %map) { %reg112 = malloc sbyte, uint 24 %reg115 = malloc sbyte, uint 96 %cast237 = bitcast sbyte* %reg112 to sbyte** store sbyte* %reg115, sbyte** %cast237 %cast246 = bitcast sbyte* %reg112 to %Hash ret %Hash %cast246 } It does not fail. Are you sure you're working with TOT? There have been changes made as late as yesterday that are needed in order for it to work correctly. Reid. On Thu, 2007-01-04 at 09:54 -0800, Chris Lattner wrote: > On Jan 4, 2007, at 9:49 AM, Chris Lattner wrote: > > > > > llvm-upgrade gets a parse error on this testcase, so it's not being > > tested at all. This appears to be an llvm-upgrade bug: > > > > $ llvm-upgrade 2002-03-21-MissedRaise.ll > > llvm-upgrade: parse error > > 2002-03-21-MissedRaise.ll:7: while reading token: '%Hash' > > This actually affects a lot of testcases in the suite, leading me to > believe that the testsuite isn't actually testing many programs. > Reid, can you run llvm-upgrade on all the .ll files in llvm/test and > figure out which ones it barfs on? > > This is a serious problem. For example Regression/Transforms/ > LevelRaise/2003-05-01-CallCast.ll is reported as succeeding because > llvm-upgrade fails to parse the input. This means that there may be > many tests failing and we don't know it because the failures are masked. > > Perhaps in addition to returning an error code, llvm-upgrade should > emit something like "parse failed" to the output stream, so that > later llvm-as's will die. > > -Chris > _______________________________________________ > llvm-commits mailing list > llvm-commits at cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits From clattner at apple.com Thu Jan 4 12:13:55 2007 From: clattner at apple.com (Chris Lattner) Date: Thu, 4 Jan 2007 10:13:55 -0800 Subject: [llvm-commits] CVS: llvm/test/Regression/Transforms/LevelRaise/2002-03-21-MissedRaise.ll In-Reply-To: References: <200612292002.kBTK2R7q004146@zion.cs.uiuc.edu> Message-ID: On Jan 4, 2007, at 9:54 AM, Chris Lattner wrote: > > On Jan 4, 2007, at 9:49 AM, Chris Lattner wrote: > >> >> llvm-upgrade gets a parse error on this testcase, so it's not being >> tested at all. This appears to be an llvm-upgrade bug: >> >> $ llvm-upgrade 2002-03-21-MissedRaise.ll >> llvm-upgrade: parse error >> 2002-03-21-MissedRaise.ll:7: while reading token: '%Hash' > > This actually affects a lot of testcases in the suite, leading me to > believe that the testsuite isn't actually testing many programs. > Reid, can you run llvm-upgrade on all the .ll files in llvm/test and > figure out which ones it barfs on? > > This is a serious problem. For example Regression/Transforms/ > LevelRaise/2003-05-01-CallCast.ll is reported as succeeding because > llvm-upgrade fails to parse the input. This means that there may be > many tests failing and we don't know it because the failures are > masked. > > Perhaps in addition to returning an error code, llvm-upgrade should > emit something like "parse failed" to the output stream, so that > later llvm-as's will die. Actually, it looks like there was something seriously broken locally in my tree. Cleaning llvm-upgrade and rebuilding it seems to have cleared up many of the issues, but I still have some failures, e.g. in Transforms/SimplifyCFG/2006-12-08-Ptr-ICmp-Branch.ll: $ ../../../TestRunner.sh 2006-12-08-Ptr-ICmp-Branch.ll ******************** TEST '2006-12-08-Ptr-ICmp-Branch.ll' FAILED! ******************** Command: llvm-upgrade < 2006-12-08-Ptr-ICmp-Branch.ll | llvm-as | opt - simplifycfg | llvm-dis Output: llvm-as: :54,0: Reference to an invalid definition: 'tmp.s' of type 'i32' opt: Standard Input is empty! llvm-dis: Standard Input is empty! Sorry for the confusion. -Chris From clattner at apple.com Thu Jan 4 12:19:11 2007 From: clattner at apple.com (Chris Lattner) Date: Thu, 4 Jan 2007 10:19:11 -0800 Subject: [llvm-commits] CVS: llvm/test/Regression/Transforms/LevelRaise/2002-03-21-MissedRaise.ll In-Reply-To: References: <200612292002.kBTK2R7q004146@zion.cs.uiuc.edu> Message-ID: <5124ABC9-1911-4976-9254-902CFF1990A3@apple.com> >> Perhaps in addition to returning an error code, llvm-upgrade should >> emit something like "parse failed" to the output stream, so that >> later llvm-as's will die. > > Actually, it looks like there was something seriously broken locally > in my tree. Cleaning llvm-upgrade and rebuilding it seems to have > cleared up many of the issues, but I still have some failures, e.g. > in Transforms/SimplifyCFG/2006-12-08-Ptr-ICmp-Branch.ll: > > $ ../../../TestRunner.sh 2006-12-08-Ptr-ICmp-Branch.ll Ah, you're way ahead of me. Updating fixed it, thanks Reid! -Chris From rspencer at reidspencer.com Thu Jan 4 12:42:30 2007 From: rspencer at reidspencer.com (Reid Spencer) Date: Thu, 04 Jan 2007 18:42:30 +0000 Subject: [llvm-commits] CVS: llvm/test/Regression/Transforms/LevelRaise/2002-03-21-MissedRaise.ll In-Reply-To: References: <200612292002.kBTK2R7q004146@zion.cs.uiuc.edu> Message-ID: <1167936150.22536.127.camel@bashful.x10sys.com> On Thu, 2007-01-04 at 09:54 -0800, Chris Lattner wrote: > Perhaps in addition to returning an error code, llvm-upgrade should > emit something like "parse failed" to the output stream, so that > later llvm-as's will die. How about we make llvm-as produce at least a warning and a non-zero result code when the input is empty. That way we don't mask the error and it isn't masked even if the source doesn't come from llvm-upgrade? > > -Chris From clattner at apple.com Thu Jan 4 12:42:23 2007 From: clattner at apple.com (Chris Lattner) Date: Thu, 4 Jan 2007 10:42:23 -0800 Subject: [llvm-commits] [llvm-gcc] SETCC Removal Patch (Please Commit) In-Reply-To: <1167933864.22536.120.camel@bashful.x10sys.com> References: <1166854083.18862.18.camel@bashful.x10sys.com> <5E08A545-8686-4AF8-A677-A676ACBD3771@apple.com> <1167932711.22536.117.camel@bashful.x10sys.com> <8AF0BEA7-62B6-46C2-9E6E-B7FCA3C40B6E@apple.com> <1167933864.22536.120.camel@bashful.x10sys.com> Message-ID: <2C76DB31-D6BB-4906-B2D0-E1340FDDB840@apple.com> On Jan 4, 2007, at 10:04 AM, Reid Spencer wrote: > On Thu, 2007-01-04 at 09:56 -0800, Chris Lattner wrote: >> On Jan 4, 2007, at 9:45 AM, Reid Spencer wrote: > >> >> != and == are currently right (UNE and OEQ). It's islessgreater >> (LTGT_EXPR) that is wrong. > > Okay, can you just fix it then? I don't have a head version of your > repository from which to make a patch for it and its probably a one > line > change. Good point, will do. -Chris From sabre at nondot.org Thu Jan 4 12:46:06 2007 From: sabre at nondot.org (Chris Lattner) Date: Thu, 4 Jan 2007 12:46:06 -0600 Subject: [llvm-commits] CVS: llvm/tools/llvm-upgrade/UpgradeParser.y Message-ID: <200701041846.l04Ik6tW000610@zion.cs.uiuc.edu> Changes in directory llvm/tools/llvm-upgrade: UpgradeParser.y updated: 1.31 -> 1.32 --- Log message: If we hit a parse error, emit something bad to the output stream. This ensures that llvm-upgrade < foo | llvm-as | llvm-dis will fail if llvm-upgrade fails. --- Diffs of the changes: (+2 -0) UpgradeParser.y | 2 ++ 1 files changed, 2 insertions(+) Index: llvm/tools/llvm-upgrade/UpgradeParser.y diff -u llvm/tools/llvm-upgrade/UpgradeParser.y:1.31 llvm/tools/llvm-upgrade/UpgradeParser.y:1.32 --- llvm/tools/llvm-upgrade/UpgradeParser.y:1.31 Wed Jan 3 17:43:55 2007 +++ llvm/tools/llvm-upgrade/UpgradeParser.y Thu Jan 4 12:45:51 2007 @@ -72,6 +72,7 @@ if (yyparse()) { std::cerr << "Parse failed.\n"; + out << "llvm-upgrade parse failed.\n"; exit(1); } } @@ -1597,5 +1598,6 @@ else errMsg += "token: '" + std::string(Upgradetext, Upgradeleng) + "'"; std::cerr << "llvm-upgrade: " << errMsg << '\n'; + *O << "llvm-upgrade parse failed.\n"; exit(1); } From sabre at nondot.org Thu Jan 4 12:46:57 2007 From: sabre at nondot.org (Chris Lattner) Date: Thu, 4 Jan 2007 12:46:57 -0600 Subject: [llvm-commits] CVS: llvm/tools/llvm-upgrade/UpgradeLexer.cpp UpgradeParser.cpp UpgradeParser.cpp.cvs UpgradeParser.h UpgradeParser.h.cvs UpgradeParser.y.cvs Message-ID: <200701041846.l04IkvSH000684@zion.cs.uiuc.edu> Changes in directory llvm/tools/llvm-upgrade: UpgradeLexer.cpp updated: 1.14 -> 1.15 UpgradeParser.cpp updated: 1.33 -> 1.34 UpgradeParser.cpp.cvs updated: 1.31 -> 1.32 UpgradeParser.h updated: 1.25 -> 1.26 UpgradeParser.h.cvs updated: 1.23 -> 1.24 UpgradeParser.y.cvs updated: 1.30 -> 1.31 --- Log message: regenerate --- Diffs of the changes: (+6049 -8156) UpgradeLexer.cpp | 359 +- UpgradeParser.cpp | 6426 +++++++++++++++++++++----------------------------- UpgradeParser.cpp.cvs | 6426 +++++++++++++++++++++----------------------------- UpgradeParser.h | 496 +-- UpgradeParser.h.cvs | 496 +-- UpgradeParser.y.cvs | 2 6 files changed, 6049 insertions(+), 8156 deletions(-) Index: llvm/tools/llvm-upgrade/UpgradeLexer.cpp diff -u llvm/tools/llvm-upgrade/UpgradeLexer.cpp:1.14 llvm/tools/llvm-upgrade/UpgradeLexer.cpp:1.15 --- llvm/tools/llvm-upgrade/UpgradeLexer.cpp:1.14 Wed Jan 3 17:45:42 2007 +++ llvm/tools/llvm-upgrade/UpgradeLexer.cpp Thu Jan 4 12:46:42 2007 @@ -17,10 +17,10 @@ #define yylineno Upgradelineno #line 20 "UpgradeLexer.cpp" -/* A lexical scanner generated by flex*/ +/* A lexical scanner generated by flex */ /* Scanner skeleton version: - * $Header: /var/cvs/llvm/llvm/tools/llvm-upgrade/UpgradeLexer.cpp,v 1.14 2007/01/03 23:45:42 reid Exp $ + * $Header: /var/cvs/llvm/llvm/tools/llvm-upgrade/UpgradeLexer.cpp,v 1.15 2007/01/04 18:46:42 lattner Exp $ */ #define FLEX_SCANNER @@ -28,7 +28,6 @@ #define YY_FLEX_MINOR_VERSION 5 #include -#include /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */ @@ -42,6 +41,7 @@ #ifdef __cplusplus #include +#include /* Use prototypes in function declarations. */ #define YY_USE_PROTOS @@ -153,15 +153,6 @@ #define unput(c) yyunput( c, yytext_ptr ) -/* Some routines like yy_flex_realloc() are emitted as static but are - not called by all lexers. This generates warnings in some compilers, - notably GCC. Arrange to suppress these. */ -#ifdef __GNUC__ -#define YY_MAY_BE_UNUSED __attribute__((unused)) -#else -#define YY_MAY_BE_UNUSED -#endif - /* The following is because we cannot portably get our hands on size_t * (without autoconf's help, which isn't available because we want * flex-generated scanners to compile on their own). @@ -268,7 +259,7 @@ YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len )); static void *yy_flex_alloc YY_PROTO(( yy_size_t )); -static inline void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )) YY_MAY_BE_UNUSED; +static inline void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )); static void yy_flex_free YY_PROTO(( void * )); #define yy_new_buffer yy_create_buffer @@ -923,7 +914,7 @@ #define YY_MORE_ADJ 0 #define YY_RESTORE_YY_MORE_OFFSET char *yytext; -#line 1 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 1 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" #define INITIAL 0 /*===-- UpgradeLexer.l - Scanner for 1.9 assembly files --------*- C++ -*--===// // @@ -938,7 +929,7 @@ // //===----------------------------------------------------------------------===*/ #define YY_NEVER_INTERACTIVE 1 -#line 28 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 28 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" #include "ParserInternals.h" #include "UpgradeParser.h" @@ -982,7 +973,7 @@ /* HexIntConstant - Hexadecimal constant generated by the CFE to avoid forcing * it to deal with 64 bit numbers. */ -#line 986 "UpgradeLexer.cpp" +#line 977 "UpgradeLexer.cpp" /* Macros after this point can all be overridden by user definitions in * section 1. @@ -1130,13 +1121,13 @@ YY_DECL { register yy_state_type yy_current_state; - register char *yy_cp = NULL, *yy_bp = NULL; + register char *yy_cp, *yy_bp; register int yy_act; -#line 97 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 97 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" -#line 1140 "UpgradeLexer.cpp" +#line 1131 "UpgradeLexer.cpp" if ( yy_init ) { @@ -1196,7 +1187,7 @@ yy_find_action: yy_current_state = *--yy_state_ptr; yy_lp = yy_accept[yy_current_state]; - +find_rule: /* we branch to this label when backing up */ for ( ; ; ) /* until we find what rule we matched */ { if ( yy_lp && yy_lp < yy_accept[yy_current_state + 1] ) @@ -1229,776 +1220,776 @@ { /* beginning of action switch */ case 1: YY_RULE_SETUP -#line 99 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 99 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { /* Ignore comments for now */ } YY_BREAK case 2: YY_RULE_SETUP -#line 101 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 101 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( BEGINTOK); } YY_BREAK case 3: YY_RULE_SETUP -#line 102 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 102 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( ENDTOK); } YY_BREAK case 4: YY_RULE_SETUP -#line 103 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 103 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( TRUETOK); } YY_BREAK case 5: YY_RULE_SETUP -#line 104 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 104 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( FALSETOK); } YY_BREAK case 6: YY_RULE_SETUP -#line 105 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 105 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( DECLARE); } YY_BREAK case 7: YY_RULE_SETUP -#line 106 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 106 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( GLOBAL); } YY_BREAK case 8: YY_RULE_SETUP -#line 107 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 107 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( CONSTANT); } YY_BREAK case 9: YY_RULE_SETUP -#line 108 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 108 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( INTERNAL); } YY_BREAK case 10: YY_RULE_SETUP -#line 109 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 109 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( LINKONCE); } YY_BREAK case 11: YY_RULE_SETUP -#line 110 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 110 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( WEAK); } YY_BREAK case 12: YY_RULE_SETUP -#line 111 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 111 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( APPENDING); } YY_BREAK case 13: YY_RULE_SETUP -#line 112 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 112 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( DLLIMPORT); } YY_BREAK case 14: YY_RULE_SETUP -#line 113 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 113 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( DLLEXPORT); } YY_BREAK case 15: YY_RULE_SETUP -#line 114 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 114 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( EXTERN_WEAK); } YY_BREAK case 16: YY_RULE_SETUP -#line 115 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 115 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( EXTERNAL); } YY_BREAK case 17: YY_RULE_SETUP -#line 116 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 116 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( UNINITIALIZED); } // alias for external YY_BREAK case 18: YY_RULE_SETUP -#line 117 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 117 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( IMPLEMENTATION); } YY_BREAK case 19: YY_RULE_SETUP -#line 118 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 118 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( ZEROINITIALIZER); } YY_BREAK case 20: YY_RULE_SETUP -#line 119 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 119 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( DOTDOTDOT); } YY_BREAK case 21: YY_RULE_SETUP -#line 120 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 120 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( UNDEF); } YY_BREAK case 22: YY_RULE_SETUP -#line 121 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 121 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( NULL_TOK); } YY_BREAK case 23: YY_RULE_SETUP -#line 122 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 122 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( TO); } YY_BREAK case 24: YY_RULE_SETUP -#line 123 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 123 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( TAIL); } YY_BREAK case 25: YY_RULE_SETUP -#line 124 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 124 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( TARGET); } YY_BREAK case 26: YY_RULE_SETUP -#line 125 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 125 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( TRIPLE); } YY_BREAK case 27: YY_RULE_SETUP -#line 126 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 126 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( DEPLIBS); } YY_BREAK case 28: YY_RULE_SETUP -#line 127 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 127 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( ENDIAN); } YY_BREAK case 29: YY_RULE_SETUP -#line 128 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 128 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( POINTERSIZE); } YY_BREAK case 30: YY_RULE_SETUP -#line 129 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 129 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( DATALAYOUT); } YY_BREAK case 31: YY_RULE_SETUP -#line 130 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 130 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( LITTLE); } YY_BREAK case 32: YY_RULE_SETUP -#line 131 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 131 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( BIG); } YY_BREAK case 33: YY_RULE_SETUP -#line 132 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 132 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( VOLATILE); } YY_BREAK case 34: YY_RULE_SETUP -#line 133 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 133 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( ALIGN); } YY_BREAK case 35: YY_RULE_SETUP -#line 134 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 134 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SECTION); } YY_BREAK case 36: YY_RULE_SETUP -#line 135 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 135 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( MODULE); } YY_BREAK case 37: YY_RULE_SETUP -#line 136 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 136 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( ASM_TOK); } YY_BREAK case 38: YY_RULE_SETUP -#line 137 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 137 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SIDEEFFECT); } YY_BREAK case 39: YY_RULE_SETUP -#line 139 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 139 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( CC_TOK); } YY_BREAK case 40: YY_RULE_SETUP -#line 140 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 140 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( CCC_TOK); } YY_BREAK case 41: YY_RULE_SETUP -#line 141 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 141 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( CSRETCC_TOK); } YY_BREAK case 42: YY_RULE_SETUP -#line 142 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 142 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( FASTCC_TOK); } YY_BREAK case 43: YY_RULE_SETUP -#line 143 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 143 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( COLDCC_TOK); } YY_BREAK case 44: YY_RULE_SETUP -#line 144 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 144 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( X86_STDCALLCC_TOK); } YY_BREAK case 45: YY_RULE_SETUP -#line 145 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 145 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( X86_FASTCALLCC_TOK); } YY_BREAK case 46: YY_RULE_SETUP -#line 147 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 147 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(VOID,VoidTy,"void",false); } YY_BREAK case 47: YY_RULE_SETUP -#line 148 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 148 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(BOOL,BoolTy,"bool",false); } YY_BREAK case 48: YY_RULE_SETUP -#line 149 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 149 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(SBYTE,SByteTy,"i8",true); } YY_BREAK case 49: YY_RULE_SETUP -#line 150 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 150 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(UBYTE,UByteTy,"i8",false); } YY_BREAK case 50: YY_RULE_SETUP -#line 151 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 151 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(SHORT,ShortTy,"i16",true); } YY_BREAK case 51: YY_RULE_SETUP -#line 152 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 152 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(USHORT,UShortTy,"i16",false); } YY_BREAK case 52: YY_RULE_SETUP -#line 153 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 153 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(INT,IntTy,"i32",true); } YY_BREAK case 53: YY_RULE_SETUP -#line 154 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 154 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(UINT,UIntTy,"i32",false); } YY_BREAK case 54: YY_RULE_SETUP -#line 155 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 155 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(LONG,LongTy,"i64",true); } YY_BREAK case 55: YY_RULE_SETUP -#line 156 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 156 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(ULONG,ULongTy,"i64",false); } YY_BREAK case 56: YY_RULE_SETUP -#line 157 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 157 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(UBYTE,UByteTy,"i8",false); } YY_BREAK case 57: YY_RULE_SETUP -#line 158 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 158 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(USHORT,UShortTy,"i16",false); } YY_BREAK case 58: YY_RULE_SETUP -#line 159 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 159 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(UINT,UIntTy,"i32",false); } YY_BREAK case 59: YY_RULE_SETUP -#line 160 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 160 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(ULONG,ULongTy,"i64",false); } YY_BREAK case 60: YY_RULE_SETUP -#line 161 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 161 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(FLOAT,FloatTy,"float",false); } YY_BREAK case 61: YY_RULE_SETUP -#line 162 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 162 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(DOUBLE,DoubleTy,"double",false); } YY_BREAK case 62: YY_RULE_SETUP -#line 163 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 163 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(LABEL,LabelTy,"label",false); } YY_BREAK case 63: YY_RULE_SETUP -#line 164 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 164 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(OPAQUE); } YY_BREAK case 64: YY_RULE_SETUP -#line 165 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 165 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(TYPE); } YY_BREAK case 65: YY_RULE_SETUP -#line 167 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 167 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( ADD); } YY_BREAK case 66: YY_RULE_SETUP -#line 168 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 168 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SUB); } YY_BREAK case 67: YY_RULE_SETUP -#line 169 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 169 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( MUL); } YY_BREAK case 68: YY_RULE_SETUP -#line 170 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 170 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( DIV); } YY_BREAK case 69: YY_RULE_SETUP -#line 171 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 171 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( UDIV); } YY_BREAK case 70: YY_RULE_SETUP -#line 172 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 172 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SDIV); } YY_BREAK case 71: YY_RULE_SETUP -#line 173 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 173 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( FDIV); } YY_BREAK case 72: YY_RULE_SETUP -#line 174 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 174 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( REM); } YY_BREAK case 73: YY_RULE_SETUP -#line 175 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 175 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( UREM); } YY_BREAK case 74: YY_RULE_SETUP -#line 176 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 176 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SREM); } YY_BREAK case 75: YY_RULE_SETUP -#line 177 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 177 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( FREM); } YY_BREAK case 76: YY_RULE_SETUP -#line 178 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 178 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( AND); } YY_BREAK case 77: YY_RULE_SETUP -#line 179 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 179 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( OR); } YY_BREAK case 78: YY_RULE_SETUP -#line 180 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 180 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( XOR); } YY_BREAK case 79: YY_RULE_SETUP -#line 181 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 181 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SETNE); } YY_BREAK case 80: YY_RULE_SETUP -#line 182 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 182 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SETEQ); } YY_BREAK case 81: YY_RULE_SETUP -#line 183 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 183 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SETLT); } YY_BREAK case 82: YY_RULE_SETUP -#line 184 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 184 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SETGT); } YY_BREAK case 83: YY_RULE_SETUP -#line 185 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 185 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SETLE); } YY_BREAK case 84: YY_RULE_SETUP -#line 186 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 186 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SETGE); } YY_BREAK case 85: YY_RULE_SETUP -#line 187 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 187 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(ICMP); } YY_BREAK case 86: YY_RULE_SETUP -#line 188 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 188 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(FCMP); } YY_BREAK case 87: YY_RULE_SETUP -#line 189 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 189 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(EQ); } YY_BREAK case 88: YY_RULE_SETUP -#line 190 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 190 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(NE); } YY_BREAK case 89: YY_RULE_SETUP -#line 191 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 191 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(SLT); } YY_BREAK case 90: YY_RULE_SETUP -#line 192 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 192 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(SGT); } YY_BREAK case 91: YY_RULE_SETUP -#line 193 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 193 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(SLE); } YY_BREAK case 92: YY_RULE_SETUP -#line 194 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 194 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(SGE); } YY_BREAK case 93: YY_RULE_SETUP -#line 195 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 195 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(OEQ); } YY_BREAK case 94: YY_RULE_SETUP -#line 196 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 196 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(ONE); } YY_BREAK case 95: YY_RULE_SETUP -#line 197 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 197 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(OLT); } YY_BREAK case 96: YY_RULE_SETUP -#line 198 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 198 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(OGT); } YY_BREAK case 97: YY_RULE_SETUP -#line 199 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 199 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(OLE); } YY_BREAK case 98: YY_RULE_SETUP -#line 200 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 200 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(OGE); } YY_BREAK case 99: YY_RULE_SETUP -#line 201 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 201 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(ORD); } YY_BREAK case 100: YY_RULE_SETUP -#line 202 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 202 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(UNO); } YY_BREAK case 101: YY_RULE_SETUP -#line 203 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 203 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(UEQ); } YY_BREAK case 102: YY_RULE_SETUP -#line 204 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 204 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(UNE); } YY_BREAK case 103: YY_RULE_SETUP -#line 205 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 205 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(ULT); } YY_BREAK case 104: YY_RULE_SETUP -#line 206 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 206 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(UGT); } YY_BREAK case 105: YY_RULE_SETUP -#line 207 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 207 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(ULE); } YY_BREAK case 106: YY_RULE_SETUP -#line 208 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 208 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(UGE); } YY_BREAK case 107: YY_RULE_SETUP -#line 210 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 210 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( PHI_TOK); } YY_BREAK case 108: YY_RULE_SETUP -#line 211 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 211 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( CALL); } YY_BREAK case 109: YY_RULE_SETUP -#line 212 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 212 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( CAST); } YY_BREAK case 110: YY_RULE_SETUP -#line 213 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 213 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( TRUNC); } YY_BREAK case 111: YY_RULE_SETUP -#line 214 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 214 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( ZEXT); } YY_BREAK case 112: YY_RULE_SETUP -#line 215 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 215 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SEXT); } YY_BREAK case 113: YY_RULE_SETUP -#line 216 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 216 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( FPTRUNC); } YY_BREAK case 114: YY_RULE_SETUP -#line 217 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 217 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( FPEXT); } YY_BREAK case 115: YY_RULE_SETUP -#line 218 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 218 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( FPTOUI); } YY_BREAK case 116: YY_RULE_SETUP -#line 219 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 219 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( FPTOSI); } YY_BREAK case 117: YY_RULE_SETUP -#line 220 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 220 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( UITOFP); } YY_BREAK case 118: YY_RULE_SETUP -#line 221 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 221 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SITOFP); } YY_BREAK case 119: YY_RULE_SETUP -#line 222 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 222 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( PTRTOINT); } YY_BREAK case 120: YY_RULE_SETUP -#line 223 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 223 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( INTTOPTR); } YY_BREAK case 121: YY_RULE_SETUP -#line 224 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 224 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( BITCAST); } YY_BREAK case 122: YY_RULE_SETUP -#line 225 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 225 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SELECT); } YY_BREAK case 123: YY_RULE_SETUP -#line 226 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 226 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SHL); } YY_BREAK case 124: YY_RULE_SETUP -#line 227 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 227 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SHR); } YY_BREAK case 125: YY_RULE_SETUP -#line 228 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 228 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( ASHR); } YY_BREAK case 126: YY_RULE_SETUP -#line 229 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 229 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( LSHR); } YY_BREAK case 127: YY_RULE_SETUP -#line 230 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 230 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( VAARG); } YY_BREAK case 128: YY_RULE_SETUP -#line 231 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 231 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( RET); } YY_BREAK case 129: YY_RULE_SETUP -#line 232 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 232 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( BR); } YY_BREAK case 130: YY_RULE_SETUP -#line 233 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 233 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SWITCH); } YY_BREAK case 131: YY_RULE_SETUP -#line 234 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 234 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( INVOKE); } YY_BREAK case 132: YY_RULE_SETUP -#line 235 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 235 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( UNWIND); } YY_BREAK case 133: YY_RULE_SETUP -#line 236 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 236 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( EXCEPT); } // alias for unwind YY_BREAK case 134: YY_RULE_SETUP -#line 237 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 237 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( UNREACHABLE); } YY_BREAK case 135: YY_RULE_SETUP -#line 239 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 239 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( MALLOC); } YY_BREAK case 136: YY_RULE_SETUP -#line 240 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 240 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( ALLOCA); } YY_BREAK case 137: YY_RULE_SETUP -#line 241 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 241 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( FREE); } YY_BREAK case 138: YY_RULE_SETUP -#line 242 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 242 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( LOAD); } YY_BREAK case 139: YY_RULE_SETUP -#line 243 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 243 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( STORE); } YY_BREAK case 140: YY_RULE_SETUP -#line 244 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 244 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( GETELEMENTPTR); } YY_BREAK case 141: YY_RULE_SETUP -#line 246 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 246 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( EXTRACTELEMENT); } YY_BREAK case 142: YY_RULE_SETUP -#line 247 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 247 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( INSERTELEMENT); } YY_BREAK case 143: YY_RULE_SETUP -#line 248 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 248 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SHUFFLEVECTOR); } YY_BREAK case 144: YY_RULE_SETUP -#line 251 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 251 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( VAR_ID); } YY_BREAK case 145: YY_RULE_SETUP -#line 252 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 252 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( LABELSTR); } YY_BREAK case 146: YY_RULE_SETUP -#line 253 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 253 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( LABELSTR); } YY_BREAK case 147: YY_RULE_SETUP -#line 254 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 254 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( STRINGCONSTANT ); } YY_BREAK case 148: YY_RULE_SETUP -#line 255 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 255 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( EUINT64VAL ); } YY_BREAK case 149: YY_RULE_SETUP -#line 256 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 256 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( ESINT64VAL ); } YY_BREAK case 150: YY_RULE_SETUP -#line 257 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 257 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( yytext[0] == 's' ? ESINT64VAL : EUINT64VAL ); } YY_BREAK case 151: YY_RULE_SETUP -#line 258 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 258 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( UINTVAL); } YY_BREAK case 152: YY_RULE_SETUP -#line 259 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 259 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( SINTVAL); } YY_BREAK case 153: YY_RULE_SETUP -#line 260 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 260 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( FPVAL); } YY_BREAK case 154: YY_RULE_SETUP -#line 261 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 261 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK( FPVAL); } YY_BREAK case YY_STATE_EOF(INITIAL): -#line 262 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 262 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { /* Make sure to free the internal buffers for flex when we are * done reading our input! @@ -2009,20 +2000,20 @@ YY_BREAK case 155: YY_RULE_SETUP -#line 270 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 270 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { /* Ignore whitespace */ } YY_BREAK case 156: YY_RULE_SETUP -#line 271 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 271 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" { return yytext[0]; } YY_BREAK case 157: YY_RULE_SETUP -#line 273 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 273 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" YY_FATAL_ERROR( "flex scanner jammed" ); YY_BREAK -#line 2026 "UpgradeLexer.cpp" +#line 2017 "UpgradeLexer.cpp" case YY_END_OF_BUFFER: { @@ -2398,7 +2389,6 @@ #endif /* ifndef YY_NO_UNPUT */ -#ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput() #else @@ -2472,7 +2462,7 @@ return c; } -#endif /* YY_NO_INPUT */ + #ifdef YY_USE_PROTOS void yyrestart( FILE *input_file ) @@ -2583,6 +2573,11 @@ } +#ifndef YY_ALWAYS_INTERACTIVE +#ifndef YY_NEVER_INTERACTIVE +extern int isatty YY_PROTO(( int )); +#endif +#endif #ifdef YY_USE_PROTOS void yy_init_buffer( YY_BUFFER_STATE b, FILE *file ) @@ -2900,5 +2895,5 @@ return 0; } #endif -#line 273 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeLexer.l" +#line 273 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeLexer.l" Index: llvm/tools/llvm-upgrade/UpgradeParser.cpp diff -u llvm/tools/llvm-upgrade/UpgradeParser.cpp:1.33 llvm/tools/llvm-upgrade/UpgradeParser.cpp:1.34 --- llvm/tools/llvm-upgrade/UpgradeParser.cpp:1.33 Wed Jan 3 17:45:42 2007 +++ llvm/tools/llvm-upgrade/UpgradeParser.cpp Thu Jan 4 12:46:42 2007 @@ -1,374 +1,166 @@ -/* A Bison parser, made by GNU Bison 2.1. */ -/* Skeleton parser for Yacc-like parsing with Bison, - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. +/* A Bison parser, made from /Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y + by GNU Bison version 1.28 */ - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. */ - -/* As a special exception, when this file is copied by Bison into a - Bison output file, you may use that output file without restriction. - This special exception was added by the Free Software Foundation - in version 1.24 of Bison. */ - -/* Written by Richard Stallman by simplifying the original so called - ``semantic'' parser. */ - -/* All symbols defined below should begin with yy or YY, to avoid - infringing on user name space. This should be done even for local - variables, as they might otherwise be expanded by user macros. - There are some unavoidable exceptions within include files to - define necessary library symbols; they are noted "INFRINGES ON - USER NAME SPACE" below. */ - -/* Identify Bison output. */ -#define YYBISON 1 - -/* Bison version. */ -#define YYBISON_VERSION "2.1" - -/* Skeleton name. */ -#define YYSKELETON_NAME "yacc.c" - -/* Pure parsers. */ -#define YYPURE 0 - -/* Using locations. */ -#define YYLSP_NEEDED 0 +#define YYBISON 1 /* Identify Bison output. */ -/* Substitute the variable and function names. */ #define yyparse Upgradeparse -#define yylex Upgradelex +#define yylex Upgradelex #define yyerror Upgradeerror -#define yylval Upgradelval -#define yychar Upgradechar +#define yylval Upgradelval +#define yychar Upgradechar #define yydebug Upgradedebug #define yynerrs Upgradenerrs +#define VOID 257 +#define BOOL 258 +#define SBYTE 259 +#define UBYTE 260 +#define SHORT 261 +#define USHORT 262 +#define INT 263 +#define UINT 264 +#define LONG 265 +#define ULONG 266 +#define FLOAT 267 +#define DOUBLE 268 +#define LABEL 269 +#define OPAQUE 270 +#define ESINT64VAL 271 +#define EUINT64VAL 272 +#define SINTVAL 273 +#define UINTVAL 274 +#define FPVAL 275 +#define NULL_TOK 276 +#define UNDEF 277 +#define ZEROINITIALIZER 278 +#define TRUETOK 279 +#define FALSETOK 280 +#define TYPE 281 +#define VAR_ID 282 +#define LABELSTR 283 +#define STRINGCONSTANT 284 +#define IMPLEMENTATION 285 +#define BEGINTOK 286 +#define ENDTOK 287 +#define DECLARE 288 +#define GLOBAL 289 +#define CONSTANT 290 +#define SECTION 291 +#define VOLATILE 292 +#define TO 293 +#define DOTDOTDOT 294 +#define CONST 295 +#define INTERNAL 296 +#define LINKONCE 297 +#define WEAK 298 +#define DLLIMPORT 299 +#define DLLEXPORT 300 +#define EXTERN_WEAK 301 +#define APPENDING 302 +#define NOT 303 +#define EXTERNAL 304 +#define TARGET 305 +#define TRIPLE 306 +#define ENDIAN 307 +#define POINTERSIZE 308 +#define LITTLE 309 +#define BIG 310 +#define ALIGN 311 +#define UNINITIALIZED 312 +#define DEPLIBS 313 +#define CALL 314 +#define TAIL 315 +#define ASM_TOK 316 +#define MODULE 317 +#define SIDEEFFECT 318 +#define CC_TOK 319 +#define CCC_TOK 320 +#define CSRETCC_TOK 321 +#define FASTCC_TOK 322 +#define COLDCC_TOK 323 +#define X86_STDCALLCC_TOK 324 +#define X86_FASTCALLCC_TOK 325 +#define DATALAYOUT 326 +#define RET 327 +#define BR 328 +#define SWITCH 329 +#define INVOKE 330 +#define EXCEPT 331 +#define UNWIND 332 +#define UNREACHABLE 333 +#define ADD 334 +#define SUB 335 +#define MUL 336 +#define DIV 337 +#define UDIV 338 +#define SDIV 339 +#define FDIV 340 +#define REM 341 +#define UREM 342 +#define SREM 343 +#define FREM 344 +#define AND 345 +#define OR 346 +#define XOR 347 +#define SETLE 348 +#define SETGE 349 +#define SETLT 350 +#define SETGT 351 +#define SETEQ 352 +#define SETNE 353 +#define ICMP 354 +#define FCMP 355 +#define EQ 356 +#define NE 357 +#define SLT 358 +#define SGT 359 +#define SLE 360 +#define SGE 361 +#define OEQ 362 +#define ONE 363 +#define OLT 364 +#define OGT 365 +#define OLE 366 +#define OGE 367 +#define ORD 368 +#define UNO 369 +#define UEQ 370 +#define UNE 371 +#define ULT 372 +#define UGT 373 +#define ULE 374 +#define UGE 375 +#define MALLOC 376 +#define ALLOCA 377 +#define FREE 378 +#define LOAD 379 +#define STORE 380 +#define GETELEMENTPTR 381 +#define PHI_TOK 382 +#define SELECT 383 +#define SHL 384 +#define SHR 385 +#define ASHR 386 +#define LSHR 387 +#define VAARG 388 +#define EXTRACTELEMENT 389 +#define INSERTELEMENT 390 +#define SHUFFLEVECTOR 391 +#define CAST 392 +#define TRUNC 393 +#define ZEXT 394 +#define SEXT 395 +#define FPTRUNC 396 +#define FPEXT 397 +#define FPTOUI 398 +#define FPTOSI 399 +#define UITOFP 400 +#define SITOFP 401 +#define PTRTOINT 402 +#define INTTOPTR 403 +#define BITCAST 404 - -/* Tokens. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum yytokentype { - VOID = 258, - BOOL = 259, - SBYTE = 260, - UBYTE = 261, - SHORT = 262, - USHORT = 263, - INT = 264, - UINT = 265, - LONG = 266, - ULONG = 267, - FLOAT = 268, - DOUBLE = 269, - LABEL = 270, - OPAQUE = 271, - ESINT64VAL = 272, - EUINT64VAL = 273, - SINTVAL = 274, - UINTVAL = 275, - FPVAL = 276, - NULL_TOK = 277, - UNDEF = 278, - ZEROINITIALIZER = 279, - TRUETOK = 280, - FALSETOK = 281, - TYPE = 282, - VAR_ID = 283, - LABELSTR = 284, - STRINGCONSTANT = 285, - IMPLEMENTATION = 286, - BEGINTOK = 287, - ENDTOK = 288, - DECLARE = 289, - GLOBAL = 290, - CONSTANT = 291, - SECTION = 292, - VOLATILE = 293, - TO = 294, - DOTDOTDOT = 295, - CONST = 296, - INTERNAL = 297, - LINKONCE = 298, - WEAK = 299, - DLLIMPORT = 300, - DLLEXPORT = 301, - EXTERN_WEAK = 302, - APPENDING = 303, - NOT = 304, - EXTERNAL = 305, - TARGET = 306, - TRIPLE = 307, - ENDIAN = 308, - POINTERSIZE = 309, - LITTLE = 310, - BIG = 311, - ALIGN = 312, - UNINITIALIZED = 313, - DEPLIBS = 314, - CALL = 315, - TAIL = 316, - ASM_TOK = 317, - MODULE = 318, - SIDEEFFECT = 319, - CC_TOK = 320, - CCC_TOK = 321, - CSRETCC_TOK = 322, - FASTCC_TOK = 323, - COLDCC_TOK = 324, - X86_STDCALLCC_TOK = 325, - X86_FASTCALLCC_TOK = 326, - DATALAYOUT = 327, - RET = 328, - BR = 329, - SWITCH = 330, - INVOKE = 331, - EXCEPT = 332, - UNWIND = 333, - UNREACHABLE = 334, - ADD = 335, - SUB = 336, - MUL = 337, - DIV = 338, - UDIV = 339, - SDIV = 340, - FDIV = 341, - REM = 342, - UREM = 343, - SREM = 344, - FREM = 345, - AND = 346, - OR = 347, - XOR = 348, - SETLE = 349, - SETGE = 350, - SETLT = 351, - SETGT = 352, - SETEQ = 353, - SETNE = 354, - ICMP = 355, - FCMP = 356, - EQ = 357, - NE = 358, - SLT = 359, - SGT = 360, - SLE = 361, - SGE = 362, - OEQ = 363, - ONE = 364, - OLT = 365, - OGT = 366, - OLE = 367, - OGE = 368, - ORD = 369, - UNO = 370, - UEQ = 371, - UNE = 372, - ULT = 373, - UGT = 374, - ULE = 375, - UGE = 376, - MALLOC = 377, - ALLOCA = 378, - FREE = 379, - LOAD = 380, - STORE = 381, - GETELEMENTPTR = 382, - PHI_TOK = 383, - SELECT = 384, - SHL = 385, - SHR = 386, - ASHR = 387, - LSHR = 388, - VAARG = 389, - EXTRACTELEMENT = 390, - INSERTELEMENT = 391, - SHUFFLEVECTOR = 392, - CAST = 393, - TRUNC = 394, - ZEXT = 395, - SEXT = 396, - FPTRUNC = 397, - FPEXT = 398, - FPTOUI = 399, - FPTOSI = 400, - UITOFP = 401, - SITOFP = 402, - PTRTOINT = 403, - INTTOPTR = 404, - BITCAST = 405 - }; -#endif -/* Tokens. */ -#define VOID 258 -#define BOOL 259 -#define SBYTE 260 -#define UBYTE 261 -#define SHORT 262 -#define USHORT 263 -#define INT 264 -#define UINT 265 -#define LONG 266 -#define ULONG 267 -#define FLOAT 268 -#define DOUBLE 269 -#define LABEL 270 -#define OPAQUE 271 -#define ESINT64VAL 272 -#define EUINT64VAL 273 -#define SINTVAL 274 -#define UINTVAL 275 -#define FPVAL 276 -#define NULL_TOK 277 -#define UNDEF 278 -#define ZEROINITIALIZER 279 -#define TRUETOK 280 -#define FALSETOK 281 -#define TYPE 282 -#define VAR_ID 283 -#define LABELSTR 284 -#define STRINGCONSTANT 285 -#define IMPLEMENTATION 286 -#define BEGINTOK 287 -#define ENDTOK 288 -#define DECLARE 289 -#define GLOBAL 290 -#define CONSTANT 291 -#define SECTION 292 -#define VOLATILE 293 -#define TO 294 -#define DOTDOTDOT 295 -#define CONST 296 -#define INTERNAL 297 -#define LINKONCE 298 -#define WEAK 299 -#define DLLIMPORT 300 -#define DLLEXPORT 301 -#define EXTERN_WEAK 302 -#define APPENDING 303 -#define NOT 304 -#define EXTERNAL 305 -#define TARGET 306 -#define TRIPLE 307 -#define ENDIAN 308 -#define POINTERSIZE 309 -#define LITTLE 310 -#define BIG 311 -#define ALIGN 312 -#define UNINITIALIZED 313 -#define DEPLIBS 314 -#define CALL 315 -#define TAIL 316 -#define ASM_TOK 317 -#define MODULE 318 -#define SIDEEFFECT 319 -#define CC_TOK 320 -#define CCC_TOK 321 -#define CSRETCC_TOK 322 -#define FASTCC_TOK 323 -#define COLDCC_TOK 324 -#define X86_STDCALLCC_TOK 325 -#define X86_FASTCALLCC_TOK 326 -#define DATALAYOUT 327 -#define RET 328 -#define BR 329 -#define SWITCH 330 -#define INVOKE 331 -#define EXCEPT 332 -#define UNWIND 333 -#define UNREACHABLE 334 -#define ADD 335 -#define SUB 336 -#define MUL 337 -#define DIV 338 -#define UDIV 339 -#define SDIV 340 -#define FDIV 341 -#define REM 342 -#define UREM 343 -#define SREM 344 -#define FREM 345 -#define AND 346 -#define OR 347 -#define XOR 348 -#define SETLE 349 -#define SETGE 350 -#define SETLT 351 -#define SETGT 352 -#define SETEQ 353 -#define SETNE 354 -#define ICMP 355 -#define FCMP 356 -#define EQ 357 -#define NE 358 -#define SLT 359 -#define SGT 360 -#define SLE 361 -#define SGE 362 -#define OEQ 363 -#define ONE 364 -#define OLT 365 -#define OGT 366 -#define OLE 367 -#define OGE 368 -#define ORD 369 -#define UNO 370 -#define UEQ 371 -#define UNE 372 -#define ULT 373 -#define UGT 374 -#define ULE 375 -#define UGE 376 -#define MALLOC 377 -#define ALLOCA 378 -#define FREE 379 -#define LOAD 380 -#define STORE 381 -#define GETELEMENTPTR 382 -#define PHI_TOK 383 -#define SELECT 384 -#define SHL 385 -#define SHR 386 -#define ASHR 387 -#define LSHR 388 -#define VAARG 389 -#define EXTRACTELEMENT 390 -#define INSERTELEMENT 391 -#define SHUFFLEVECTOR 392 -#define CAST 393 -#define TRUNC 394 -#define ZEXT 395 -#define SEXT 396 -#define FPTRUNC 397 -#define FPEXT 398 -#define FPTOUI 399 -#define FPTOSI 400 -#define UITOFP 401 -#define SITOFP 402 -#define PTRTOINT 403 -#define INTTOPTR 404 -#define BITCAST 405 - - - - -/* Copy the first part of user declarations. */ -#line 14 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 14 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y" #include "ParserInternals.h" #include @@ -430,6 +222,7 @@ if (yyparse()) { std::cerr << "Parse failed.\n"; + out << "llvm-upgrade parse failed.\n"; exit(1); } } @@ -752,28 +545,8 @@ } - -/* Enabling traces. */ -#ifndef YYDEBUG -# define YYDEBUG 0 -#endif - -/* Enabling verbose error messages. */ -#ifdef YYERROR_VERBOSE -# undef YYERROR_VERBOSE -# define YYERROR_VERBOSE 1 -#else -# define YYERROR_VERBOSE 0 -#endif - -/* Enabling the token table. */ -#ifndef YYTOKEN_TABLE -# define YYTOKEN_TABLE 0 -#endif - -#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) -#line 400 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" -typedef union YYSTYPE { +#line 401 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y" +typedef union { std::string* String; TypeInfo* Type; ValueInfo Value; @@ -781,1554 +554,1086 @@ ValueList* ValList; TypeList* TypeVec; } YYSTYPE; -/* Line 196 of yacc.c. */ -#line 786 "UpgradeParser.tab.c" -# define yystype YYSTYPE /* obsolescent; will be withdrawn */ -# define YYSTYPE_IS_DECLARED 1 -# define YYSTYPE_IS_TRIVIAL 1 -#endif - - - -/* Copy the second part of user declarations. */ - - -/* Line 219 of yacc.c. */ -#line 798 "UpgradeParser.tab.c" - -#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__) -# define YYSIZE_T __SIZE_TYPE__ -#endif -#if ! defined (YYSIZE_T) && defined (size_t) -# define YYSIZE_T size_t -#endif -#if ! defined (YYSIZE_T) && (defined (__STDC__) || defined (__cplusplus)) -# include /* INFRINGES ON USER NAME SPACE */ -# define YYSIZE_T size_t -#endif -#if ! defined (YYSIZE_T) -# define YYSIZE_T unsigned int -#endif - -#ifndef YY_ -# if YYENABLE_NLS -# if ENABLE_NLS -# include /* INFRINGES ON USER NAME SPACE */ -# define YY_(msgid) dgettext ("bison-runtime", msgid) -# endif -# endif -# ifndef YY_ -# define YY_(msgid) msgid -# endif -#endif - -#if ! defined (yyoverflow) || YYERROR_VERBOSE - -/* The parser invokes alloca or malloc; define the necessary symbols. */ - -# ifdef YYSTACK_USE_ALLOCA -# if YYSTACK_USE_ALLOCA -# ifdef __GNUC__ -# define YYSTACK_ALLOC __builtin_alloca -# else -# define YYSTACK_ALLOC alloca -# if defined (__STDC__) || defined (__cplusplus) -# include /* INFRINGES ON USER NAME SPACE */ -# define YYINCLUDED_STDLIB_H -# endif -# endif -# endif -# endif - -# ifdef YYSTACK_ALLOC - /* Pacify GCC's `empty if-body' warning. */ -# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) -# ifndef YYSTACK_ALLOC_MAXIMUM - /* The OS might guarantee only one guard page at the bottom of the stack, - and a page size can be as small as 4096 bytes. So we cannot safely - invoke alloca (N) if N exceeds 4096. Use a slightly smaller number - to allow for a few compiler-allocated temporary stack slots. */ -# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2005 */ -# endif -# else -# define YYSTACK_ALLOC YYMALLOC -# define YYSTACK_FREE YYFREE -# ifndef YYSTACK_ALLOC_MAXIMUM -# define YYSTACK_ALLOC_MAXIMUM ((YYSIZE_T) -1) -# endif -# ifdef __cplusplus -extern "C" { -# endif -# ifndef YYMALLOC -# define YYMALLOC malloc -# if (! defined (malloc) && ! defined (YYINCLUDED_STDLIB_H) \ - && (defined (__STDC__) || defined (__cplusplus))) -void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ -# endif -# endif -# ifndef YYFREE -# define YYFREE free -# if (! defined (free) && ! defined (YYINCLUDED_STDLIB_H) \ - && (defined (__STDC__) || defined (__cplusplus))) -void free (void *); /* INFRINGES ON USER NAME SPACE */ -# endif -# endif -# ifdef __cplusplus -} -# endif -# endif -#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */ - - -#if (! defined (yyoverflow) \ - && (! defined (__cplusplus) \ - || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL))) - -/* A type that is properly aligned for any stack member. */ -union yyalloc -{ - short int yyss; - YYSTYPE yyvs; - }; - -/* The size of the maximum gap between one aligned stack and the next. */ -# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) - -/* The size of an array large to enough to hold all stacks, each with - N elements. */ -# define YYSTACK_BYTES(N) \ - ((N) * (sizeof (short int) + sizeof (YYSTYPE)) \ - + YYSTACK_GAP_MAXIMUM) - -/* Copy COUNT objects from FROM to TO. The source and destination do - not overlap. */ -# ifndef YYCOPY -# if defined (__GNUC__) && 1 < __GNUC__ -# define YYCOPY(To, From, Count) \ - __builtin_memcpy (To, From, (Count) * sizeof (*(From))) -# else -# define YYCOPY(To, From, Count) \ - do \ - { \ - YYSIZE_T yyi; \ - for (yyi = 0; yyi < (Count); yyi++) \ - (To)[yyi] = (From)[yyi]; \ - } \ - while (0) -# endif -# endif - -/* Relocate STACK from its old location to the new one. The - local variables YYSIZE and YYSTACKSIZE give the old and new number of - elements in the stack, and YYPTR gives the new location of the - stack. Advance YYPTR to a properly aligned location for the next - stack. */ -# define YYSTACK_RELOCATE(Stack) \ - do \ - { \ - YYSIZE_T yynewbytes; \ - YYCOPY (&yyptr->Stack, Stack, yysize); \ - Stack = &yyptr->Stack; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ - } \ - while (0) +#include +#ifndef __cplusplus +#ifndef __STDC__ +#define const #endif - -#if defined (__STDC__) || defined (__cplusplus) - typedef signed char yysigned_char; -#else - typedef short int yysigned_char; #endif -/* YYFINAL -- State number of the termination state. */ -#define YYFINAL 4 -/* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 1486 - -/* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 165 -/* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 75 -/* YYNRULES -- Number of rules. */ -#define YYNRULES 301 -/* YYNRULES -- Number of states. */ -#define YYNSTATES 586 - -/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ -#define YYUNDEFTOK 2 -#define YYMAXUTOK 405 - -#define YYTRANSLATE(YYX) \ - ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) - -/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ -static const unsigned char yytranslate[] = -{ - 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 154, 155, 163, 2, 152, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 159, 151, 160, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 156, 153, 158, 2, 2, 2, 2, 2, 164, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 157, 2, 2, 161, 2, 162, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150 -}; -#if YYDEBUG -/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in - YYRHS. */ -static const unsigned short int yyprhs[] = -{ - 0, 0, 3, 5, 7, 9, 11, 13, 15, 17, - 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, - 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, - 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, - 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, - 99, 101, 103, 105, 107, 109, 111, 113, 115, 117, - 119, 121, 123, 125, 127, 129, 131, 133, 135, 137, - 139, 141, 143, 145, 147, 149, 151, 153, 155, 157, - 159, 161, 164, 165, 167, 169, 171, 173, 175, 177, - 179, 180, 182, 184, 186, 188, 190, 192, 195, 196, - 197, 200, 201, 205, 208, 209, 211, 212, 216, 218, - 221, 223, 225, 227, 229, 231, 233, 235, 237, 239, - 241, 243, 245, 247, 249, 251, 253, 255, 257, 259, - 261, 264, 269, 275, 281, 285, 288, 294, 299, 302, - 304, 308, 310, 314, 316, 317, 322, 326, 330, 335, - 340, 344, 347, 350, 353, 356, 359, 362, 365, 368, - 371, 374, 381, 387, 396, 403, 410, 417, 425, 433, - 440, 447, 456, 465, 469, 471, 473, 475, 477, 480, - 483, 488, 491, 493, 495, 497, 502, 505, 510, 517, - 524, 531, 538, 542, 547, 548, 550, 552, 554, 558, - 562, 566, 570, 574, 578, 580, 581, 583, 585, 587, - 588, 591, 595, 597, 599, 603, 605, 606, 615, 617, - 619, 623, 625, 627, 631, 632, 634, 636, 640, 641, - 643, 645, 647, 649, 651, 653, 655, 657, 659, 663, - 665, 671, 673, 675, 677, 679, 682, 685, 687, 690, - 693, 694, 696, 698, 700, 703, 706, 710, 720, 730, - 739, 754, 756, 758, 765, 771, 774, 781, 789, 791, - 795, 797, 798, 801, 803, 809, 815, 821, 828, 835, - 838, 843, 848, 855, 860, 865, 872, 879, 882, 890, - 892, 895, 896, 898, 899, 903, 910, 914, 921, 924, - 929, 936 + +#define YYFINAL 586 +#define YYFLAG -32768 +#define YYNTBASE 165 + +#define YYTRANSLATE(x) ((unsigned)(x) <= 404 ? yytranslate[x] : 239) + +static const short yytranslate[] = { 0, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 154, + 155, 163, 2, 152, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 159, + 151, 160, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 156, 153, 158, 2, 2, 2, 2, 2, 164, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 157, + 2, 2, 161, 2, 162, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 1, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150 }; -/* YYRHS -- A `-1'-separated list of the rules' RHS. */ -static const short int yyrhs[] = -{ - 199, 0, -1, 19, -1, 20, -1, 17, -1, 18, - -1, 80, -1, 81, -1, 82, -1, 83, -1, 84, - -1, 85, -1, 86, -1, 87, -1, 88, -1, 89, - -1, 90, -1, 91, -1, 92, -1, 93, -1, 94, - -1, 95, -1, 96, -1, 97, -1, 98, -1, 99, - -1, 102, -1, 103, -1, 104, -1, 105, -1, 106, - -1, 107, -1, 118, -1, 119, -1, 120, -1, 121, - -1, 108, -1, 109, -1, 110, -1, 111, -1, 112, - -1, 113, -1, 114, -1, 115, -1, 116, -1, 117, - -1, 118, -1, 119, -1, 120, -1, 121, -1, 25, - -1, 26, -1, 130, -1, 131, -1, 132, -1, 133, - -1, 139, -1, 140, -1, 141, -1, 142, -1, 143, - -1, 144, -1, 145, -1, 146, -1, 147, -1, 148, - -1, 149, -1, 150, -1, 138, -1, 11, -1, 9, - -1, 7, -1, 5, -1, 12, -1, 10, -1, 8, - -1, 6, -1, 175, -1, 176, -1, 13, -1, 14, - -1, 208, 151, -1, -1, 42, -1, 43, -1, 44, - -1, 48, -1, 45, -1, 46, -1, 47, -1, -1, - 66, -1, 67, -1, 68, -1, 69, -1, 70, -1, - 71, -1, 65, 18, -1, -1, -1, 57, 18, -1, - -1, 152, 57, 18, -1, 37, 30, -1, -1, 184, - -1, -1, 152, 187, 186, -1, 184, -1, 57, 18, - -1, 190, -1, 3, -1, 192, -1, 3, -1, 192, - -1, 4, -1, 5, -1, 6, -1, 7, -1, 8, - -1, 9, -1, 10, -1, 11, -1, 12, -1, 13, - -1, 14, -1, 15, -1, 16, -1, 222, -1, 191, - -1, 153, 18, -1, 189, 154, 194, 155, -1, 156, - 18, 157, 192, 158, -1, 159, 18, 157, 192, 160, - -1, 161, 193, 162, -1, 161, 162, -1, 159, 161, - 193, 162, 160, -1, 159, 161, 162, 160, -1, 192, - 163, -1, 192, -1, 193, 152, 192, -1, 193, -1, - 193, 152, 40, -1, 40, -1, -1, 190, 156, 197, - 158, -1, 190, 156, 158, -1, 190, 164, 30, -1, - 190, 159, 197, 160, -1, 190, 161, 197, 162, -1, - 190, 161, 162, -1, 190, 22, -1, 190, 23, -1, - 190, 222, -1, 190, 196, -1, 190, 24, -1, 175, - 167, -1, 176, 167, -1, 4, 25, -1, 4, 26, - -1, 178, 21, -1, 174, 154, 195, 39, 190, 155, - -1, 127, 154, 195, 237, 155, -1, 129, 154, 195, - 152, 195, 152, 195, 155, -1, 168, 154, 195, 152, - 195, 155, -1, 169, 154, 195, 152, 195, 155, -1, - 170, 154, 195, 152, 195, 155, -1, 100, 171, 154, - 195, 152, 195, 155, -1, 101, 172, 154, 195, 152, - 195, 155, -1, 173, 154, 195, 152, 195, 155, -1, - 135, 154, 195, 152, 195, 155, -1, 136, 154, 195, - 152, 195, 152, 195, 155, -1, 137, 154, 195, 152, - 195, 152, 195, 155, -1, 197, 152, 195, -1, 195, - -1, 35, -1, 36, -1, 200, -1, 200, 217, -1, - 200, 219, -1, 200, 63, 62, 203, -1, 200, 31, - -1, 202, -1, 50, -1, 58, -1, 202, 179, 27, - 188, -1, 202, 219, -1, 202, 63, 62, 203, -1, - 202, 179, 180, 198, 195, 186, -1, 202, 179, 201, - 198, 190, 186, -1, 202, 179, 45, 198, 190, 186, - -1, 202, 179, 47, 198, 190, 186, -1, 202, 51, - 205, -1, 202, 59, 151, 206, -1, -1, 30, -1, - 56, -1, 55, -1, 53, 151, 204, -1, 54, 151, - 18, -1, 52, 151, 30, -1, 72, 151, 30, -1, - 156, 207, 158, -1, 207, 152, 30, -1, 30, -1, - -1, 28, -1, 30, -1, 208, -1, -1, 190, 209, - -1, 211, 152, 210, -1, 210, -1, 211, -1, 211, - 152, 40, -1, 40, -1, -1, 181, 188, 208, 154, - 212, 155, 185, 182, -1, 32, -1, 161, -1, 180, - 213, 214, -1, 33, -1, 162, -1, 215, 225, 216, - -1, -1, 45, -1, 47, -1, 34, 218, 213, -1, - -1, 64, -1, 17, -1, 18, -1, 21, -1, 25, - -1, 26, -1, 22, -1, 23, -1, 24, -1, 159, - 197, 160, -1, 196, -1, 62, 220, 30, 152, 30, - -1, 166, -1, 208, -1, 222, -1, 221, -1, 190, - 223, -1, 225, 226, -1, 226, -1, 227, 229, -1, - 227, 231, -1, -1, 29, -1, 78, -1, 77, -1, - 73, 224, -1, 73, 3, -1, 74, 15, 223, -1, - 74, 4, 223, 152, 15, 223, 152, 15, 223, -1, - 75, 177, 223, 152, 15, 223, 156, 230, 158, -1, - 75, 177, 223, 152, 15, 223, 156, 158, -1, 179, - 76, 181, 188, 223, 154, 234, 155, 39, 15, 223, - 228, 15, 223, -1, 228, -1, 79, -1, 230, 177, - 221, 152, 15, 223, -1, 177, 221, 152, 15, 223, - -1, 179, 236, -1, 190, 156, 223, 152, 223, 158, - -1, 232, 152, 156, 223, 152, 223, 158, -1, 224, - -1, 233, 152, 224, -1, 233, -1, -1, 61, 60, - -1, 60, -1, 168, 190, 223, 152, 223, -1, 169, - 190, 223, 152, 223, -1, 170, 190, 223, 152, 223, - -1, 100, 171, 190, 223, 152, 223, -1, 101, 172, - 190, 223, 152, 223, -1, 49, 224, -1, 173, 224, - 152, 224, -1, 174, 224, 39, 190, -1, 129, 224, - 152, 224, 152, 224, -1, 134, 224, 152, 190, -1, - 135, 224, 152, 224, -1, 136, 224, 152, 224, 152, - 224, -1, 137, 224, 152, 224, 152, 224, -1, 128, - 232, -1, 235, 181, 188, 223, 154, 234, 155, -1, - 239, -1, 152, 233, -1, -1, 38, -1, -1, 122, - 190, 183, -1, 122, 190, 152, 10, 223, 183, -1, - 123, 190, 183, -1, 123, 190, 152, 10, 223, 183, - -1, 124, 224, -1, 238, 125, 190, 223, -1, 238, - 126, 224, 152, 190, 223, -1, 127, 190, 223, 237, - -1 +#if YYDEBUG != 0 +static const short yyprhs[] = { 0, + 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, + 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, + 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, + 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, + 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, + 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, + 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, + 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, + 161, 162, 164, 166, 168, 170, 172, 174, 176, 177, + 179, 181, 183, 185, 187, 189, 192, 193, 194, 197, + 198, 202, 205, 206, 208, 209, 213, 215, 218, 220, + 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, + 242, 244, 246, 248, 250, 252, 254, 256, 258, 261, + 266, 272, 278, 282, 285, 291, 296, 299, 301, 305, + 307, 311, 313, 314, 319, 323, 327, 332, 337, 341, + 344, 347, 350, 353, 356, 359, 362, 365, 368, 371, + 378, 384, 393, 400, 407, 414, 422, 430, 437, 444, + 453, 462, 466, 468, 470, 472, 474, 477, 480, 485, + 488, 490, 492, 494, 499, 502, 507, 514, 521, 528, + 535, 539, 544, 545, 547, 549, 551, 555, 559, 563, + 567, 571, 575, 577, 578, 580, 582, 584, 585, 588, + 592, 594, 596, 600, 602, 603, 612, 614, 616, 620, + 622, 624, 628, 629, 631, 633, 637, 638, 640, 642, + 644, 646, 648, 650, 652, 654, 656, 660, 662, 668, + 670, 672, 674, 676, 679, 682, 684, 687, 690, 691, + 693, 695, 697, 700, 703, 707, 717, 727, 736, 751, + 753, 755, 762, 768, 771, 778, 786, 788, 792, 794, + 795, 798, 800, 806, 812, 818, 825, 832, 835, 840, + 845, 852, 857, 862, 869, 876, 879, 887, 889, 892, + 893, 895, 896, 900, 907, 911, 918, 921, 926, 933 }; -/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ -static const unsigned short int yyrline[] = -{ - 0, 465, 465, 465, 466, 466, 470, 470, 470, 470, - 470, 470, 470, 471, 471, 471, 471, 472, 472, 472, - 473, 473, 473, 473, 473, 473, 474, 474, 474, 474, - 474, 474, 474, 474, 474, 474, 475, 475, 475, 475, - 475, 475, 475, 475, 475, 475, 476, 476, 476, 476, - 476, 476, 477, 477, 477, 477, 478, 478, 478, 478, - 478, 478, 478, 479, 479, 479, 479, 479, 479, 484, - 484, 484, 484, 485, 485, 485, 485, 486, 486, 487, - 487, 490, 493, 498, 498, 498, 498, 498, 498, 499, - 500, 503, 503, 503, 503, 503, 504, 505, 510, 515, - 516, 519, 520, 528, 534, 535, 538, 539, 548, 549, - 562, 562, 563, 563, 564, 568, 568, 568, 568, 568, - 568, 568, 569, 569, 569, 569, 569, 571, 574, 577, - 580, 584, 597, 603, 609, 619, 622, 632, 635, 643, - 647, 654, 655, 660, 665, 675, 681, 686, 692, 698, - 704, 709, 715, 721, 728, 734, 740, 746, 752, 758, - 764, 772, 785, 797, 802, 808, 813, 819, 824, 829, - 837, 842, 847, 857, 862, 867, 867, 877, 882, 885, - 890, 894, 898, 900, 900, 903, 913, 918, 923, 933, - 943, 953, 963, 968, 973, 978, 980, 980, 983, 988, - 995, 1000, 1007, 1014, 1019, 1020, 1028, 1028, 1029, 1029, - 1031, 1040, 1044, 1048, 1051, 1056, 1059, 1062, 1080, 1081, - 1084, 1095, 1096, 1098, 1107, 1108, 1109, 1113, 1126, 1127, - 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1131, 1132, 1137, - 1138, 1147, 1147, 1151, 1156, 1166, 1176, 1179, 1187, 1191, - 1196, 1199, 1205, 1205, 1207, 1212, 1217, 1222, 1231, 1239, - 1246, 1269, 1274, 1280, 1286, 1294, 1312, 1320, 1329, 1333, - 1340, 1341, 1345, 1350, 1353, 1362, 1370, 1379, 1387, 1395, - 1400, 1409, 1437, 1443, 1449, 1456, 1462, 1468, 1474, 1492, - 1497, 1498, 1502, 1503, 1506, 1514, 1523, 1531, 1540, 1546, - 1555, 1564 +static const short yyrhs[] = { 19, + 0, 20, 0, 17, 0, 18, 0, 80, 0, 81, + 0, 82, 0, 83, 0, 84, 0, 85, 0, 86, + 0, 87, 0, 88, 0, 89, 0, 90, 0, 91, + 0, 92, 0, 93, 0, 94, 0, 95, 0, 96, + 0, 97, 0, 98, 0, 99, 0, 102, 0, 103, + 0, 104, 0, 105, 0, 106, 0, 107, 0, 118, + 0, 119, 0, 120, 0, 121, 0, 108, 0, 109, + 0, 110, 0, 111, 0, 112, 0, 113, 0, 114, + 0, 115, 0, 116, 0, 117, 0, 118, 0, 119, + 0, 120, 0, 121, 0, 25, 0, 26, 0, 130, + 0, 131, 0, 132, 0, 133, 0, 139, 0, 140, + 0, 141, 0, 142, 0, 143, 0, 144, 0, 145, + 0, 146, 0, 147, 0, 148, 0, 149, 0, 150, + 0, 138, 0, 11, 0, 9, 0, 7, 0, 5, + 0, 12, 0, 10, 0, 8, 0, 6, 0, 174, + 0, 175, 0, 13, 0, 14, 0, 207, 151, 0, + 0, 42, 0, 43, 0, 44, 0, 48, 0, 45, + 0, 46, 0, 47, 0, 0, 66, 0, 67, 0, + 68, 0, 69, 0, 70, 0, 71, 0, 65, 18, + 0, 0, 0, 57, 18, 0, 0, 152, 57, 18, + 0, 37, 30, 0, 0, 183, 0, 0, 152, 186, + 185, 0, 183, 0, 57, 18, 0, 189, 0, 3, + 0, 191, 0, 3, 0, 191, 0, 4, 0, 5, + 0, 6, 0, 7, 0, 8, 0, 9, 0, 10, + 0, 11, 0, 12, 0, 13, 0, 14, 0, 15, + 0, 16, 0, 221, 0, 190, 0, 153, 18, 0, + 188, 154, 193, 155, 0, 156, 18, 157, 191, 158, + 0, 159, 18, 157, 191, 160, 0, 161, 192, 162, + 0, 161, 162, 0, 159, 161, 192, 162, 160, 0, + 159, 161, 162, 160, 0, 191, 163, 0, 191, 0, + 192, 152, 191, 0, 192, 0, 192, 152, 40, 0, + 40, 0, 0, 189, 156, 196, 158, 0, 189, 156, + 158, 0, 189, 164, 30, 0, 189, 159, 196, 160, + 0, 189, 161, 196, 162, 0, 189, 161, 162, 0, + 189, 22, 0, 189, 23, 0, 189, 221, 0, 189, + 195, 0, 189, 24, 0, 174, 166, 0, 175, 166, + 0, 4, 25, 0, 4, 26, 0, 177, 21, 0, + 173, 154, 194, 39, 189, 155, 0, 127, 154, 194, + 236, 155, 0, 129, 154, 194, 152, 194, 152, 194, + 155, 0, 167, 154, 194, 152, 194, 155, 0, 168, + 154, 194, 152, 194, 155, 0, 169, 154, 194, 152, + 194, 155, 0, 100, 170, 154, 194, 152, 194, 155, + 0, 101, 171, 154, 194, 152, 194, 155, 0, 172, + 154, 194, 152, 194, 155, 0, 135, 154, 194, 152, + 194, 155, 0, 136, 154, 194, 152, 194, 152, 194, + 155, 0, 137, 154, 194, 152, 194, 152, 194, 155, + 0, 196, 152, 194, 0, 194, 0, 35, 0, 36, + 0, 199, 0, 199, 216, 0, 199, 218, 0, 199, + 63, 62, 202, 0, 199, 31, 0, 201, 0, 50, + 0, 58, 0, 201, 178, 27, 187, 0, 201, 218, + 0, 201, 63, 62, 202, 0, 201, 178, 179, 197, + 194, 185, 0, 201, 178, 200, 197, 189, 185, 0, + 201, 178, 45, 197, 189, 185, 0, 201, 178, 47, + 197, 189, 185, 0, 201, 51, 204, 0, 201, 59, + 151, 205, 0, 0, 30, 0, 56, 0, 55, 0, + 53, 151, 203, 0, 54, 151, 18, 0, 52, 151, + 30, 0, 72, 151, 30, 0, 156, 206, 158, 0, + 206, 152, 30, 0, 30, 0, 0, 28, 0, 30, + 0, 207, 0, 0, 189, 208, 0, 210, 152, 209, + 0, 209, 0, 210, 0, 210, 152, 40, 0, 40, + 0, 0, 180, 187, 207, 154, 211, 155, 184, 181, + 0, 32, 0, 161, 0, 179, 212, 213, 0, 33, + 0, 162, 0, 214, 224, 215, 0, 0, 45, 0, + 47, 0, 34, 217, 212, 0, 0, 64, 0, 17, + 0, 18, 0, 21, 0, 25, 0, 26, 0, 22, + 0, 23, 0, 24, 0, 159, 196, 160, 0, 195, + 0, 62, 219, 30, 152, 30, 0, 165, 0, 207, + 0, 221, 0, 220, 0, 189, 222, 0, 224, 225, + 0, 225, 0, 226, 228, 0, 226, 230, 0, 0, + 29, 0, 78, 0, 77, 0, 73, 223, 0, 73, + 3, 0, 74, 15, 222, 0, 74, 4, 222, 152, + 15, 222, 152, 15, 222, 0, 75, 176, 222, 152, + 15, 222, 156, 229, 158, 0, 75, 176, 222, 152, + 15, 222, 156, 158, 0, 178, 76, 180, 187, 222, + 154, 233, 155, 39, 15, 222, 227, 15, 222, 0, + 227, 0, 79, 0, 229, 176, 220, 152, 15, 222, + 0, 176, 220, 152, 15, 222, 0, 178, 235, 0, + 189, 156, 222, 152, 222, 158, 0, 231, 152, 156, + 222, 152, 222, 158, 0, 223, 0, 232, 152, 223, + 0, 232, 0, 0, 61, 60, 0, 60, 0, 167, + 189, 222, 152, 222, 0, 168, 189, 222, 152, 222, + 0, 169, 189, 222, 152, 222, 0, 100, 170, 189, + 222, 152, 222, 0, 101, 171, 189, 222, 152, 222, + 0, 49, 223, 0, 172, 223, 152, 223, 0, 173, + 223, 39, 189, 0, 129, 223, 152, 223, 152, 223, + 0, 134, 223, 152, 189, 0, 135, 223, 152, 223, + 0, 136, 223, 152, 223, 152, 223, 0, 137, 223, + 152, 223, 152, 223, 0, 128, 231, 0, 234, 180, + 187, 222, 154, 233, 155, 0, 238, 0, 152, 232, + 0, 0, 38, 0, 0, 122, 189, 182, 0, 122, + 189, 152, 10, 222, 182, 0, 123, 189, 182, 0, + 123, 189, 152, 10, 222, 182, 0, 124, 223, 0, + 237, 125, 189, 222, 0, 237, 126, 223, 152, 189, + 222, 0, 127, 189, 222, 236, 0 }; + #endif -#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE -/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. - First, the terminals, then, starting at YYNTOKENS, nonterminals. */ -static const char *const yytname[] = -{ - "$end", "error", "$undefined", "VOID", "BOOL", "SBYTE", "UBYTE", - "SHORT", "USHORT", "INT", "UINT", "LONG", "ULONG", "FLOAT", "DOUBLE", - "LABEL", "OPAQUE", "ESINT64VAL", "EUINT64VAL", "SINTVAL", "UINTVAL", - "FPVAL", "NULL_TOK", "UNDEF", "ZEROINITIALIZER", "TRUETOK", "FALSETOK", - "TYPE", "VAR_ID", "LABELSTR", "STRINGCONSTANT", "IMPLEMENTATION", - "BEGINTOK", "ENDTOK", "DECLARE", "GLOBAL", "CONSTANT", "SECTION", - "VOLATILE", "TO", "DOTDOTDOT", "CONST", "INTERNAL", "LINKONCE", "WEAK", - "DLLIMPORT", "DLLEXPORT", "EXTERN_WEAK", "APPENDING", "NOT", "EXTERNAL", - "TARGET", "TRIPLE", "ENDIAN", "POINTERSIZE", "LITTLE", "BIG", "ALIGN", - "UNINITIALIZED", "DEPLIBS", "CALL", "TAIL", "ASM_TOK", "MODULE", - "SIDEEFFECT", "CC_TOK", "CCC_TOK", "CSRETCC_TOK", "FASTCC_TOK", - "COLDCC_TOK", "X86_STDCALLCC_TOK", "X86_FASTCALLCC_TOK", "DATALAYOUT", - "RET", "BR", "SWITCH", "INVOKE", "EXCEPT", "UNWIND", "UNREACHABLE", - "ADD", "SUB", "MUL", "DIV", "UDIV", "SDIV", "FDIV", "REM", "UREM", - "SREM", "FREM", "AND", "OR", "XOR", "SETLE", "SETGE", "SETLT", "SETGT", - "SETEQ", "SETNE", "ICMP", "FCMP", "EQ", "NE", "SLT", "SGT", "SLE", "SGE", - "OEQ", "ONE", "OLT", "OGT", "OLE", "OGE", "ORD", "UNO", "UEQ", "UNE", - "ULT", "UGT", "ULE", "UGE", "MALLOC", "ALLOCA", "FREE", "LOAD", "STORE", - "GETELEMENTPTR", "PHI_TOK", "SELECT", "SHL", "SHR", "ASHR", "LSHR", - "VAARG", "EXTRACTELEMENT", "INSERTELEMENT", "SHUFFLEVECTOR", "CAST", - "TRUNC", "ZEXT", "SEXT", "FPTRUNC", "FPEXT", "FPTOUI", "FPTOSI", - "UITOFP", "SITOFP", "PTRTOINT", "INTTOPTR", "BITCAST", "'='", "','", - "'\\\\'", "'('", "')'", "'['", "'x'", "']'", "'<'", "'>'", "'{'", "'}'", - "'*'", "'c'", "$accept", "IntVal", "EInt64Val", "ArithmeticOps", - "LogicalOps", "SetCondOps", "IPredicates", "FPredicates", "ShiftOps", - "CastOps", "SIntType", "UIntType", "IntType", "FPType", "OptAssign", - "OptLinkage", "OptCallingConv", "OptAlign", "OptCAlign", "SectionString", - "OptSection", "GlobalVarAttributes", "GlobalVarAttribute", "TypesV", - "UpRTypesV", "Types", "PrimType", "UpRTypes", "TypeListI", - "ArgTypeListI", "ConstVal", "ConstExpr", "ConstVector", "GlobalType", - "Module", "DefinitionList", "External", "ConstPool", "AsmBlock", - "BigOrLittle", "TargetDefinition", "LibrariesDefinition", "LibList", - "Name", "OptName", "ArgVal", "ArgListH", "ArgList", "FunctionHeaderH", - "BEGIN", "FunctionHeader", "END", "Function", "FnDeclareLinkage", - "FunctionProto", "OptSideEffect", "ConstValueRef", "SymbolicValueRef", - "ValueRef", "ResolvedVal", "BasicBlockList", "BasicBlock", - "InstructionList", "Unwind", "BBTerminatorInst", "JumpTable", "Inst", - "PHIList", "ValueRefList", "ValueRefListE", "OptTailCall", "InstVal", - "IndexList", "OptVolatile", "MemoryInst", 0 +#if YYDEBUG != 0 +static const short yyrline[] = { 0, + 466, 466, 467, 467, 471, 471, 471, 471, 471, 471, + 471, 472, 472, 472, 472, 473, 473, 473, 474, 474, + 474, 474, 474, 474, 475, 475, 475, 475, 475, 475, + 475, 475, 475, 475, 476, 476, 476, 476, 476, 476, + 476, 476, 476, 476, 477, 477, 477, 477, 477, 477, + 478, 478, 478, 478, 479, 479, 479, 479, 479, 479, + 479, 479, 480, 480, 480, 480, 480, 485, 485, 485, + 485, 486, 486, 486, 486, 487, 487, 488, 488, 491, + 494, 499, 499, 499, 499, 499, 499, 500, 501, 504, + 504, 504, 504, 504, 505, 506, 511, 516, 517, 520, + 521, 529, 535, 536, 539, 540, 549, 550, 563, 563, + 564, 564, 565, 569, 569, 569, 569, 569, 569, 569, + 570, 570, 570, 570, 570, 572, 575, 578, 581, 585, + 598, 604, 610, 620, 623, 633, 636, 644, 648, 655, + 656, 661, 666, 676, 682, 687, 693, 699, 705, 710, + 716, 722, 729, 735, 741, 747, 753, 759, 765, 773, + 786, 798, 803, 809, 814, 820, 825, 830, 838, 843, + 848, 858, 863, 868, 868, 878, 883, 886, 891, 895, + 899, 901, 901, 904, 914, 919, 924, 934, 944, 954, + 964, 969, 974, 979, 981, 981, 984, 989, 996, 1001, + 1008, 1015, 1020, 1021, 1029, 1029, 1030, 1030, 1032, 1041, + 1045, 1049, 1052, 1057, 1060, 1063, 1081, 1082, 1085, 1096, + 1097, 1099, 1108, 1109, 1110, 1114, 1127, 1128, 1131, 1131, + 1131, 1131, 1131, 1131, 1131, 1132, 1133, 1138, 1139, 1148, + 1148, 1152, 1157, 1167, 1177, 1180, 1188, 1192, 1197, 1200, + 1206, 1206, 1208, 1213, 1218, 1223, 1232, 1240, 1247, 1270, + 1275, 1281, 1287, 1295, 1313, 1321, 1330, 1334, 1341, 1342, + 1346, 1351, 1354, 1363, 1371, 1380, 1388, 1396, 1401, 1410, + 1438, 1444, 1450, 1457, 1463, 1469, 1475, 1493, 1498, 1499, + 1503, 1504, 1507, 1515, 1524, 1532, 1541, 1547, 1556, 1565 }; #endif -# ifdef YYPRINT -/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to - token YYLEX-NUM. */ -static const unsigned short int yytoknum[] = -{ - 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 61, 44, 92, 40, 41, 91, 120, 93, 60, - 62, 123, 125, 42, 99 -}; -# endif -/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const unsigned char yyr1[] = -{ - 0, 165, 166, 166, 167, 167, 168, 168, 168, 168, -