[llvm-commits] CVS: llvm/tools/llvm-upgrade/UpgradeLexer.cpp.cvs UpgradeLexer.l.cvs UpgradeParser.cpp.cvs UpgradeParser.h.cvs UpgradeParser.y.cvs

Reid Spencer reid at x10sys.com
Sun Jan 14 18:42:01 PST 2007



Changes in directory llvm/tools/llvm-upgrade:

UpgradeLexer.cpp.cvs updated: 1.15 -> 1.16
UpgradeLexer.l.cvs updated: 1.15 -> 1.16
UpgradeParser.cpp.cvs updated: 1.42 -> 1.43
UpgradeParser.h.cvs updated: 1.29 -> 1.30
UpgradeParser.y.cvs updated: 1.41 -> 1.42
---
Log message:

Regenerate.


---
Diffs of the changes:  (+851 -845)

 UpgradeLexer.cpp.cvs  |    4 
 UpgradeLexer.l.cvs    |    2 
 UpgradeParser.cpp.cvs | 1277 +++++++++++++++++++++++++-------------------------
 UpgradeParser.h.cvs   |    8 
 UpgradeParser.y.cvs   |  405 +++++++--------
 5 files changed, 851 insertions(+), 845 deletions(-)


Index: llvm/tools/llvm-upgrade/UpgradeLexer.cpp.cvs
diff -u llvm/tools/llvm-upgrade/UpgradeLexer.cpp.cvs:1.15 llvm/tools/llvm-upgrade/UpgradeLexer.cpp.cvs:1.16
--- llvm/tools/llvm-upgrade/UpgradeLexer.cpp.cvs:1.15	Sun Jan 14 18:26:17 2007
+++ llvm/tools/llvm-upgrade/UpgradeLexer.cpp.cvs	Sun Jan 14 20:41:46 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.15 2007/01/15 00:26:17 reid Exp $
+ * $Header: /var/cvs/llvm/llvm/tools/llvm-upgrade/UpgradeLexer.cpp.cvs,v 1.16 2007/01/15 02:41:46 reid Exp $
  */
 
 #define FLEX_SCANNER
@@ -962,7 +962,7 @@
   return sym
 
 #define RET_TY(sym,OldTY,NewTY,sign) \
-  Upgradelval.Type = getTypeInfo(NewTY, OldTY); \
+  Upgradelval.Ty = getType(NewTY, OldTY); \
   return sym
 
 #define YY_NEVER_INTERACTIVE 1


Index: llvm/tools/llvm-upgrade/UpgradeLexer.l.cvs
diff -u llvm/tools/llvm-upgrade/UpgradeLexer.l.cvs:1.15 llvm/tools/llvm-upgrade/UpgradeLexer.l.cvs:1.16
--- llvm/tools/llvm-upgrade/UpgradeLexer.l.cvs:1.15	Sun Jan 14 18:26:17 2007
+++ llvm/tools/llvm-upgrade/UpgradeLexer.l.cvs	Sun Jan 14 20:41:46 2007
@@ -48,7 +48,7 @@
   return sym
 
 #define RET_TY(sym,OldTY,NewTY,sign) \
-  Upgradelval.Type = getTypeInfo(NewTY, OldTY); \
+  Upgradelval.Ty = getType(NewTY, OldTY); \
   return sym
 
 #define YY_NEVER_INTERACTIVE 1


Index: llvm/tools/llvm-upgrade/UpgradeParser.cpp.cvs
diff -u llvm/tools/llvm-upgrade/UpgradeParser.cpp.cvs:1.42 llvm/tools/llvm-upgrade/UpgradeParser.cpp.cvs:1.43
--- llvm/tools/llvm-upgrade/UpgradeParser.cpp.cvs:1.42	Sun Jan 14 18:26:17 2007
+++ llvm/tools/llvm-upgrade/UpgradeParser.cpp.cvs	Sun Jan 14 20:41:46 2007
@@ -415,49 +415,49 @@
 
 
 /// This type is used to keep track of the signedness of values. Instead
-/// of creating llvm::Value directly, the parser will create ValueInfo which
+/// of creating llvm::Value directly, the parser will create Value which
 /// associates a Value* with a Signedness indication.
-struct ValueInfo {
+struct Value {
   std::string* val;
-  const TypeInfo* type;
+  const Type* type;
   bool constant;
   bool isConstant() const { return constant; }
-  ~ValueInfo() { delete val; }
+  ~Value() { delete val; }
 };
 
 
 /// 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
+/// create instances of Type which retains the signedness indication so
 /// it can be used by the parser for upgrade decisions.
 /// For example if "uint" is encountered then the "first" field will be set 
 /// to "int32" and the "second" field will be set to "isUnsigned".  If the 
 /// type is not obsolete then "second" will be set to "isSignless".
-class TypeInfo {
+class Type {
 public:
-  static const TypeInfo* get(const std::string &newType, Types oldType);
-  static const TypeInfo* get(const std::string& newType, Types oldType, 
-                             const TypeInfo* eTy, const TypeInfo* rTy);
+  static const Type* get(const std::string &newType, TypeIDs oldType);
+  static const Type* get(const std::string& newType, TypeIDs oldType, 
+                             const Type* eTy, const Type* rTy);
 
-  static const TypeInfo* get(const std::string& newType, Types oldType, 
-                             const TypeInfo *eTy, uint64_t elems);
+  static const Type* get(const std::string& newType, TypeIDs oldType, 
+                             const Type *eTy, uint64_t elems);
 
-  static const TypeInfo* get(const std::string& newType, Types oldType, 
+  static const Type* get(const std::string& newType, TypeIDs oldType, 
                              TypeList* TL);
 
-  static const TypeInfo* get(const std::string& newType, const TypeInfo* resTy, 
+  static const Type* get(const std::string& newType, const Type* resTy, 
                              TypeList* TL);
 
-  const TypeInfo* resolve() const;
-  bool operator<(const TypeInfo& that) const;
+  const Type* resolve() const;
+  bool operator<(const Type& that) const;
 
-  bool sameNewTyAs(const TypeInfo* that) const {
+  bool sameNewTyAs(const Type* that) const {
     return this->newTy == that->newTy;
   }
 
-  bool sameOldTyAs(const TypeInfo* that) const;
+  bool sameOldTyAs(const Type* that) const;
 
-  Types getElementTy() const {
+  TypeIDs getElementTy() const {
     if (elemTy) {
       return elemTy->oldTy;
     }
@@ -469,16 +469,16 @@
     return atoi(&((getNewTy().c_str())[1])); // skip the slash
   }
 
-  typedef std::vector<const TypeInfo*> UpRefStack;
+  typedef std::vector<const Type*> UpRefStack;
   void getSignedness(unsigned &sNum, unsigned &uNum, UpRefStack& stk) const;
   std::string makeUniqueName(const std::string& BaseName) const;
 
   const std::string& getNewTy() const { return newTy; }
-  const TypeInfo* getResultType() const { return resultTy; }
-  const TypeInfo* getElementType() const { return elemTy; }
+  const Type* getResultType() const { return resultTy; }
+  const Type* getElementType() const { return elemTy; }
 
-  const TypeInfo* getPointerType() const {
-    return get(newTy + "*", PointerTy, this, (TypeInfo*)0);
+  const Type* getPointerType() const {
+    return get(newTy + "*", PointerTy, this, (Type*)0);
   }
 
   bool isUnresolved() const { return oldTy == UnresolvedTy; }
@@ -517,13 +517,13 @@
 
   unsigned getBitWidth() const;
 
-  const TypeInfo* getIndexedType(const ValueInfo*  VI) const;
+  const Type* getIndexedType(const Value*  V) const;
 
   unsigned getNumStructElements() const { 
     return (elements ? elements->size() : 0);
   }
 
-  const TypeInfo* getElement(unsigned idx) const {
+  const Type* getElement(unsigned idx) const {
     if (elements)
       if (idx < elements->size())
         return (*elements)[idx];
@@ -531,98 +531,98 @@
   }
 
 private:
-  TypeInfo() 
+  Type() 
     : newTy(), oldTy(UnresolvedTy), elemTy(0), resultTy(0), elements(0),
       nelems(0) {
   }
 
-  TypeInfo(const TypeInfo& that); // do not implement
-  TypeInfo& operator=(const TypeInfo& that); // do not implement
+  Type(const Type& that); // do not implement
+  Type& operator=(const Type& that); // do not implement
 
-  ~TypeInfo() { delete elements; }
+  ~Type() { delete elements; }
 
   struct ltfunctor
   {
-    bool operator()(const TypeInfo* X, const TypeInfo* Y) const {
+    bool operator()(const Type* X, const Type* Y) const {
       assert(X && "Can't compare null pointer");
       assert(Y && "Can't compare null pointer");
       return *X < *Y;
     }
   };
 
-  typedef std::set<const TypeInfo*, ltfunctor> TypeRegMap;
+  typedef std::set<const Type*, ltfunctor> TypeRegMap;
 
-  static const TypeInfo* add_new_type(TypeInfo* existing);
+  static const Type* add_new_type(Type* existing);
 
   std::string newTy;
-  Types oldTy;
-  TypeInfo *elemTy;
-  TypeInfo *resultTy;
+  TypeIDs oldTy;
+  Type *elemTy;
+  Type *resultTy;
   TypeList *elements;
   uint64_t nelems;
   static TypeRegMap registry;
 public:
-  typedef std::vector<const TypeInfo*> TypeVector;
-  typedef std::map<std::string,const TypeInfo*> TypeMap;
-  typedef std::map<const TypeInfo*,std::string> TypePlaneMap;
+  typedef std::vector<const Type*> TypeVector;
+  typedef std::map<std::string,const Type*> TypeMap;
+  typedef std::map<const Type*,std::string> TypePlaneMap;
   typedef std::map<std::string,TypePlaneMap> GlobalsTypeMap;
   static TypeVector EnumeratedTypes;
   static TypeMap NamedTypes;
   static GlobalsTypeMap Globals;
 };
 
-TypeInfo::TypeRegMap     TypeInfo::registry;
-TypeInfo::TypeVector     TypeInfo::EnumeratedTypes;
-TypeInfo::TypeMap        TypeInfo::NamedTypes;
-TypeInfo::GlobalsTypeMap TypeInfo::Globals;
+Type::TypeRegMap     Type::registry;
+Type::TypeVector     Type::EnumeratedTypes;
+Type::TypeMap        Type::NamedTypes;
+Type::GlobalsTypeMap Type::Globals;
 
-const TypeInfo* TypeInfo::get(const std::string &newType, Types oldType) {
-  TypeInfo* Ty = new TypeInfo();
+const Type* Type::get(const std::string &newType, TypeIDs oldType) {
+  Type* Ty = new Type();
   Ty->newTy = newType;
   Ty->oldTy = oldType;
   return add_new_type(Ty);
 }
 
-const TypeInfo* TypeInfo::get(const std::string& newType, Types oldType, 
-                              const TypeInfo* eTy, const TypeInfo* rTy) {
-  TypeInfo* Ty= new TypeInfo();
+const Type* Type::get(const std::string& newType, TypeIDs oldType, 
+                              const Type* eTy, const Type* rTy) {
+  Type* Ty= new Type();
   Ty->newTy = newType;
   Ty->oldTy = oldType;
-  Ty->elemTy = const_cast<TypeInfo*>(eTy);
-  Ty->resultTy = const_cast<TypeInfo*>(rTy);
+  Ty->elemTy = const_cast<Type*>(eTy);
+  Ty->resultTy = const_cast<Type*>(rTy);
   return add_new_type(Ty);
 }
 
-const TypeInfo* TypeInfo::get(const std::string& newType, Types oldType, 
-                              const TypeInfo *eTy, uint64_t elems) {
-  TypeInfo* Ty = new TypeInfo();
+const Type* Type::get(const std::string& newType, TypeIDs oldType, 
+                              const Type *eTy, uint64_t elems) {
+  Type* Ty = new Type();
   Ty->newTy = newType;
   Ty->oldTy = oldType;
-  Ty->elemTy = const_cast<TypeInfo*>(eTy);
+  Ty->elemTy = const_cast<Type*>(eTy);
   Ty->nelems = elems;
   return  add_new_type(Ty);
 }
 
-const TypeInfo* TypeInfo::get(const std::string& newType, Types oldType, 
+const Type* Type::get(const std::string& newType, TypeIDs oldType, 
                               TypeList* TL) {
-  TypeInfo* Ty = new TypeInfo();
+  Type* Ty = new Type();
   Ty->newTy = newType;
   Ty->oldTy = oldType;
   Ty->elements = TL;
   return add_new_type(Ty);
 }
 
-const TypeInfo* TypeInfo::get(const std::string& newType, const TypeInfo* resTy,
+const Type* Type::get(const std::string& newType, const Type* resTy,
                               TypeList* TL) {
-  TypeInfo* Ty = new TypeInfo();
+  Type* Ty = new Type();
   Ty->newTy = newType;
   Ty->oldTy = FunctionTy;
-  Ty->resultTy = const_cast<TypeInfo*>(resTy);
+  Ty->resultTy = const_cast<Type*>(resTy);
   Ty->elements = TL;
   return add_new_type(Ty);
 }
 
-const TypeInfo* TypeInfo::resolve() const {
+const Type* Type::resolve() const {
   if (isUnresolved()) {
     if (getNewTy()[0] == '%' && isdigit(newTy[1])) {
       unsigned ref = atoi(&((newTy.c_str())[1])); // skip the %
@@ -634,7 +634,7 @@
         yyerror(msg.c_str());
       }
     } else {
-      TypeInfo::TypeMap::iterator I = NamedTypes.find(newTy);
+      Type::TypeMap::iterator I = NamedTypes.find(newTy);
       if (I != NamedTypes.end()) {
         return I->second;
       } else {
@@ -648,7 +648,7 @@
   return this;
 }
 
-bool TypeInfo::operator<(const TypeInfo& that) const {
+bool Type::operator<(const Type& that) const {
   if (this == &that)
     return false;
   if (oldTy != that.oldTy)
@@ -664,13 +664,13 @@
       if (this->nelems != that.nelems)
         return nelems < that.nelems;
     case PointerTy: {
-      const TypeInfo* thisTy = this->elemTy;
-      const TypeInfo* thatTy = that.elemTy;
+      const Type* thisTy = this->elemTy;
+      const Type* thatTy = that.elemTy;
       return *thisTy < *thatTy;
     }
     case FunctionTy: {
-      const TypeInfo* thisTy = this->resultTy;
-      const TypeInfo* thatTy = that.resultTy;
+      const Type* thisTy = this->resultTy;
+      const Type* thatTy = that.resultTy;
       if (!thisTy->sameOldTyAs(thatTy))
         return *thisTy < *thatTy;
       /* FALL THROUGH */
@@ -680,8 +680,8 @@
       if (elements->size() != that.elements->size())
         return elements->size() < that.elements->size();
       for (unsigned i = 0; i < elements->size(); i++) {
-        const TypeInfo* thisTy = (*this->elements)[i];
-        const TypeInfo* thatTy = (*that.elements)[i];
+        const Type* thisTy = (*this->elements)[i];
+        const Type* thatTy = (*that.elements)[i];
         if (!thisTy->sameOldTyAs(thatTy))
           return *thisTy < *thatTy;
       }
@@ -695,7 +695,7 @@
   return false; 
 }
 
-bool TypeInfo::sameOldTyAs(const TypeInfo* that) const {
+bool Type::sameOldTyAs(const Type* that) const {
   if (that == 0)
     return false;
   if ( this == that ) 
@@ -709,13 +709,13 @@
         return false;
       /* FALL THROUGH */
     case PointerTy: {
-      const TypeInfo* thisTy = this->elemTy;
-      const TypeInfo* thatTy = that->elemTy;
+      const Type* thisTy = this->elemTy;
+      const Type* thatTy = that->elemTy;
       return thisTy->sameOldTyAs(thatTy);
     }
     case FunctionTy: {
-      const TypeInfo* thisTy = this->resultTy;
-      const TypeInfo* thatTy = that->resultTy;
+      const Type* thisTy = this->resultTy;
+      const Type* thatTy = that->resultTy;
       if (!thisTy->sameOldTyAs(thatTy))
         return false;
       /* FALL THROUGH */
@@ -725,8 +725,8 @@
       if (elements->size() != that->elements->size())
         return false;
       for (unsigned i = 0; i < elements->size(); i++) {
-        const TypeInfo* thisTy = (*this->elements)[i];
-        const TypeInfo* thatTy = (*that->elements)[i];
+        const Type* thisTy = (*this->elements)[i];
+        const Type* thatTy = (*that->elements)[i];
         if (!thisTy->sameOldTyAs(thatTy))
           return false;
       }
@@ -740,7 +740,7 @@
   return true;
 }
 
-bool TypeInfo::isUnresolvedDeep() const {
+bool Type::isUnresolvedDeep() const {
   switch (oldTy) {
     case UnresolvedTy: 
       return true;
@@ -759,7 +759,7 @@
   }
 }
 
-unsigned TypeInfo::getBitWidth() const {
+unsigned Type::getBitWidth() const {
   switch (oldTy) {
     default:
     case LabelTy:
@@ -784,12 +784,12 @@
   }
 }
 
-const TypeInfo* TypeInfo::getIndexedType(const ValueInfo*  VI) const {
+const Type* Type::getIndexedType(const Value*  V) const {
   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());
+    if (V->isConstant() && V->type->isInteger()) {
+      size_t pos = V->val->find(' ') + 1;
+      if (pos < V->val->size()) {
+        uint64_t idx = atoi(V->val->substr(pos).c_str());
         return (*elements)[idx];
       } else {
         yyerror("Invalid value for constant integer");
@@ -806,7 +806,7 @@
   return 0;
 }
 
-void TypeInfo::getSignedness(unsigned &sNum, unsigned &uNum, 
+void Type::getSignedness(unsigned &sNum, unsigned &uNum, 
                              UpRefStack& stack) const {
   switch (oldTy) {
     default:
@@ -834,7 +834,7 @@
       return;
     }
     case UnresolvedTy: {
-      const TypeInfo* Ty = this->resolve();
+      const Type* Ty = this->resolve();
       // Let's not recurse.
       UpRefStack::const_iterator I = stack.begin(), E = stack.end();
       for ( ; I != E && *I != Ty; ++I) 
@@ -855,7 +855,7 @@
   return Name + Suffix;
 }
 
-std::string TypeInfo::makeUniqueName(const std::string& BaseName) const {
+std::string Type::makeUniqueName(const std::string& BaseName) const {
   if (BaseName == "\"alloca point\"")
     return BaseName;
   switch (oldTy) {
@@ -876,14 +876,14 @@
     case PointerTy:
     case PackedTy: 
     case ArrayTy: {
-      TypeInfo::UpRefStack stack;
+      Type::UpRefStack stack;
       elemTy->resolve()->getSignedness(sNum, uNum, stack);
       break;
     }
     case StructTy:
     case PackedStructTy: {
       for (unsigned i = 0; i < elements->size(); i++) {
-        TypeInfo::UpRefStack stack;
+        Type::UpRefStack stack;
         (*elements)[i]->resolve()->getSignedness(sNum, uNum, stack);
       }
       break;
@@ -910,7 +910,7 @@
   return AddSuffix(BaseName, Suffix);
 }
 
-TypeInfo& TypeInfo::operator=(const TypeInfo& that) {
+Type& Type::operator=(const Type& that) {
   oldTy = that.oldTy;
   nelems = that.nelems;
   newTy = that.newTy;
@@ -925,7 +925,7 @@
   return *this;
 }
 
-const TypeInfo* TypeInfo::add_new_type(TypeInfo* newTy) {
+const Type* Type::add_new_type(Type* newTy) {
   TypeRegMap::iterator I = registry.find(newTy);
   if (I != registry.end()) {
     delete newTy;
@@ -935,11 +935,14 @@
   return newTy;
 }
 
+class Instruction {
+};
+
 /// This type is used to keep track of the signedness of constants.
-struct ConstInfo {
+struct Constant {
   std::string *cnst;
-  const TypeInfo *type;
-  ~ConstInfo() { delete cnst; }
+  const Type *type;
+  ~Constant() { delete cnst; }
 };
 
 /// This variable provides a counter for unique names. It is used in various
@@ -961,8 +964,8 @@
 
 
 
-const char* getCastOpcode(std::string& Source, const TypeInfo* SrcTy, 
-                          const TypeInfo* DstTy) {
+const char* getCastOpcode(std::string& Source, const Type* SrcTy, 
+                          const Type* DstTy) {
   unsigned SrcBits = SrcTy->getBitWidth();
   unsigned DstBits = DstTy->getBitWidth();
   const char* opcode = "bitcast";
@@ -1038,8 +1041,8 @@
   return opcode;
 }
 
-std::string getCastUpgrade(const std::string& Src, const TypeInfo* SrcTy,
-                           const TypeInfo* DstTy, bool isConst) {
+std::string getCastUpgrade(const std::string& Src, const Type* SrcTy,
+                           const Type* DstTy, bool isConst) {
   std::string Result;
   std::string Source = Src;
   if (SrcTy->isFloatingPoint() && DstTy->isPointer()) {
@@ -1048,12 +1051,12 @@
     if (isConst)
       Source = "i64 fptoui(" + Source + " to i64)";
     else {
-      *O << "    %cast_upgrade" << UniqueNameCounter++ << " = fptoui " 
+      *O << "    %cast_upgrade" << UniqueNameCounter << " = fptoui " 
          << Source << " to i64\n";
-      Source = "i64 %cast_upgrade" + llvm::utostr(UniqueNameCounter);
+      Source = "i64 %cast_upgrade" + llvm::utostr(UniqueNameCounter++);
     }
     // Update the SrcTy for the getCastOpcode call below
-    SrcTy = TypeInfo::get("i64", ULongTy);
+    SrcTy = Type::get("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
@@ -1079,9 +1082,9 @@
   return Result;
 }
 
-const char* getDivRemOpcode(const std::string& opcode, const TypeInfo* TI) {
+const char* getDivRemOpcode(const std::string& opcode, const Type* TI) {
   const char* op = opcode.c_str();
-  const TypeInfo* Ty = TI->resolve();
+  const Type* Ty = TI->resolve();
   if (Ty->isPacked())
     Ty = Ty->getElementType();
   if (opcode == "div")
@@ -1105,7 +1108,7 @@
   return op;
 }
 
-std::string getCompareOp(const std::string& setcc, const TypeInfo* TI) {
+std::string getCompareOp(const std::string& setcc, const Type* TI) {
   assert(setcc.length() == 5);
   char cc1 = setcc[3];
   char cc2 = setcc[4];
@@ -1135,10 +1138,10 @@
   return result;
 }
 
-const TypeInfo* getFunctionReturnType(const TypeInfo* PFTy) {
+const Type* getFunctionReturnType(const Type* PFTy) {
   PFTy = PFTy->resolve();
   if (PFTy->isPointer()) {
-    const TypeInfo* ElemTy = PFTy->getElementType();
+    const Type* ElemTy = PFTy->getElementType();
     ElemTy = ElemTy->resolve();
     if (ElemTy->isFunction())
       return ElemTy->getResultType();
@@ -1148,18 +1151,18 @@
   return PFTy;
 }
 
-const TypeInfo* ResolveUpReference(const TypeInfo* Ty, 
-                                   TypeInfo::UpRefStack* stack) {
+const Type* ResolveUpReference(const Type* Ty, 
+                                   Type::UpRefStack* stack) {
   assert(Ty->isUpReference() && "Can't resolve a non-upreference");
   unsigned upref = Ty->getUpRefNum();
   assert(upref < stack->size() && "Invalid up reference");
   return (*stack)[upref - stack->size() - 1];
 }
 
-const TypeInfo* getGEPIndexedType(const TypeInfo* PTy, ValueList* idxs) {
-  const TypeInfo* Result = PTy = PTy->resolve();
+const Type* getGEPIndexedType(const Type* PTy, ValueList* idxs) {
+  const Type* Result = PTy = PTy->resolve();
   assert(PTy->isPointer() && "GEP Operand is not a pointer?");
-  TypeInfo::UpRefStack stack;
+  Type::UpRefStack stack;
   for (unsigned i = 0; i < idxs->size(); ++i) {
     if (Result->isComposite()) {
       Result = Result->getIndexedType((*idxs)[i]);
@@ -1184,7 +1187,7 @@
 // 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.
-std::string getUniqueName(const std::string *Name, const TypeInfo* Ty,
+std::string getUniqueName(const std::string *Name, const Type* Ty,
                           bool isGlobal = false, bool isDef = false) {
 
   // If its not a symbolic name, don't modify it, probably a constant val.
@@ -1199,10 +1202,10 @@
   Ty = Ty->resolve(); 
 
   // If its a global name, get its uniquified name, if any
-  TypeInfo::GlobalsTypeMap::iterator GI = TypeInfo::Globals.find(*Name);
-  if (GI != TypeInfo::Globals.end()) {
-    TypeInfo::TypePlaneMap::iterator TPI = GI->second.begin();
-    TypeInfo::TypePlaneMap::iterator TPE = GI->second.end();
+  Type::GlobalsTypeMap::iterator GI = Type::Globals.find(*Name);
+  if (GI != Type::Globals.end()) {
+    Type::TypePlaneMap::iterator TPI = GI->second.begin();
+    Type::TypePlaneMap::iterator TPE = GI->second.end();
     for ( ; TPI != TPE ; ++TPI) {
       if (TPI->first->sameNewTyAs(Ty)) 
         return TPI->second;
@@ -1225,13 +1228,13 @@
 }
 
 std::string getGlobalName(const std::string* Name, const std::string Linkage,
-                          const TypeInfo* Ty, bool isConstant) {
+                          const Type* Ty, bool isConstant) {
   // Default to given name
   std::string Result = *Name; 
   // Look up the name in the Globals Map
-  TypeInfo::GlobalsTypeMap::iterator GI = TypeInfo::Globals.find(*Name);
+  Type::GlobalsTypeMap::iterator GI = Type::Globals.find(*Name);
   // Did we see this global name before?
-  if (GI != TypeInfo::Globals.end()) {
+  if (GI != Type::Globals.end()) {
     if (Ty->isUnresolvedDeep()) {
       // The Gval's type is unresolved. Consequently, we can't disambiguate it
       // by type. We'll just change its name and emit a warning.
@@ -1242,7 +1245,7 @@
       Result += llvm::utostr(UniqueNameCounter);
       return Result;
     } else {
-      TypeInfo::TypePlaneMap::iterator TPI = GI->second.find(Ty);
+      Type::TypePlaneMap::iterator TPI = GI->second.find(Ty);
       if (TPI != GI->second.end()) {
         // We found an existing name of the same old type. This isn't allowed 
         // in LLVM 2.0. Consequently, we must alter the name of the global so it
@@ -1257,8 +1260,8 @@
         // There isn't an existing definition for this name according to the
         // old types. Now search the TypePlanMap for types with the same new
         // name. 
-        TypeInfo::TypePlaneMap::iterator TPI = GI->second.begin();
-        TypeInfo::TypePlaneMap::iterator TPE = GI->second.end();
+        Type::TypePlaneMap::iterator TPI = GI->second.begin();
+        Type::TypePlaneMap::iterator TPE = GI->second.end();
         for ( ; TPI != TPE; ++TPI) {
           if (TPI->first->sameNewTyAs(Ty)) {
             // The new types are the same but the old types are different so 
@@ -1298,23 +1301,23 @@
   // Its a new global name, if it is external we can't change it
   if (isConstant || Linkage == "external" || Linkage == "dllimport" || 
       Linkage == "extern_weak" || Linkage == "") {
-    TypeInfo::Globals[Result][Ty] = Result;
+    Type::Globals[Result][Ty] = Result;
     return Result;
   }
 
   // Its a new global name, and it is internal, change the name to make it
   // unique for its type.
   // Result = getUniqueName(Name, Ty);
-  TypeInfo::Globals[*Name][Ty] = Result;
+  Type::Globals[*Name][Ty] = Result;
   return Result;
 }
 
 } // End anonymous namespace
 
-// This function is used by the Lexer to create a TypeInfo. It can't be
+// This function is used by the Lexer to create a Type. It can't be
 // in the anonymous namespace.
-const TypeInfo* getTypeInfo(const std::string& newTy, Types oldTy) {
-  return TypeInfo::get(newTy, oldTy);
+const Type* getType(const std::string& newTy, TypeIDs oldTy) {
+  return Type::get(newTy, oldTy);
 }
 
 
@@ -1338,17 +1341,17 @@
 #endif
 
 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-#line 968 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 971 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
 typedef union YYSTYPE {
   std::string*    String;
-  const TypeInfo* Type;
-  ValueInfo*      Value;
-  ConstInfo*      Const;
+  const Type*     Ty;
+  Value*          Val;
+  Constant*       Const;
   ValueList*      ValList;
   TypeList*       TypeVec;
 } YYSTYPE;
 /* Line 196 of yacc.c.  */
-#line 1352 "UpgradeParser.tab.c"
+#line 1355 "UpgradeParser.tab.c"
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
 # define YYSTYPE_IS_TRIVIAL 1
@@ -1360,7 +1363,7 @@
 
 
 /* Line 219 of yacc.c.  */
-#line 1364 "UpgradeParser.tab.c"
+#line 1367 "UpgradeParser.tab.c"
 
 #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
 # define YYSIZE_T __SIZE_TYPE__
@@ -1715,37 +1718,37 @@
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const unsigned short int yyrline[] =
 {
-       0,  1033,  1033,  1033,  1034,  1034,  1038,  1038,  1038,  1038,
-    1038,  1038,  1038,  1039,  1039,  1039,  1039,  1040,  1040,  1040,
-    1041,  1041,  1041,  1041,  1041,  1041,  1042,  1042,  1042,  1042,
-    1042,  1042,  1042,  1042,  1042,  1042,  1043,  1043,  1043,  1043,
-    1043,  1043,  1043,  1043,  1043,  1043,  1044,  1044,  1044,  1044,
-    1044,  1044,  1045,  1045,  1045,  1045,  1046,  1046,  1046,  1046,
-    1046,  1046,  1046,  1047,  1047,  1047,  1047,  1047,  1047,  1052,
-    1052,  1052,  1052,  1053,  1053,  1053,  1053,  1054,  1054,  1055,
-    1055,  1058,  1061,  1066,  1066,  1066,  1066,  1066,  1066,  1067,
-    1068,  1071,  1071,  1071,  1071,  1071,  1072,  1073,  1078,  1083,
-    1084,  1087,  1088,  1096,  1102,  1103,  1106,  1107,  1116,  1117,
-    1130,  1130,  1131,  1131,  1132,  1136,  1136,  1136,  1136,  1136,
-    1136,  1136,  1137,  1137,  1137,  1137,  1137,  1139,  1142,  1145,
-    1148,  1152,  1165,  1171,  1177,  1187,  1190,  1200,  1203,  1211,
-    1215,  1222,  1223,  1228,  1233,  1243,  1250,  1256,  1263,  1270,
-    1277,  1283,  1290,  1297,  1305,  1312,  1319,  1326,  1333,  1340,
-    1347,  1355,  1369,  1381,  1386,  1392,  1397,  1403,  1408,  1413,
-    1421,  1426,  1431,  1441,  1446,  1451,  1451,  1461,  1466,  1469,
-    1474,  1478,  1482,  1484,  1484,  1487,  1497,  1502,  1507,  1517,
-    1527,  1537,  1547,  1552,  1557,  1562,  1564,  1564,  1567,  1572,
-    1579,  1584,  1591,  1598,  1603,  1604,  1612,  1612,  1613,  1613,
-    1615,  1624,  1628,  1632,  1635,  1640,  1643,  1646,  1669,  1670,
-    1673,  1684,  1685,  1687,  1696,  1697,  1698,  1702,  1702,  1716,
-    1717,  1720,  1720,  1720,  1720,  1720,  1720,  1720,  1721,  1722,
-    1727,  1728,  1737,  1737,  1741,  1747,  1758,  1767,  1770,  1778,
-    1782,  1787,  1790,  1796,  1796,  1798,  1803,  1808,  1813,  1821,
-    1831,  1840,  1862,  1867,  1873,  1879,  1887,  1905,  1914,  1924,
-    1928,  1935,  1936,  1940,  1945,  1948,  1959,  1969,  1980,  1990,
-    2000,  2011,  2041,  2050,  2057,  2066,  2073,  2080,  2086,  2137,
-    2142,  2143,  2147,  2148,  2151,  2160,  2170,  2179,  2190,  2197,
-    2208,  2219
+       0,  1036,  1036,  1036,  1037,  1037,  1041,  1041,  1041,  1041,
+    1041,  1041,  1041,  1042,  1042,  1042,  1042,  1043,  1043,  1043,
+    1044,  1044,  1044,  1044,  1044,  1044,  1045,  1045,  1045,  1045,
+    1045,  1045,  1045,  1045,  1045,  1045,  1046,  1046,  1046,  1046,
+    1046,  1046,  1046,  1046,  1046,  1046,  1047,  1047,  1047,  1047,
+    1047,  1047,  1048,  1048,  1048,  1048,  1049,  1049,  1049,  1049,
+    1049,  1049,  1049,  1050,  1050,  1050,  1050,  1050,  1050,  1055,
+    1055,  1055,  1055,  1056,  1056,  1056,  1056,  1057,  1057,  1058,
+    1058,  1061,  1064,  1069,  1069,  1069,  1069,  1069,  1069,  1070,
+    1071,  1074,  1074,  1074,  1074,  1074,  1075,  1076,  1081,  1086,
+    1087,  1090,  1091,  1099,  1105,  1106,  1109,  1110,  1119,  1120,
+    1133,  1133,  1134,  1134,  1135,  1139,  1139,  1139,  1139,  1139,
+    1139,  1139,  1140,  1140,  1140,  1140,  1140,  1142,  1145,  1148,
+    1151,  1155,  1168,  1174,  1180,  1190,  1193,  1203,  1206,  1214,
+    1218,  1225,  1226,  1231,  1236,  1246,  1253,  1259,  1266,  1273,
+    1280,  1286,  1293,  1300,  1308,  1315,  1322,  1329,  1336,  1343,
+    1350,  1358,  1372,  1384,  1389,  1395,  1400,  1406,  1411,  1416,
+    1424,  1429,  1434,  1444,  1449,  1454,  1454,  1464,  1469,  1472,
+    1477,  1481,  1485,  1487,  1487,  1490,  1500,  1505,  1510,  1520,
+    1530,  1540,  1550,  1555,  1560,  1565,  1567,  1567,  1570,  1575,
+    1582,  1587,  1594,  1601,  1606,  1607,  1615,  1615,  1616,  1616,
+    1618,  1627,  1631,  1635,  1638,  1643,  1646,  1649,  1672,  1673,
+    1676,  1687,  1688,  1690,  1699,  1700,  1701,  1705,  1705,  1719,
+    1720,  1723,  1723,  1723,  1723,  1723,  1723,  1723,  1724,  1725,
+    1730,  1731,  1740,  1740,  1744,  1750,  1761,  1770,  1773,  1781,
+    1785,  1790,  1793,  1799,  1799,  1801,  1806,  1811,  1816,  1824,
+    1834,  1843,  1865,  1870,  1876,  1882,  1890,  1908,  1917,  1927,
+    1931,  1938,  1939,  1943,  1948,  1951,  1962,  1972,  1983,  1993,
+    2003,  2014,  2044,  2053,  2060,  2069,  2076,  2083,  2089,  2140,
+    2145,  2146,  2150,  2151,  2154,  2163,  2173,  2182,  2193,  2200,
+    2211,  2222
 };
 #endif
 
@@ -3092,26 +3095,26 @@
   switch (yyn)
     {
         case 81:
-#line 1058 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1061 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = (yyvsp[-1].String);
   ;}
     break;
 
   case 82:
-#line 1061 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1064 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = new std::string(""); 
   ;}
     break;
 
   case 90:
-#line 1068 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1071 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(""); ;}
     break;
 
   case 97:
-#line 1073 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1076 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     { 
     *(yyvsp[-1].String) += *(yyvsp[0].String); 
     delete (yyvsp[0].String);
@@ -3120,27 +3123,27 @@
     break;
 
   case 98:
-#line 1078 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1081 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(""); ;}
     break;
 
   case 99:
-#line 1083 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1086 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 100:
-#line 1084 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1087 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     { *(yyvsp[-1].String) += " " + *(yyvsp[0].String); delete (yyvsp[0].String); (yyval.String) = (yyvsp[-1].String); ;}
     break;
 
   case 101:
-#line 1087 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1090 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 102:
-#line 1088 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1091 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyvsp[-1].String)->insert(0, ", "); 
     *(yyvsp[-1].String) += " " + *(yyvsp[0].String);
@@ -3150,7 +3153,7 @@
     break;
 
   case 103:
-#line 1096 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1099 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     { 
     *(yyvsp[-1].String) += " " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3159,17 +3162,17 @@
     break;
 
   case 104:
-#line 1102 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1105 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 106:
-#line 1106 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1109 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 107:
-#line 1107 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1110 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
       (yyvsp[-1].String)->insert(0, ", ");
       if (!(yyvsp[0].String)->empty())
@@ -3180,7 +3183,7 @@
     break;
 
   case 109:
-#line 1117 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1120 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
       *(yyvsp[-1].String) += " " + *(yyvsp[0].String);
       delete (yyvsp[0].String);
@@ -3189,38 +3192,38 @@
     break;
 
   case 127:
-#line 1139 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1142 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     { 
-    (yyval.Type) = TypeInfo::get(*(yyvsp[0].String), OpaqueTy);
+    (yyval.Ty) = Type::get(*(yyvsp[0].String), OpaqueTy);
   ;}
     break;
 
   case 128:
-#line 1142 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1145 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     { 
-    (yyval.Type) = TypeInfo::get(*(yyvsp[0].String), UnresolvedTy);
+    (yyval.Ty) = Type::get(*(yyvsp[0].String), UnresolvedTy);
   ;}
     break;
 
   case 129:
-#line 1145 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1148 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     { 
-    (yyval.Type) = (yyvsp[0].Type); 
+    (yyval.Ty) = (yyvsp[0].Ty); 
   ;}
     break;
 
   case 130:
-#line 1148 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1151 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {                   // Type UpReference
     (yyvsp[0].String)->insert(0, "\\");
-    (yyval.Type) = TypeInfo::get(*(yyvsp[0].String), UpRefTy);
+    (yyval.Ty) = Type::get(*(yyvsp[0].String), UpRefTy);
   ;}
     break;
 
   case 131:
-#line 1152 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1155 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {           // Function derived type?
-    std::string newTy( (yyvsp[-3].Type)->getNewTy() + "(");
+    std::string newTy( (yyvsp[-3].Ty)->getNewTy() + "(");
     for (unsigned i = 0; i < (yyvsp[-1].TypeVec)->size(); ++i) {
       if (i != 0)
         newTy +=  ", ";
@@ -3230,32 +3233,32 @@
         newTy += (*(yyvsp[-1].TypeVec))[i]->getNewTy();
     }
     newTy += ")";
-    (yyval.Type) = TypeInfo::get(newTy, (yyvsp[-3].Type), (yyvsp[-1].TypeVec));
+    (yyval.Ty) = Type::get(newTy, (yyvsp[-3].Ty), (yyvsp[-1].TypeVec));
   ;}
     break;
 
   case 132:
-#line 1165 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1168 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {          // Sized array type?
     uint64_t elems = atoi((yyvsp[-3].String)->c_str());
     (yyvsp[-3].String)->insert(0,"[ ");
-    *(yyvsp[-3].String) += " x " + (yyvsp[-1].Type)->getNewTy() + " ]";
-    (yyval.Type) = TypeInfo::get(*(yyvsp[-3].String), ArrayTy, (yyvsp[-1].Type), elems);
+    *(yyvsp[-3].String) += " x " + (yyvsp[-1].Ty)->getNewTy() + " ]";
+    (yyval.Ty) = Type::get(*(yyvsp[-3].String), ArrayTy, (yyvsp[-1].Ty), elems);
   ;}
     break;
 
   case 133:
-#line 1171 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1174 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {          // Packed array type?
     uint64_t elems = atoi((yyvsp[-3].String)->c_str());
     (yyvsp[-3].String)->insert(0,"< ");
-    *(yyvsp[-3].String) += " x " + (yyvsp[-1].Type)->getNewTy() + " >";
-    (yyval.Type) = TypeInfo::get(*(yyvsp[-3].String), PackedTy, (yyvsp[-1].Type), elems);
+    *(yyvsp[-3].String) += " x " + (yyvsp[-1].Ty)->getNewTy() + " >";
+    (yyval.Ty) = Type::get(*(yyvsp[-3].String), PackedTy, (yyvsp[-1].Ty), elems);
   ;}
     break;
 
   case 134:
-#line 1177 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1180 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {                        // Structure type?
     std::string newTy("{");
     for (unsigned i = 0; i < (yyvsp[-1].TypeVec)->size(); ++i) {
@@ -3264,19 +3267,19 @@
       newTy += (*(yyvsp[-1].TypeVec))[i]->getNewTy();
     }
     newTy += "}";
-    (yyval.Type) = TypeInfo::get(newTy, StructTy, (yyvsp[-1].TypeVec));
+    (yyval.Ty) = Type::get(newTy, StructTy, (yyvsp[-1].TypeVec));
   ;}
     break;
 
   case 135:
-#line 1187 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1190 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {                                  // Empty structure type?
-    (yyval.Type) = TypeInfo::get("{}", StructTy, new TypeList());
+    (yyval.Ty) = Type::get("{}", StructTy, new TypeList());
   ;}
     break;
 
   case 136:
-#line 1190 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1193 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {                // Packed Structure type?
     std::string newTy("<{");
     for (unsigned i = 0; i < (yyvsp[-2].TypeVec)->size(); ++i) {
@@ -3285,266 +3288,266 @@
       newTy += (*(yyvsp[-2].TypeVec))[i]->getNewTy();
     }
     newTy += "}>";
-    (yyval.Type) = TypeInfo::get(newTy, PackedStructTy, (yyvsp[-2].TypeVec));
+    (yyval.Ty) = Type::get(newTy, PackedStructTy, (yyvsp[-2].TypeVec));
   ;}
     break;
 
   case 137:
-#line 1200 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1203 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {                          // Empty packed structure type?
-    (yyval.Type) = TypeInfo::get("<{}>", PackedStructTy, new TypeList());
+    (yyval.Ty) = Type::get("<{}>", PackedStructTy, new TypeList());
   ;}
     break;
 
   case 138:
-#line 1203 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1206 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {                             // Pointer type?
-    (yyval.Type) = (yyvsp[-1].Type)->getPointerType();
+    (yyval.Ty) = (yyvsp[-1].Ty)->getPointerType();
   ;}
     break;
 
   case 139:
-#line 1211 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1214 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.TypeVec) = new TypeList();
-    (yyval.TypeVec)->push_back((yyvsp[0].Type));
+    (yyval.TypeVec)->push_back((yyvsp[0].Ty));
   ;}
     break;
 
   case 140:
-#line 1215 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1218 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.TypeVec) = (yyvsp[-2].TypeVec);
-    (yyval.TypeVec)->push_back((yyvsp[0].Type));
+    (yyval.TypeVec)->push_back((yyvsp[0].Ty));
   ;}
     break;
 
   case 142:
-#line 1223 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1226 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.TypeVec) = (yyvsp[-2].TypeVec);
-    (yyval.TypeVec)->push_back(TypeInfo::get("void",VoidTy));
+    (yyval.TypeVec)->push_back(Type::get("void",VoidTy));
     delete (yyvsp[0].String);
   ;}
     break;
 
   case 143:
-#line 1228 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1231 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.TypeVec) = new TypeList();
-    (yyval.TypeVec)->push_back(TypeInfo::get("void",VoidTy));
+    (yyval.TypeVec)->push_back(Type::get("void",VoidTy));
     delete (yyvsp[0].String);
   ;}
     break;
 
   case 144:
-#line 1233 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1236 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.TypeVec) = new TypeList();
   ;}
     break;
 
   case 145:
-#line 1243 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1246 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     { // Nonempty unsized arr
-    (yyval.Const) = new ConstInfo;
-    (yyval.Const)->type = (yyvsp[-3].Type);
-    (yyval.Const)->cnst = new std::string((yyvsp[-3].Type)->getNewTy());
+    (yyval.Const) = new Constant;
+    (yyval.Const)->type = (yyvsp[-3].Ty);
+    (yyval.Const)->cnst = new std::string((yyvsp[-3].Ty)->getNewTy());
     *(yyval.Const)->cnst += " [ " + *(yyvsp[-1].String) + " ]";
     delete (yyvsp[-1].String);
   ;}
     break;
 
   case 146:
-#line 1250 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1253 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
-    (yyval.Const) = new ConstInfo;
-    (yyval.Const)->type = (yyvsp[-2].Type);
-    (yyval.Const)->cnst = new std::string((yyvsp[-2].Type)->getNewTy());
+    (yyval.Const) = new Constant;
+    (yyval.Const)->type = (yyvsp[-2].Ty);
+    (yyval.Const)->cnst = new std::string((yyvsp[-2].Ty)->getNewTy());
     *(yyval.Const)->cnst += "[ ]";
   ;}
     break;
 
   case 147:
-#line 1256 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1259 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
-    (yyval.Const) = new ConstInfo;
-    (yyval.Const)->type = (yyvsp[-2].Type);
-    (yyval.Const)->cnst = new std::string((yyvsp[-2].Type)->getNewTy());
+    (yyval.Const) = new Constant;
+    (yyval.Const)->type = (yyvsp[-2].Ty);
+    (yyval.Const)->cnst = new std::string((yyvsp[-2].Ty)->getNewTy());
     *(yyval.Const)->cnst += " c" + *(yyvsp[0].String);
     delete (yyvsp[0].String);
   ;}
     break;
 
   case 148:
-#line 1263 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1266 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     { // Nonempty unsized arr
-    (yyval.Const) = new ConstInfo;
-    (yyval.Const)->type = (yyvsp[-3].Type);
-    (yyval.Const)->cnst = new std::string((yyvsp[-3].Type)->getNewTy());
+    (yyval.Const) = new Constant;
+    (yyval.Const)->type = (yyvsp[-3].Ty);
+    (yyval.Const)->cnst = new std::string((yyvsp[-3].Ty)->getNewTy());
     *(yyval.Const)->cnst += " < " + *(yyvsp[-1].String) + " >";
     delete (yyvsp[-1].String);
   ;}
     break;
 
   case 149:
-#line 1270 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1273 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
-    (yyval.Const) = new ConstInfo;
-    (yyval.Const)->type = (yyvsp[-3].Type);
-    (yyval.Const)->cnst = new std::string((yyvsp[-3].Type)->getNewTy());
+    (yyval.Const) = new Constant;
+    (yyval.Const)->type = (yyvsp[-3].Ty);
+    (yyval.Const)->cnst = new std::string((yyvsp[-3].Ty)->getNewTy());
     *(yyval.Const)->cnst += " { " + *(yyvsp[-1].String) + " }";
     delete (yyvsp[-1].String);
   ;}
     break;
 
   case 150:
-#line 1277 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1280 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
-    (yyval.Const) = new ConstInfo;
-    (yyval.Const)->type = (yyvsp[-2].Type);
-    (yyval.Const)->cnst = new std::string((yyvsp[-2].Type)->getNewTy());
+    (yyval.Const) = new Constant;
+    (yyval.Const)->type = (yyvsp[-2].Ty);
+    (yyval.Const)->cnst = new std::string((yyvsp[-2].Ty)->getNewTy());
     *(yyval.Const)->cnst += " {}";
   ;}
     break;
 
   case 151:
-#line 1283 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1286 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
-    (yyval.Const) = new ConstInfo;
-    (yyval.Const)->type = (yyvsp[-1].Type);
-    (yyval.Const)->cnst = new std::string((yyvsp[-1].Type)->getNewTy());
+    (yyval.Const) = new Constant;
+    (yyval.Const)->type = (yyvsp[-1].Ty);
+    (yyval.Const)->cnst = new std::string((yyvsp[-1].Ty)->getNewTy());
     *(yyval.Const)->cnst +=  " " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
   ;}
     break;
 
   case 152:
-#line 1290 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1293 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
-    (yyval.Const) = new ConstInfo;
-    (yyval.Const)->type = (yyvsp[-1].Type);
-    (yyval.Const)->cnst = new std::string((yyvsp[-1].Type)->getNewTy());
+    (yyval.Const) = new Constant;
+    (yyval.Const)->type = (yyvsp[-1].Ty);
+    (yyval.Const)->cnst = new std::string((yyvsp[-1].Ty)->getNewTy());
     *(yyval.Const)->cnst += " " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
   ;}
     break;
 
   case 153:
-#line 1297 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1300 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
-    (yyval.Const) = new ConstInfo;
-    std::string Name = getUniqueName((yyvsp[0].String), (yyvsp[-1].Type)->resolve(), true);
-    (yyval.Const)->type = (yyvsp[-1].Type);
-    (yyval.Const)->cnst = new std::string((yyvsp[-1].Type)->getNewTy());
+    (yyval.Const) = new Constant;
+    std::string Name = getUniqueName((yyvsp[0].String), (yyvsp[-1].Ty)->resolve(), true);
+    (yyval.Const)->type = (yyvsp[-1].Ty);
+    (yyval.Const)->cnst = new std::string((yyvsp[-1].Ty)->getNewTy());
     *(yyval.Const)->cnst += " " + Name;
     delete (yyvsp[0].String);
   ;}
     break;
 
   case 154:
-#line 1305 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1308 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
-    (yyval.Const) = new ConstInfo;
-    (yyval.Const)->type = (yyvsp[-1].Type);
-    (yyval.Const)->cnst = new std::string((yyvsp[-1].Type)->getNewTy());
+    (yyval.Const) = new Constant;
+    (yyval.Const)->type = (yyvsp[-1].Ty);
+    (yyval.Const)->cnst = new std::string((yyvsp[-1].Ty)->getNewTy());
     *(yyval.Const)->cnst += " " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
   ;}
     break;
 
   case 155:
-#line 1312 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1315 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
-    (yyval.Const) = new ConstInfo;
-    (yyval.Const)->type = (yyvsp[-1].Type);
-    (yyval.Const)->cnst = new std::string((yyvsp[-1].Type)->getNewTy());
+    (yyval.Const) = new Constant;
+    (yyval.Const)->type = (yyvsp[-1].Ty);
+    (yyval.Const)->cnst = new std::string((yyvsp[-1].Ty)->getNewTy());
     *(yyval.Const)->cnst += " " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
   ;}
     break;
 
   case 156:
-#line 1319 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1322 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {      // integral constants
-    (yyval.Const) = new ConstInfo;
-    (yyval.Const)->type = (yyvsp[-1].Type);
-    (yyval.Const)->cnst = new std::string((yyvsp[-1].Type)->getNewTy());
+    (yyval.Const) = new Constant;
+    (yyval.Const)->type = (yyvsp[-1].Ty);
+    (yyval.Const)->cnst = new std::string((yyvsp[-1].Ty)->getNewTy());
     *(yyval.Const)->cnst += " " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
   ;}
     break;
 
   case 157:
-#line 1326 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1329 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {            // integral constants
-    (yyval.Const) = new ConstInfo;
-    (yyval.Const)->type = (yyvsp[-1].Type);
-    (yyval.Const)->cnst = new std::string((yyvsp[-1].Type)->getNewTy());
+    (yyval.Const) = new Constant;
+    (yyval.Const)->type = (yyvsp[-1].Ty);
+    (yyval.Const)->cnst = new std::string((yyvsp[-1].Ty)->getNewTy());
     *(yyval.Const)->cnst += " " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
   ;}
     break;
 
   case 158:
-#line 1333 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1336 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {                      // Boolean constants
-    (yyval.Const) = new ConstInfo;
-    (yyval.Const)->type = (yyvsp[-1].Type);
-    (yyval.Const)->cnst = new std::string((yyvsp[-1].Type)->getNewTy());
+    (yyval.Const) = new Constant;
+    (yyval.Const)->type = (yyvsp[-1].Ty);
+    (yyval.Const)->cnst = new std::string((yyvsp[-1].Ty)->getNewTy());
     *(yyval.Const)->cnst += " " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
   ;}
     break;
 
   case 159:
-#line 1340 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1343 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {                     // Boolean constants
-    (yyval.Const) = new ConstInfo;
-    (yyval.Const)->type = (yyvsp[-1].Type);
-    (yyval.Const)->cnst = new std::string((yyvsp[-1].Type)->getNewTy());
+    (yyval.Const) = new Constant;
+    (yyval.Const)->type = (yyvsp[-1].Ty);
+    (yyval.Const)->cnst = new std::string((yyvsp[-1].Ty)->getNewTy());
     *(yyval.Const)->cnst += " " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
   ;}
     break;
 
   case 160:
-#line 1347 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1350 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {                   // Float & Double constants
-    (yyval.Const) = new ConstInfo;
-    (yyval.Const)->type = (yyvsp[-1].Type);
-    (yyval.Const)->cnst = new std::string((yyvsp[-1].Type)->getNewTy());
+    (yyval.Const) = new Constant;
+    (yyval.Const)->type = (yyvsp[-1].Ty);
+    (yyval.Const)->cnst = new std::string((yyvsp[-1].Ty)->getNewTy());
     *(yyval.Const)->cnst += " " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
   ;}
     break;
 
   case 161:
-#line 1355 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1358 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     std::string source = *(yyvsp[-3].Const)->cnst;
-    const TypeInfo* SrcTy = (yyvsp[-3].Const)->type->resolve();
-    const TypeInfo* DstTy = (yyvsp[-1].Type)->resolve(); 
+    const Type* SrcTy = (yyvsp[-3].Const)->type->resolve();
+    const Type* DstTy = (yyvsp[-1].Ty)->resolve(); 
     if (*(yyvsp[-5].String) == "cast") {
       // Call getCastUpgrade to upgrade the old cast
       (yyval.String) = new std::string(getCastUpgrade(source, SrcTy, 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)->getNewTy() + ")";
+      *(yyval.String) += "( " + source + " to " + (yyvsp[-1].Ty)->getNewTy() + ")";
     }
     delete (yyvsp[-5].String); delete (yyvsp[-3].Const); delete (yyvsp[-2].String);
   ;}
     break;
 
   case 162:
-#line 1369 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1372 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-4].String) += "(" + *(yyvsp[-2].Const)->cnst;
     for (unsigned i = 0; i < (yyvsp[-1].ValList)->size(); ++i) {
-      ValueInfo* VI = (*(yyvsp[-1].ValList))[i];
-      *(yyvsp[-4].String) += ", " + *VI->val;
-      delete VI;
+      Value* V = (*(yyvsp[-1].ValList))[i];
+      *(yyvsp[-4].String) += ", " + *V->val;
+      delete V;
     }
     *(yyvsp[-4].String) += ")";
     (yyval.String) = (yyvsp[-4].String);
@@ -3554,7 +3557,7 @@
     break;
 
   case 163:
-#line 1381 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1384 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-7].String) += "(" + *(yyvsp[-5].Const)->cnst + "," + *(yyvsp[-3].Const)->cnst + "," + *(yyvsp[-1].Const)->cnst + ")";
     delete (yyvsp[-5].Const); delete (yyvsp[-3].Const); delete (yyvsp[-1].Const);
@@ -3563,7 +3566,7 @@
     break;
 
   case 164:
-#line 1386 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1389 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     const char* op = getDivRemOpcode(*(yyvsp[-5].String), (yyvsp[-3].Const)->type); 
     (yyval.String) = new std::string(op);
@@ -3573,7 +3576,7 @@
     break;
 
   case 165:
-#line 1392 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1395 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) += "(" + *(yyvsp[-3].Const)->cnst + "," + *(yyvsp[-1].Const)->cnst + ")";
     delete (yyvsp[-3].Const); delete (yyvsp[-1].Const);
@@ -3582,7 +3585,7 @@
     break;
 
   case 166:
-#line 1397 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1400 "/proj/llvm/llvm-2/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 + ")";
@@ -3592,7 +3595,7 @@
     break;
 
   case 167:
-#line 1403 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1406 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-6].String) += " " + *(yyvsp[-5].String) + " (" +  *(yyvsp[-3].Const)->cnst + "," + *(yyvsp[-1].Const)->cnst + ")";
     delete (yyvsp[-5].String); delete (yyvsp[-3].Const); delete (yyvsp[-1].Const);
@@ -3601,7 +3604,7 @@
     break;
 
   case 168:
-#line 1408 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1411 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-6].String) += " " + *(yyvsp[-5].String) + " (" + *(yyvsp[-3].Const)->cnst + "," + *(yyvsp[-1].Const)->cnst + ")";
     delete (yyvsp[-5].String); delete (yyvsp[-3].Const); delete (yyvsp[-1].Const);
@@ -3610,7 +3613,7 @@
     break;
 
   case 169:
-#line 1413 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1416 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     const char* shiftop = (yyvsp[-5].String)->c_str();
     if (*(yyvsp[-5].String) == "shr")
@@ -3622,7 +3625,7 @@
     break;
 
   case 170:
-#line 1421 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1424 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) += "(" + *(yyvsp[-3].Const)->cnst + "," + *(yyvsp[-1].Const)->cnst + ")";
     delete (yyvsp[-3].Const); delete (yyvsp[-1].Const);
@@ -3631,7 +3634,7 @@
     break;
 
   case 171:
-#line 1426 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1429 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-7].String) += "(" + *(yyvsp[-5].Const)->cnst + "," + *(yyvsp[-3].Const)->cnst + "," + *(yyvsp[-1].Const)->cnst + ")";
     delete (yyvsp[-5].Const); delete (yyvsp[-3].Const); delete (yyvsp[-1].Const);
@@ -3640,7 +3643,7 @@
     break;
 
   case 172:
-#line 1431 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1434 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-7].String) += "(" + *(yyvsp[-5].Const)->cnst + "," + *(yyvsp[-3].Const)->cnst + "," + *(yyvsp[-1].Const)->cnst + ")";
     delete (yyvsp[-5].Const); delete (yyvsp[-3].Const); delete (yyvsp[-1].Const);
@@ -3649,7 +3652,7 @@
     break;
 
   case 173:
-#line 1441 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1444 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += ", " + *(yyvsp[0].Const)->cnst;
     delete (yyvsp[0].Const);
@@ -3658,25 +3661,25 @@
     break;
 
   case 174:
-#line 1446 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1449 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(*(yyvsp[0].Const)->cnst); delete (yyvsp[0].Const); ;}
     break;
 
   case 177:
-#line 1461 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1464 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
 ;}
     break;
 
   case 178:
-#line 1466 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1469 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = 0;
   ;}
     break;
 
   case 179:
-#line 1469 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1472 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << *(yyvsp[0].String) << '\n';
     delete (yyvsp[0].String);
@@ -3685,7 +3688,7 @@
     break;
 
   case 180:
-#line 1474 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1477 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "module asm " << ' ' << *(yyvsp[0].String) << '\n';
     (yyval.String) = 0;
@@ -3693,7 +3696,7 @@
     break;
 
   case 181:
-#line 1478 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1481 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "implementation\n";
     (yyval.String) = 0;
@@ -3701,31 +3704,31 @@
     break;
 
   case 182:
-#line 1482 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1485 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = 0; ;}
     break;
 
   case 184:
-#line 1484 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1487 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = (yyvsp[0].String); *(yyval.String) = "external"; ;}
     break;
 
   case 185:
-#line 1487 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1490 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
-    TypeInfo::EnumeratedTypes.push_back((yyvsp[0].Type));
+    Type::EnumeratedTypes.push_back((yyvsp[0].Ty));
     if (!(yyvsp[-2].String)->empty()) {
-      TypeInfo::NamedTypes[*(yyvsp[-2].String)] = (yyvsp[0].Type);
+      Type::NamedTypes[*(yyvsp[-2].String)] = (yyvsp[0].Ty);
       *O << *(yyvsp[-2].String) << " = ";
     }
-    *O << "type " << (yyvsp[0].Type)->getNewTy() << '\n';
+    *O << "type " << (yyvsp[0].Ty)->getNewTy() << '\n';
     delete (yyvsp[-2].String); delete (yyvsp[-1].String);
     (yyval.String) = 0;
   ;}
     break;
 
   case 186:
-#line 1497 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1500 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {       // Function prototypes can be in const pool
     *O << *(yyvsp[0].String) << '\n';
     delete (yyvsp[0].String);
@@ -3734,7 +3737,7 @@
     break;
 
   case 187:
-#line 1502 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1505 "/proj/llvm/llvm-2/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); 
@@ -3743,7 +3746,7 @@
     break;
 
   case 188:
-#line 1507 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1510 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-4].String)->empty()) {
       std::string Name = getGlobalName((yyvsp[-4].String),*(yyvsp[-3].String), (yyvsp[-1].Const)->type->getPointerType(),
@@ -3757,49 +3760,49 @@
     break;
 
   case 189:
-#line 1517 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1520 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-4].String)->empty()) {
-      std::string Name = getGlobalName((yyvsp[-4].String),*(yyvsp[-3].String),(yyvsp[-1].Type)->getPointerType(),
+      std::string Name = getGlobalName((yyvsp[-4].String),*(yyvsp[-3].String),(yyvsp[-1].Ty)->getPointerType(),
                                        *(yyvsp[-2].String) == "constant");
       *O << Name << " = ";
     }
-    *O <<  *(yyvsp[-3].String) << ' ' << *(yyvsp[-2].String) << ' ' << (yyvsp[-1].Type)->getNewTy() << ' ' << *(yyvsp[0].String) << '\n';
+    *O <<  *(yyvsp[-3].String) << ' ' << *(yyvsp[-2].String) << ' ' << (yyvsp[-1].Ty)->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 1527 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1530 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-4].String)->empty()) {
-      std::string Name = getGlobalName((yyvsp[-4].String),*(yyvsp[-3].String),(yyvsp[-1].Type)->getPointerType(),
+      std::string Name = getGlobalName((yyvsp[-4].String),*(yyvsp[-3].String),(yyvsp[-1].Ty)->getPointerType(),
                                        *(yyvsp[-2].String) == "constant");
       *O << Name << " = ";
     }
-    *O << *(yyvsp[-3].String) << ' ' << *(yyvsp[-2].String) << ' ' << (yyvsp[-1].Type)->getNewTy() << ' ' << *(yyvsp[0].String) << '\n';
+    *O << *(yyvsp[-3].String) << ' ' << *(yyvsp[-2].String) << ' ' << (yyvsp[-1].Ty)->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 1537 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1540 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-4].String)->empty()) {
-      std::string Name = getGlobalName((yyvsp[-4].String),*(yyvsp[-3].String),(yyvsp[-1].Type)->getPointerType(),
+      std::string Name = getGlobalName((yyvsp[-4].String),*(yyvsp[-3].String),(yyvsp[-1].Ty)->getPointerType(),
                                        *(yyvsp[-2].String) == "constant");
       *O << Name << " = ";
     }
-    *O << *(yyvsp[-3].String) << ' ' << *(yyvsp[-2].String) << ' ' << (yyvsp[-1].Type)->getNewTy() << ' ' << *(yyvsp[0].String) << '\n';
+    *O << *(yyvsp[-3].String) << ' ' << *(yyvsp[-2].String) << ' ' << (yyvsp[-1].Ty)->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 1547 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1550 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     { 
     *O << *(yyvsp[-1].String) << ' ' << *(yyvsp[0].String) << '\n';
     delete (yyvsp[-1].String); delete (yyvsp[0].String);
@@ -3808,7 +3811,7 @@
     break;
 
   case 193:
-#line 1552 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1555 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << *(yyvsp[-2].String) << " = " << *(yyvsp[0].String) << '\n';
     delete (yyvsp[-2].String); delete (yyvsp[0].String);
@@ -3817,14 +3820,14 @@
     break;
 
   case 194:
-#line 1557 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1560 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyval.String) = 0;
   ;}
     break;
 
   case 198:
-#line 1567 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1570 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += " = " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3833,7 +3836,7 @@
     break;
 
   case 199:
-#line 1572 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1575 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += " = " + *(yyvsp[0].String);
     if (*(yyvsp[0].String) == "64")
@@ -3844,7 +3847,7 @@
     break;
 
   case 200:
-#line 1579 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1582 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += " = " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3853,7 +3856,7 @@
     break;
 
   case 201:
-#line 1584 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1587 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += " = " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3862,7 +3865,7 @@
     break;
 
   case 202:
-#line 1591 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1594 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyvsp[-1].String)->insert(0, "[ ");
     *(yyvsp[-1].String) += " ]";
@@ -3871,7 +3874,7 @@
     break;
 
   case 203:
-#line 1598 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1601 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += ", " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3880,23 +3883,23 @@
     break;
 
   case 205:
-#line 1604 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1607 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = new std::string();
   ;}
     break;
 
   case 209:
-#line 1613 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1616 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 210:
-#line 1615 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1618 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
-  (yyval.String) = new std::string((yyvsp[-1].Type)->getNewTy());
+  (yyval.String) = new std::string((yyvsp[-1].Ty)->getNewTy());
   if (!(yyvsp[0].String)->empty()) {
-    std::string Name = getUniqueName((yyvsp[0].String), (yyvsp[-1].Type)->resolve());
+    std::string Name = getUniqueName((yyvsp[0].String), (yyvsp[-1].Ty)->resolve());
     *(yyval.String) += " " + Name;
   }
   delete (yyvsp[0].String);
@@ -3904,7 +3907,7 @@
     break;
 
   case 211:
-#line 1624 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1627 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += ", " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3912,21 +3915,21 @@
     break;
 
   case 212:
-#line 1628 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1631 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = (yyvsp[0].String);
   ;}
     break;
 
   case 213:
-#line 1632 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1635 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = (yyvsp[0].String);
   ;}
     break;
 
   case 214:
-#line 1635 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1638 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += ", ...";
     (yyval.String) = (yyvsp[-2].String);
@@ -3935,19 +3938,19 @@
     break;
 
   case 215:
-#line 1640 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1643 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = (yyvsp[0].String);
   ;}
     break;
 
   case 216:
-#line 1643 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1646 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 217:
-#line 1646 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1649 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (*(yyvsp[-5].String) == "%llvm.va_start" || *(yyvsp[-5].String) == "%llvm.va_end") {
       *(yyvsp[-3].String) = "i8*";
@@ -3957,7 +3960,7 @@
     if (!(yyvsp[-7].String)->empty()) {
       *(yyvsp[-7].String) += " ";
     }
-    *(yyvsp[-7].String) += (yyvsp[-6].Type)->getNewTy() + " " + *(yyvsp[-5].String) + "(" + *(yyvsp[-3].String) + ")";
+    *(yyvsp[-7].String) += (yyvsp[-6].Ty)->getNewTy() + " " + *(yyvsp[-5].String) + "(" + *(yyvsp[-3].String) + ")";
     if (!(yyvsp[-1].String)->empty()) {
       *(yyvsp[-7].String) += " " + *(yyvsp[-1].String);
     }
@@ -3973,17 +3976,17 @@
     break;
 
   case 218:
-#line 1669 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1672 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string("{"); delete (yyvsp[0].String); ;}
     break;
 
   case 219:
-#line 1670 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1673 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string ("{"); ;}
     break;
 
   case 220:
-#line 1673 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1676 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "define ";
     if (!(yyvsp[-2].String)->empty()) {
@@ -3996,17 +3999,17 @@
     break;
 
   case 221:
-#line 1684 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1687 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string("}"); delete (yyvsp[0].String); ;}
     break;
 
   case 222:
-#line 1685 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1688 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string("}"); ;}
     break;
 
   case 223:
-#line 1687 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1690 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
   if ((yyvsp[-1].String))
     *O << *(yyvsp[-1].String);
@@ -4017,17 +4020,17 @@
     break;
 
   case 224:
-#line 1696 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1699 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 227:
-#line 1702 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1705 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     { isDeclare = true; ;}
     break;
 
   case 228:
-#line 1702 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1705 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     { 
     if (!(yyvsp[-1].String)->empty())
       *(yyvsp[-3].String) += " " + *(yyvsp[-1].String);
@@ -4040,12 +4043,12 @@
     break;
 
   case 229:
-#line 1716 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1719 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 239:
-#line 1722 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1725 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyvsp[-1].String)->insert(0, "<");
     *(yyvsp[-1].String) += ">";
@@ -4054,7 +4057,7 @@
     break;
 
   case 241:
-#line 1728 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1731 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-3].String)->empty()) {
       *(yyvsp[-4].String) += " " + *(yyvsp[-3].String);
@@ -4066,60 +4069,60 @@
     break;
 
   case 244:
-#line 1741 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1744 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
-    (yyval.Value) = new ValueInfo;
-    (yyval.Value)->val = (yyvsp[0].String);
-    (yyval.Value)->constant = false;
-    (yyval.Value)->type = 0;
+    (yyval.Val) = new Value;
+    (yyval.Val)->val = (yyvsp[0].String);
+    (yyval.Val)->constant = false;
+    (yyval.Val)->type = 0;
   ;}
     break;
 
   case 245:
-#line 1747 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1750 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
-    (yyval.Value) = new ValueInfo;
-    (yyval.Value)->val = (yyvsp[0].String);
-    (yyval.Value)->constant = true;
-    (yyval.Value)->type = 0;
+    (yyval.Val) = new Value;
+    (yyval.Val)->val = (yyvsp[0].String);
+    (yyval.Val)->constant = true;
+    (yyval.Val)->type = 0;
   ;}
     break;
 
   case 246:
-#line 1758 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1761 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
-    (yyvsp[-1].Type) = (yyvsp[-1].Type)->resolve();
-    std::string Name = getUniqueName((yyvsp[0].Value)->val, (yyvsp[-1].Type));
-    (yyval.Value) = (yyvsp[0].Value);
-    delete (yyval.Value)->val;
-    (yyval.Value)->val = new std::string((yyvsp[-1].Type)->getNewTy() + " " + Name);
-    (yyval.Value)->type = (yyvsp[-1].Type);
+    (yyvsp[-1].Ty) = (yyvsp[-1].Ty)->resolve();
+    std::string Name = getUniqueName((yyvsp[0].Val)->val, (yyvsp[-1].Ty));
+    (yyval.Val) = (yyvsp[0].Val);
+    delete (yyval.Val)->val;
+    (yyval.Val)->val = new std::string((yyvsp[-1].Ty)->getNewTy() + " " + Name);
+    (yyval.Val)->type = (yyvsp[-1].Ty);
   ;}
     break;
 
   case 247:
-#line 1767 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1770 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = 0;
   ;}
     break;
 
   case 248:
-#line 1770 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1773 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     { // Do not allow functions with 0 basic blocks   
     (yyval.String) = 0;
   ;}
     break;
 
   case 249:
-#line 1778 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1781 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = 0;
   ;}
     break;
 
   case 250:
-#line 1782 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1785 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "    " << *(yyvsp[0].String) << '\n';
     delete (yyvsp[0].String);
@@ -4128,14 +4131,14 @@
     break;
 
   case 251:
-#line 1787 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1790 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = 0;
   ;}
     break;
 
   case 252:
-#line 1790 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1793 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << *(yyvsp[0].String) << '\n';
     delete (yyvsp[0].String);
@@ -4144,103 +4147,103 @@
     break;
 
   case 254:
-#line 1796 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1799 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = (yyvsp[0].String); *(yyval.String) = "unwind"; ;}
     break;
 
   case 255:
-#line 1798 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1801 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {              // Return with a result...
-    *O << "    " << *(yyvsp[-1].String) << ' ' << *(yyvsp[0].Value)->val << '\n';
-    delete (yyvsp[-1].String); delete (yyvsp[0].Value);
+    *O << "    " << *(yyvsp[-1].String) << ' ' << *(yyvsp[0].Val)->val << '\n';
+    delete (yyvsp[-1].String); delete (yyvsp[0].Val);
     (yyval.String) = 0;
   ;}
     break;
 
   case 256:
-#line 1803 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1806 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {                                       // Return with no result...
-    *O << "    " << *(yyvsp[-1].String) << ' ' << (yyvsp[0].Type)->getNewTy() << '\n';
+    *O << "    " << *(yyvsp[-1].String) << ' ' << (yyvsp[0].Ty)->getNewTy() << '\n';
     delete (yyvsp[-1].String);
     (yyval.String) = 0;
   ;}
     break;
 
   case 257:
-#line 1808 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1811 "/proj/llvm/llvm-2/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[0].Value);
+    *O << "    " << *(yyvsp[-2].String) << ' ' << (yyvsp[-1].Ty)->getNewTy() << ' ' << *(yyvsp[0].Val)->val << '\n';
+    delete (yyvsp[-2].String); delete (yyvsp[0].Val);
     (yyval.String) = 0;
   ;}
     break;
 
   case 258:
-#line 1813 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1816 "/proj/llvm/llvm-2/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 << ", " 
-       << (yyvsp[-4].Type)->getNewTy() << ' ' << *(yyvsp[-3].Value)->val << ", " << (yyvsp[-1].Type)->getNewTy() << ' ' 
-       << *(yyvsp[0].Value)->val << '\n';
-    delete (yyvsp[-8].String); delete (yyvsp[-6].Value); delete (yyvsp[-3].Value); delete (yyvsp[0].Value);
+    std::string Name = getUniqueName((yyvsp[-6].Val)->val, (yyvsp[-7].Ty));
+    *O << "    " << *(yyvsp[-8].String) << ' ' << (yyvsp[-7].Ty)->getNewTy() << ' ' << Name << ", " 
+       << (yyvsp[-4].Ty)->getNewTy() << ' ' << *(yyvsp[-3].Val)->val << ", " << (yyvsp[-1].Ty)->getNewTy() << ' ' 
+       << *(yyvsp[0].Val)->val << '\n';
+    delete (yyvsp[-8].String); delete (yyvsp[-6].Val); delete (yyvsp[-3].Val); delete (yyvsp[0].Val);
     (yyval.String) = 0;
   ;}
     break;
 
   case 259:
-#line 1821 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1824 "/proj/llvm/llvm-2/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 << ", " 
-       << (yyvsp[-4].Type)->getNewTy() << ' ' << *(yyvsp[-3].Value)->val << " [" << *(yyvsp[-1].String) << " ]\n";
+    std::string Name = getUniqueName((yyvsp[-6].Val)->val, (yyvsp[-7].Ty));
+    *O << "    " << *(yyvsp[-8].String) << ' ' << (yyvsp[-7].Ty)->getNewTy() << ' ' << Name << ", " 
+       << (yyvsp[-4].Ty)->getNewTy() << ' ' << *(yyvsp[-3].Val)->val << " [" << *(yyvsp[-1].String) << " ]\n";
     delete (yyvsp[-8].String); 
-    delete (yyvsp[-6].Value);
-    delete (yyvsp[-3].Value); 
+    delete (yyvsp[-6].Val);
+    delete (yyvsp[-3].Val); 
     delete (yyvsp[-1].String);
     (yyval.String) = 0;
   ;}
     break;
 
   case 260:
-#line 1831 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1834 "/proj/llvm/llvm-2/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 << ", " 
-       << (yyvsp[-3].Type)->getNewTy() << ' ' << *(yyvsp[-2].Value)->val << "[]\n";
+    std::string Name = getUniqueName((yyvsp[-5].Val)->val, (yyvsp[-6].Ty));
+    *O << "    " << *(yyvsp[-7].String) << ' ' << (yyvsp[-6].Ty)->getNewTy() << ' ' << Name << ", " 
+       << (yyvsp[-3].Ty)->getNewTy() << ' ' << *(yyvsp[-2].Val)->val << "[]\n";
     delete (yyvsp[-7].String); 
-    delete (yyvsp[-5].Value); 
-    delete (yyvsp[-2].Value);
+    delete (yyvsp[-5].Val); 
+    delete (yyvsp[-2].Val);
     (yyval.String) = 0;
   ;}
     break;
 
   case 261:
-#line 1841 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1844 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
-    const TypeInfo* ResTy = getFunctionReturnType((yyvsp[-10].Type));
+    const Type* ResTy = getFunctionReturnType((yyvsp[-10].Ty));
     *O << "    ";
     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 << " (";
+    *O << *(yyvsp[-12].String) << ' ' << *(yyvsp[-11].String) << ' ' << (yyvsp[-10].Ty)->getNewTy() << ' ' << *(yyvsp[-9].Val)->val << " (";
     for (unsigned i = 0; i < (yyvsp[-7].ValList)->size(); ++i) {
-      ValueInfo* VI = (*(yyvsp[-7].ValList))[i];
-      *O << *VI->val;
+      Value* V = (*(yyvsp[-7].ValList))[i];
+      *O << *V->val;
       if (i+1 < (yyvsp[-7].ValList)->size())
         *O << ", ";
-      delete VI;
+      delete V;
     }
-    *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[-9].Value); delete (yyvsp[-7].ValList); 
-    delete (yyvsp[-5].String); delete (yyvsp[-3].Value); delete (yyvsp[-2].String); delete (yyvsp[0].Value); 
+    *O << ") " << *(yyvsp[-5].String) << ' ' << (yyvsp[-4].Ty)->getNewTy() << ' ' << *(yyvsp[-3].Val)->val << ' ' 
+       << *(yyvsp[-2].String) << ' ' << (yyvsp[-1].Ty)->getNewTy() << ' ' << *(yyvsp[0].Val)->val << '\n';
+    delete (yyvsp[-13].String); delete (yyvsp[-12].String); delete (yyvsp[-11].String); delete (yyvsp[-9].Val); delete (yyvsp[-7].ValList); 
+    delete (yyvsp[-5].String); delete (yyvsp[-3].Val); delete (yyvsp[-2].String); delete (yyvsp[0].Val); 
     (yyval.String) = 0;
   ;}
     break;
 
   case 262:
-#line 1862 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1865 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "    " << *(yyvsp[0].String) << '\n';
     delete (yyvsp[0].String);
@@ -4249,7 +4252,7 @@
     break;
 
   case 263:
-#line 1867 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1870 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "    " << *(yyvsp[0].String) << '\n';
     delete (yyvsp[0].String);
@@ -4258,31 +4261,31 @@
     break;
 
   case 264:
-#line 1873 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1876 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
-    *(yyvsp[-5].String) += " " + (yyvsp[-4].Type)->getNewTy() + " " + *(yyvsp[-3].String) + ", " + (yyvsp[-1].Type)->getNewTy() + " " + 
-           *(yyvsp[0].Value)->val;
-    delete (yyvsp[-3].String); delete (yyvsp[0].Value);
+    *(yyvsp[-5].String) += " " + (yyvsp[-4].Ty)->getNewTy() + " " + *(yyvsp[-3].String) + ", " + (yyvsp[-1].Ty)->getNewTy() + " " + 
+           *(yyvsp[0].Val)->val;
+    delete (yyvsp[-3].String); delete (yyvsp[0].Val);
     (yyval.String) = (yyvsp[-5].String);
   ;}
     break;
 
   case 265:
-#line 1879 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1882 "/proj/llvm/llvm-2/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;
-    delete (yyvsp[0].Value);
+    (yyvsp[-3].String)->insert(0, (yyvsp[-4].Ty)->getNewTy() + " " );
+    *(yyvsp[-3].String) += ", " + (yyvsp[-1].Ty)->getNewTy() + " " + *(yyvsp[0].Val)->val;
+    delete (yyvsp[0].Val);
     (yyval.String) = (yyvsp[-3].String);
   ;}
     break;
 
   case 266:
-#line 1887 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1890 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-1].String)->empty()) {
       // Get a unique name for this value, based on its type.
-      std::string Name = getUniqueName((yyvsp[-1].String), (yyvsp[0].Value)->type);
+      std::string Name = getUniqueName((yyvsp[-1].String), (yyvsp[0].Val)->type);
       *(yyvsp[-1].String) = Name + " = ";
       if (deleteUselessCastFlag && *deleteUselessCastName == Name) {
         // don't actually delete it, just comment it out
@@ -4290,65 +4293,65 @@
         delete deleteUselessCastName;
       }
     }
-    *(yyvsp[-1].String) += *(yyvsp[0].Value)->val;
-    delete (yyvsp[0].Value);
+    *(yyvsp[-1].String) += *(yyvsp[0].Val)->val;
+    delete (yyvsp[0].Val);
     deleteUselessCastFlag = false;
     (yyval.String) = (yyvsp[-1].String); 
   ;}
     break;
 
   case 267:
-#line 1905 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1908 "/proj/llvm/llvm-2/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() + "[");
-    Name += "," + *(yyvsp[-1].Value)->val + "]";
-    (yyval.Value) = new ValueInfo;
-    (yyval.Value)->val = new std::string(Name);
-    (yyval.Value)->type = (yyvsp[-5].Type);
-    delete (yyvsp[-3].Value); delete (yyvsp[-1].Value);
+    std::string Name = getUniqueName((yyvsp[-3].Val)->val, (yyvsp[-5].Ty));
+    Name.insert(0, (yyvsp[-5].Ty)->getNewTy() + "[");
+    Name += "," + *(yyvsp[-1].Val)->val + "]";
+    (yyval.Val) = new Value;
+    (yyval.Val)->val = new std::string(Name);
+    (yyval.Val)->type = (yyvsp[-5].Ty);
+    delete (yyvsp[-3].Val); delete (yyvsp[-1].Val);
   ;}
     break;
 
   case 268:
-#line 1914 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1917 "/proj/llvm/llvm-2/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 + "]";
-    delete (yyvsp[-3].Value); 
-    delete (yyvsp[-1].Value);
-    (yyval.Value) = (yyvsp[-6].Value);
+    std::string Name = getUniqueName((yyvsp[-3].Val)->val, (yyvsp[-6].Val)->type);
+    *(yyvsp[-6].Val)->val += ", [" + Name + "," + *(yyvsp[-1].Val)->val + "]";
+    delete (yyvsp[-3].Val); 
+    delete (yyvsp[-1].Val);
+    (yyval.Val) = (yyvsp[-6].Val);
   ;}
     break;
 
   case 269:
-#line 1924 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1927 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.ValList) = new ValueList();
-    (yyval.ValList)->push_back((yyvsp[0].Value));
+    (yyval.ValList)->push_back((yyvsp[0].Val));
   ;}
     break;
 
   case 270:
-#line 1928 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1931 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.ValList) = (yyvsp[-2].ValList);
-    (yyval.ValList)->push_back((yyvsp[0].Value));
+    (yyval.ValList)->push_back((yyvsp[0].Val));
   ;}
     break;
 
   case 271:
-#line 1935 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1938 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.ValList) = (yyvsp[0].ValList); ;}
     break;
 
   case 272:
-#line 1936 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1939 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.ValList) = new ValueList(); ;}
     break;
 
   case 273:
-#line 1940 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1943 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-1].String) += " " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -4357,106 +4360,106 @@
     break;
 
   case 275:
-#line 1948 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1951 "/proj/llvm/llvm-2/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));
-    std::string Name2 = getUniqueName((yyvsp[0].Value)->val, (yyvsp[-3].Type));
-    (yyval.Value) = (yyvsp[-2].Value);
-    delete (yyval.Value)->val;
-    (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); delete (yyvsp[0].Value);
+    const char* op = getDivRemOpcode(*(yyvsp[-4].String), (yyvsp[-3].Ty)); 
+    std::string Name1 = getUniqueName((yyvsp[-2].Val)->val, (yyvsp[-3].Ty));
+    std::string Name2 = getUniqueName((yyvsp[0].Val)->val, (yyvsp[-3].Ty));
+    (yyval.Val) = (yyvsp[-2].Val);
+    delete (yyval.Val)->val;
+    (yyval.Val)->val = new std::string(op);
+    *(yyval.Val)->val += " " + (yyvsp[-3].Ty)->getNewTy() + " " + Name1 + ", " + Name2;
+    (yyval.Val)->type = (yyvsp[-3].Ty);
+    delete (yyvsp[-4].String); delete (yyvsp[0].Val);
   ;}
     break;
 
   case 276:
-#line 1959 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1962 "/proj/llvm/llvm-2/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) += " " + (yyvsp[-3].Type)->getNewTy() + " " + Name1 + ", " + Name2;
-    (yyval.Value) = (yyvsp[-2].Value);
-    delete (yyval.Value)->val;
-    (yyval.Value)->val = (yyvsp[-4].String);
-    (yyval.Value)->type = (yyvsp[-3].Type);
-    delete (yyvsp[0].Value);
+    std::string Name1 = getUniqueName((yyvsp[-2].Val)->val, (yyvsp[-3].Ty));
+    std::string Name2 = getUniqueName((yyvsp[0].Val)->val, (yyvsp[-3].Ty));
+    *(yyvsp[-4].String) += " " + (yyvsp[-3].Ty)->getNewTy() + " " + Name1 + ", " + Name2;
+    (yyval.Val) = (yyvsp[-2].Val);
+    delete (yyval.Val)->val;
+    (yyval.Val)->val = (yyvsp[-4].String);
+    (yyval.Val)->type = (yyvsp[-3].Ty);
+    delete (yyvsp[0].Val);
   ;}
     break;
 
   case 277:
-#line 1969 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1972 "/proj/llvm/llvm-2/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)->getNewTy() + " " + Name1 + ", " + Name2;
-    (yyval.Value) = (yyvsp[-2].Value);
-    delete (yyval.Value)->val;
-    (yyval.Value)->val = (yyvsp[-4].String);
-    (yyval.Value)->type = TypeInfo::get("i1",BoolTy);
-    delete (yyvsp[0].Value);
+    std::string Name1 = getUniqueName((yyvsp[-2].Val)->val, (yyvsp[-3].Ty));
+    std::string Name2 = getUniqueName((yyvsp[0].Val)->val, (yyvsp[-3].Ty));
+    *(yyvsp[-4].String) = getCompareOp(*(yyvsp[-4].String), (yyvsp[-3].Ty));
+    *(yyvsp[-4].String) += " " + (yyvsp[-3].Ty)->getNewTy() + " " + Name1 + ", " + Name2;
+    (yyval.Val) = (yyvsp[-2].Val);
+    delete (yyval.Val)->val;
+    (yyval.Val)->val = (yyvsp[-4].String);
+    (yyval.Val)->type = Type::get("i1",BoolTy);
+    delete (yyvsp[0].Val);
   ;}
     break;
 
   case 278:
-#line 1980 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1983 "/proj/llvm/llvm-2/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[-5].String) += " " + *(yyvsp[-4].String) + " " + (yyvsp[-3].Type)->getNewTy() + " " + Name1 + "," + Name2;
-    (yyval.Value) = (yyvsp[-2].Value);
-    delete (yyval.Value)->val;
-    (yyval.Value)->val = (yyvsp[-5].String);
-    (yyval.Value)->type = TypeInfo::get("i1",BoolTy);
-    delete (yyvsp[-4].String); delete (yyvsp[0].Value);
+    std::string Name1 = getUniqueName((yyvsp[-2].Val)->val, (yyvsp[-3].Ty));
+    std::string Name2 = getUniqueName((yyvsp[0].Val)->val, (yyvsp[-3].Ty));
+    *(yyvsp[-5].String) += " " + *(yyvsp[-4].String) + " " + (yyvsp[-3].Ty)->getNewTy() + " " + Name1 + "," + Name2;
+    (yyval.Val) = (yyvsp[-2].Val);
+    delete (yyval.Val)->val;
+    (yyval.Val)->val = (yyvsp[-5].String);
+    (yyval.Val)->type = Type::get("i1",BoolTy);
+    delete (yyvsp[-4].String); delete (yyvsp[0].Val);
   ;}
     break;
 
   case 279:
-#line 1990 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 1993 "/proj/llvm/llvm-2/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[-5].String) += " " + *(yyvsp[-4].String) + " " + (yyvsp[-3].Type)->getNewTy() + " " + Name1 + "," + Name2;
-    (yyval.Value) = (yyvsp[-2].Value);
-    delete (yyval.Value)->val;
-    (yyval.Value)->val = (yyvsp[-5].String);
-    (yyval.Value)->type = TypeInfo::get("i1",BoolTy);
-    delete (yyvsp[-4].String); delete (yyvsp[0].Value);
+    std::string Name1 = getUniqueName((yyvsp[-2].Val)->val, (yyvsp[-3].Ty));
+    std::string Name2 = getUniqueName((yyvsp[0].Val)->val, (yyvsp[-3].Ty));
+    *(yyvsp[-5].String) += " " + *(yyvsp[-4].String) + " " + (yyvsp[-3].Ty)->getNewTy() + " " + Name1 + "," + Name2;
+    (yyval.Val) = (yyvsp[-2].Val);
+    delete (yyval.Val)->val;
+    (yyval.Val)->val = (yyvsp[-5].String);
+    (yyval.Val)->type = Type::get("i1",BoolTy);
+    delete (yyvsp[-4].String); delete (yyvsp[0].Val);
   ;}
     break;
 
   case 280:
-#line 2000 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 2003 "/proj/llvm/llvm-2/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";
+      shiftop = ((yyvsp[-2].Val)->type->isUnsigned()) ? "lshr" : "ashr";
     std::string *val = new std::string(shiftop);
-    *val += " " + *(yyvsp[-2].Value)->val + ", " + *(yyvsp[0].Value)->val;
-    (yyval.Value) = (yyvsp[-2].Value);
-    delete (yyval.Value)->val;
-    (yyval.Value)->val = val;
-    delete (yyvsp[-3].String); delete (yyvsp[0].Value);
+    *val += " " + *(yyvsp[-2].Val)->val + ", " + *(yyvsp[0].Val)->val;
+    (yyval.Val) = (yyvsp[-2].Val);
+    delete (yyval.Val)->val;
+    (yyval.Val)->val = val;
+    delete (yyvsp[-3].String); delete (yyvsp[0].Val);
   ;}
     break;
 
   case 281:
-#line 2011 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 2014 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
-    std::string source = *(yyvsp[-2].Value)->val;
-    const TypeInfo* SrcTy = (yyvsp[-2].Value)->type->resolve();
-    const TypeInfo* DstTy = (yyvsp[0].Type)->resolve();
-    (yyval.Value) = (yyvsp[-2].Value);
-    delete (yyval.Value)->val;
-    (yyval.Value)->val = new std::string();
-    (yyval.Value)->type = DstTy;
+    std::string source = *(yyvsp[-2].Val)->val;
+    const Type* SrcTy = (yyvsp[-2].Val)->type->resolve();
+    const Type* DstTy = (yyvsp[0].Ty)->resolve();
+    (yyval.Val) = (yyvsp[-2].Val);
+    delete (yyval.Val)->val;
+    (yyval.Val)->val = new std::string();
+    (yyval.Val)->type = DstTy;
     if (*(yyvsp[-3].String) == "cast") {
-      *(yyval.Value)->val += getCastUpgrade(source, SrcTy, DstTy, false);
+      *(yyval.Val)->val += getCastUpgrade(source, SrcTy, DstTy, false);
     } else {
-      *(yyval.Value)->val += *(yyvsp[-3].String) + " " + source + " to " + DstTy->getNewTy();
+      *(yyval.Val)->val += *(yyvsp[-3].String) + " " + source + " to " + DstTy->getNewTy();
     }
     // 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
@@ -4465,7 +4468,7 @@
       if (SrcTy->isInteger() && DstTy->isInteger() &&
           SrcTy->getBitWidth() == DstTy->getBitWidth()) {
         deleteUselessCastFlag = true; // Flag the "Inst" rule
-        deleteUselessCastName = new std::string(*(yyvsp[-2].Value)->val); // save the name
+        deleteUselessCastName = new std::string(*(yyvsp[-2].Val)->val); // save the name
         size_t pos = deleteUselessCastName->find_first_of("%\"",0);
         if (pos != std::string::npos) {
           // remove the type portion before val
@@ -4478,97 +4481,97 @@
     break;
 
   case 282:
-#line 2041 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 2044 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
-    *(yyvsp[-5].String) += " " + *(yyvsp[-4].Value)->val + ", " + *(yyvsp[-2].Value)->val + ", " + *(yyvsp[0].Value)->val;
-    (yyval.Value) = (yyvsp[-4].Value);
-    delete (yyval.Value)->val;
-    (yyval.Value)->val = (yyvsp[-5].String);
-    (yyval.Value)->type = (yyvsp[-2].Value)->type;
-    delete (yyvsp[-2].Value);
-    delete (yyvsp[0].Value);
+    *(yyvsp[-5].String) += " " + *(yyvsp[-4].Val)->val + ", " + *(yyvsp[-2].Val)->val + ", " + *(yyvsp[0].Val)->val;
+    (yyval.Val) = (yyvsp[-4].Val);
+    delete (yyval.Val)->val;
+    (yyval.Val)->val = (yyvsp[-5].String);
+    (yyval.Val)->type = (yyvsp[-2].Val)->type;
+    delete (yyvsp[-2].Val);
+    delete (yyvsp[0].Val);
   ;}
     break;
 
   case 283:
-#line 2050 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 2053 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
-    *(yyvsp[-3].String) += " " + *(yyvsp[-2].Value)->val + ", " + (yyvsp[0].Type)->getNewTy();
-    (yyval.Value) = (yyvsp[-2].Value);
-    delete (yyval.Value)->val;
-    (yyval.Value)->val = (yyvsp[-3].String);
-    (yyval.Value)->type = (yyvsp[0].Type);
+    *(yyvsp[-3].String) += " " + *(yyvsp[-2].Val)->val + ", " + (yyvsp[0].Ty)->getNewTy();
+    (yyval.Val) = (yyvsp[-2].Val);
+    delete (yyval.Val)->val;
+    (yyval.Val)->val = (yyvsp[-3].String);
+    (yyval.Val)->type = (yyvsp[0].Ty);
   ;}
     break;
 
   case 284:
-#line 2057 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 2060 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
-    *(yyvsp[-3].String) += " " + *(yyvsp[-2].Value)->val + ", " + *(yyvsp[0].Value)->val;
-    (yyval.Value) = (yyvsp[-2].Value);
-    delete (yyval.Value)->val;
-    (yyval.Value)->val = (yyvsp[-3].String);
-    (yyval.Value)->type = (yyval.Value)->type->resolve();
-    (yyval.Value)->type = (yyval.Value)->type->getElementType();
-    delete (yyvsp[0].Value);
+    *(yyvsp[-3].String) += " " + *(yyvsp[-2].Val)->val + ", " + *(yyvsp[0].Val)->val;
+    (yyval.Val) = (yyvsp[-2].Val);
+    delete (yyval.Val)->val;
+    (yyval.Val)->val = (yyvsp[-3].String);
+    (yyval.Val)->type = (yyval.Val)->type->resolve();
+    (yyval.Val)->type = (yyval.Val)->type->getElementType();
+    delete (yyvsp[0].Val);
   ;}
     break;
 
   case 285:
-#line 2066 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 2069 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
-    *(yyvsp[-5].String) += " " + *(yyvsp[-4].Value)->val + ", " + *(yyvsp[-2].Value)->val + ", " + *(yyvsp[0].Value)->val;
-    (yyval.Value) = (yyvsp[-4].Value);
-    delete (yyval.Value)->val;
-    (yyval.Value)->val = (yyvsp[-5].String);
-    delete (yyvsp[-2].Value); delete (yyvsp[0].Value);
+    *(yyvsp[-5].String) += " " + *(yyvsp[-4].Val)->val + ", " + *(yyvsp[-2].Val)->val + ", " + *(yyvsp[0].Val)->val;
+    (yyval.Val) = (yyvsp[-4].Val);
+    delete (yyval.Val)->val;
+    (yyval.Val)->val = (yyvsp[-5].String);
+    delete (yyvsp[-2].Val); delete (yyvsp[0].Val);
   ;}
     break;
 
   case 286:
-#line 2073 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 2076 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
-    *(yyvsp[-5].String) += " " + *(yyvsp[-4].Value)->val + ", " + *(yyvsp[-2].Value)->val + ", " + *(yyvsp[0].Value)->val;
-    (yyval.Value) = (yyvsp[-4].Value);
-    delete (yyval.Value)->val;
-    (yyval.Value)->val = (yyvsp[-5].String);
-    delete (yyvsp[-2].Value); delete (yyvsp[0].Value);
+    *(yyvsp[-5].String) += " " + *(yyvsp[-4].Val)->val + ", " + *(yyvsp[-2].Val)->val + ", " + *(yyvsp[0].Val)->val;
+    (yyval.Val) = (yyvsp[-4].Val);
+    delete (yyval.Val)->val;
+    (yyval.Val)->val = (yyvsp[-5].String);
+    delete (yyvsp[-2].Val); delete (yyvsp[0].Val);
   ;}
     break;
 
   case 287:
-#line 2080 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 2083 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
-    *(yyvsp[-1].String) += " " + *(yyvsp[0].Value)->val;
-    (yyval.Value) = (yyvsp[0].Value);
-    delete (yyvsp[0].Value)->val;
-    (yyval.Value)->val = (yyvsp[-1].String);
+    *(yyvsp[-1].String) += " " + *(yyvsp[0].Val)->val;
+    (yyval.Val) = (yyvsp[0].Val);
+    delete (yyvsp[0].Val)->val;
+    (yyval.Val)->val = (yyvsp[-1].String);
   ;}
     break;
 
   case 288:
-#line 2086 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 2089 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
     // map llvm.isunordered to "fcmp uno" 
-    (yyval.Value) = new ValueInfo;
-    if (*(yyvsp[-3].Value)->val == "%llvm.isunordered.f32" ||
-        *(yyvsp[-3].Value)->val == "%llvm.isunordered.f64") {
-      (yyval.Value)->val = new std::string( "fcmp uno " + *(*(yyvsp[-1].ValList))[0]->val + ", ");
+    (yyval.Val) = new Value;
+    if (*(yyvsp[-3].Val)->val == "%llvm.isunordered.f32" ||
+        *(yyvsp[-3].Val)->val == "%llvm.isunordered.f64") {
+      (yyval.Val)->val = new std::string( "fcmp uno " + *(*(yyvsp[-1].ValList))[0]->val + ", ");
       size_t pos = (*(yyvsp[-1].ValList))[1]->val->find(' ');
       assert(pos != std::string::npos && "no space?");
-      *(yyval.Value)->val += (*(yyvsp[-1].ValList))[1]->val->substr(pos+1);
-      (yyval.Value)->type = TypeInfo::get("i1", BoolTy);
+      *(yyval.Val)->val += (*(yyvsp[-1].ValList))[1]->val->substr(pos+1);
+      (yyval.Val)->type = Type::get("i1", BoolTy);
     } else {
       static unsigned upgradeCount = 1;
-      if (*(yyvsp[-3].Value)->val == "%llvm.va_start" || *(yyvsp[-3].Value)->val == "%llvm.va_end") {
+      if (*(yyvsp[-3].Val)->val == "%llvm.va_start" || *(yyvsp[-3].Val)->val == "%llvm.va_end") {
         if (!(yyvsp[-1].ValList)->empty()) {
           std::string name("%va_upgrade");
           name += llvm::utostr(upgradeCount++);
           (yyvsp[-6].String)->insert(0, name + " = bitcast " + *(*(yyvsp[-1].ValList))[0]->val + " to i8*\n    ");
           *(*(yyvsp[-1].ValList))[0]->val = "i8* " + name;
-          (*(yyvsp[-1].ValList))[0]->type = TypeInfo::get("i8", UByteTy)->getPointerType();
+          (*(yyvsp[-1].ValList))[0]->type = Type::get("i8", UByteTy)->getPointerType();
         }
-      } else if (*(yyvsp[-3].Value)->val == "%llvm.va_copy") {
+      } else if (*(yyvsp[-3].Val)->val == "%llvm.va_copy") {
         std::string name0("%va_upgrade");
         name0 += llvm::utostr(upgradeCount++);
         std::string name1("%va_upgrade");
@@ -4576,166 +4579,166 @@
         (yyvsp[-6].String)->insert(0, name0 + " = bitcast " + *(*(yyvsp[-1].ValList))[0]->val + " to i8*\n    " +
                       name1 + " = bitcast " + *(*(yyvsp[-1].ValList))[1]->val + " to i8*\n    ");
         *(*(yyvsp[-1].ValList))[0]->val = "i8* " + name0;
-        (*(yyvsp[-1].ValList))[0]->type = TypeInfo::get("i8", UByteTy)->getPointerType();
+        (*(yyvsp[-1].ValList))[0]->type = Type::get("i8", UByteTy)->getPointerType();
         *(*(yyvsp[-1].ValList))[1]->val = "i8* " + name1;
-        (*(yyvsp[-1].ValList))[0]->type = TypeInfo::get("i8", UByteTy)->getPointerType();
+        (*(yyvsp[-1].ValList))[0]->type = Type::get("i8", UByteTy)->getPointerType();
       }
       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)->getNewTy() + " " + *(yyvsp[-3].Value)->val + "(";
+      *(yyvsp[-6].String) += (yyvsp[-4].Ty)->getNewTy() + " " + *(yyvsp[-3].Val)->val + "(";
       for (unsigned i = 0; i < (yyvsp[-1].ValList)->size(); ++i) {
-        ValueInfo* VI = (*(yyvsp[-1].ValList))[i];
-        *(yyvsp[-6].String) += *VI->val;
+        Value* V = (*(yyvsp[-1].ValList))[i];
+        *(yyvsp[-6].String) += *V->val;
         if (i+1 < (yyvsp[-1].ValList)->size())
           *(yyvsp[-6].String) += ", ";
-        delete VI;
+        delete V;
       }
       *(yyvsp[-6].String) += ")";
-      (yyval.Value) = new ValueInfo;
-      (yyval.Value)->val = (yyvsp[-6].String);
-      (yyval.Value)->type = getFunctionReturnType((yyvsp[-4].Type));
+      (yyval.Val) = new Value;
+      (yyval.Val)->val = (yyvsp[-6].String);
+      (yyval.Val)->type = getFunctionReturnType((yyvsp[-4].Ty));
     }
-    delete (yyvsp[-5].String); delete (yyvsp[-3].Value); delete (yyvsp[-1].ValList);
+    delete (yyvsp[-5].String); delete (yyvsp[-3].Val); delete (yyvsp[-1].ValList);
   ;}
     break;
 
   case 290:
-#line 2142 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 2145 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.ValList) = (yyvsp[0].ValList); ;}
     break;
 
   case 291:
-#line 2143 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 2146 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {  (yyval.ValList) = new ValueList(); ;}
     break;
 
   case 293:
-#line 2148 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 2151 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 294:
-#line 2151 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 2154 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
-    *(yyvsp[-2].String) += " " + (yyvsp[-1].Type)->getNewTy();
+    *(yyvsp[-2].String) += " " + (yyvsp[-1].Ty)->getNewTy();
     if (!(yyvsp[0].String)->empty())
       *(yyvsp[-2].String) += " " + *(yyvsp[0].String);
-    (yyval.Value) = new ValueInfo;
-    (yyval.Value)->val = (yyvsp[-2].String);
-    (yyval.Value)->type = (yyvsp[-1].Type)->getPointerType();
+    (yyval.Val) = new Value;
+    (yyval.Val)->val = (yyvsp[-2].String);
+    (yyval.Val)->type = (yyvsp[-1].Ty)->getPointerType();
     delete (yyvsp[0].String);
   ;}
     break;
 
   case 295:
-#line 2160 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 2163 "/proj/llvm/llvm-2/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;
+    std::string Name = getUniqueName((yyvsp[-1].Val)->val, (yyvsp[-2].Ty));
+    *(yyvsp[-5].String) += " " + (yyvsp[-4].Ty)->getNewTy() + ", " + (yyvsp[-2].Ty)->getNewTy() + " " + Name;
     if (!(yyvsp[0].String)->empty())
       *(yyvsp[-5].String) += " " + *(yyvsp[0].String);
-    (yyval.Value) = new ValueInfo;
-    (yyval.Value)->val = (yyvsp[-5].String);
-    (yyval.Value)->type = (yyvsp[-4].Type)->getPointerType();
-    delete (yyvsp[-1].Value); delete (yyvsp[0].String);
+    (yyval.Val) = new Value;
+    (yyval.Val)->val = (yyvsp[-5].String);
+    (yyval.Val)->type = (yyvsp[-4].Ty)->getPointerType();
+    delete (yyvsp[-1].Val); delete (yyvsp[0].String);
   ;}
     break;
 
   case 296:
-#line 2170 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 2173 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
-    *(yyvsp[-2].String) += " " + (yyvsp[-1].Type)->getNewTy();
+    *(yyvsp[-2].String) += " " + (yyvsp[-1].Ty)->getNewTy();
     if (!(yyvsp[0].String)->empty())
       *(yyvsp[-2].String) += " " + *(yyvsp[0].String);
-    (yyval.Value) = new ValueInfo;
-    (yyval.Value)->val = (yyvsp[-2].String);
-    (yyval.Value)->type = (yyvsp[-1].Type)->getPointerType();
+    (yyval.Val) = new Value;
+    (yyval.Val)->val = (yyvsp[-2].String);
+    (yyval.Val)->type = (yyvsp[-1].Ty)->getPointerType();
     delete (yyvsp[0].String);
   ;}
     break;
 
   case 297:
-#line 2179 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 2182 "/proj/llvm/llvm-2/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;
+    std::string Name = getUniqueName((yyvsp[-1].Val)->val, (yyvsp[-2].Ty));
+    *(yyvsp[-5].String) += " " + (yyvsp[-4].Ty)->getNewTy() + ", " + (yyvsp[-2].Ty)->getNewTy() + " " + Name;
     if (!(yyvsp[0].String)->empty())
       *(yyvsp[-5].String) += " " + *(yyvsp[0].String);
-    (yyval.Value) = (yyvsp[-1].Value);
-    delete (yyval.Value)->val;
-    (yyval.Value)->val = (yyvsp[-5].String);
-    (yyval.Value)->type = (yyvsp[-4].Type)->getPointerType();
+    (yyval.Val) = (yyvsp[-1].Val);
+    delete (yyval.Val)->val;
+    (yyval.Val)->val = (yyvsp[-5].String);
+    (yyval.Val)->type = (yyvsp[-4].Ty)->getPointerType();
     delete (yyvsp[0].String);
   ;}
     break;
 
   case 298:
-#line 2190 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 2193 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
-    *(yyvsp[-1].String) += " " + *(yyvsp[0].Value)->val;
-    (yyval.Value) = (yyvsp[0].Value);
-    delete (yyvsp[0].Value)->val;
-    (yyval.Value)->val = (yyvsp[-1].String);
-    (yyval.Value)->type = TypeInfo::get("void", VoidTy); 
+    *(yyvsp[-1].String) += " " + *(yyvsp[0].Val)->val;
+    (yyval.Val) = (yyvsp[0].Val);
+    delete (yyvsp[0].Val)->val;
+    (yyval.Val)->val = (yyvsp[-1].String);
+    (yyval.Val)->type = Type::get("void", VoidTy); 
   ;}
     break;
 
   case 299:
-#line 2197 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 2200 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
-    std::string Name = getUniqueName((yyvsp[0].Value)->val, (yyvsp[-1].Type));
+    std::string Name = getUniqueName((yyvsp[0].Val)->val, (yyvsp[-1].Ty));
     if (!(yyvsp[-3].String)->empty())
       *(yyvsp[-3].String) += " ";
-    *(yyvsp[-3].String) += *(yyvsp[-2].String) + " " + (yyvsp[-1].Type)->getNewTy() + " " + Name;
-    (yyval.Value) = (yyvsp[0].Value);
-    delete (yyval.Value)->val;
-    (yyval.Value)->val = (yyvsp[-3].String);
-    (yyval.Value)->type = (yyvsp[-1].Type)->getElementType();
+    *(yyvsp[-3].String) += *(yyvsp[-2].String) + " " + (yyvsp[-1].Ty)->getNewTy() + " " + Name;
+    (yyval.Val) = (yyvsp[0].Val);
+    delete (yyval.Val)->val;
+    (yyval.Val)->val = (yyvsp[-3].String);
+    (yyval.Val)->type = (yyvsp[-1].Ty)->getElementType();
     delete (yyvsp[-2].String);
   ;}
     break;
 
   case 300:
-#line 2208 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 2211 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
-    std::string Name = getUniqueName((yyvsp[0].Value)->val, (yyvsp[-1].Type));
+    std::string Name = getUniqueName((yyvsp[0].Val)->val, (yyvsp[-1].Ty));
     if (!(yyvsp[-5].String)->empty())
       *(yyvsp[-5].String) += " ";
-    *(yyvsp[-5].String) += *(yyvsp[-4].String) + " " + *(yyvsp[-3].Value)->val + ", " + (yyvsp[-1].Type)->getNewTy() + " " + Name;
-    (yyval.Value) = (yyvsp[-3].Value);
-    delete (yyval.Value)->val;
-    (yyval.Value)->val = (yyvsp[-5].String);
-    (yyval.Value)->type = TypeInfo::get("void", VoidTy);
-    delete (yyvsp[-4].String); delete (yyvsp[0].Value);
+    *(yyvsp[-5].String) += *(yyvsp[-4].String) + " " + *(yyvsp[-3].Val)->val + ", " + (yyvsp[-1].Ty)->getNewTy() + " " + Name;
+    (yyval.Val) = (yyvsp[-3].Val);
+    delete (yyval.Val)->val;
+    (yyval.Val)->val = (yyvsp[-5].String);
+    (yyval.Val)->type = Type::get("void", VoidTy);
+    delete (yyvsp[-4].String); delete (yyvsp[0].Val);
   ;}
     break;
 
   case 301:
-#line 2219 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 2222 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
     {
-    std::string Name = getUniqueName((yyvsp[-1].Value)->val, (yyvsp[-2].Type));
+    std::string Name = getUniqueName((yyvsp[-1].Val)->val, (yyvsp[-2].Ty));
     // 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) {
-        *O << "    %gep_upgrade" << UniqueNameCounter << " = zext " << *VI->val 
+      Value* V = (*(yyvsp[0].ValList))[i];
+      if (V->type->isUnsigned() && !V->isConstant() && 
+          V->type->getBitWidth() < 64) {
+        *O << "    %gep_upgrade" << UniqueNameCounter << " = zext " << *V->val 
            << " to i64\n";
-        *VI->val = "i64 %gep_upgrade" + llvm::utostr(UniqueNameCounter++);
-        VI->type = TypeInfo::get("i64",ULongTy);
+        *V->val = "i64 %gep_upgrade" + llvm::utostr(UniqueNameCounter++);
+        V->type = Type::get("i64",ULongTy);
       }
     }
-    *(yyvsp[-3].String) += " " + (yyvsp[-2].Type)->getNewTy() + " " + Name;
+    *(yyvsp[-3].String) += " " + (yyvsp[-2].Ty)->getNewTy() + " " + Name;
     for (unsigned i = 0; i < (yyvsp[0].ValList)->size(); ++i) {
-      ValueInfo* VI = (*(yyvsp[0].ValList))[i];
-      *(yyvsp[-3].String) += ", " + *VI->val;
+      Value* V = (*(yyvsp[0].ValList))[i];
+      *(yyvsp[-3].String) += ", " + *V->val;
     }
-    (yyval.Value) = (yyvsp[-1].Value);
-    delete (yyval.Value)->val;
-    (yyval.Value)->val = (yyvsp[-3].String);
-    (yyval.Value)->type = getGEPIndexedType((yyvsp[-2].Type),(yyvsp[0].ValList)); 
+    (yyval.Val) = (yyvsp[-1].Val);
+    delete (yyval.Val)->val;
+    (yyval.Val)->val = (yyvsp[-3].String);
+    (yyval.Val)->type = getGEPIndexedType((yyvsp[-2].Ty),(yyvsp[0].ValList)); 
     for (unsigned i = 0; i < (yyvsp[0].ValList)->size(); ++i)
       delete (*(yyvsp[0].ValList))[i];
     delete (yyvsp[0].ValList);
@@ -4747,7 +4750,7 @@
     }
 
 /* Line 1126 of yacc.c.  */
-#line 4751 "UpgradeParser.tab.c"
+#line 4754 "UpgradeParser.tab.c"
 
   yyvsp -= yylen;
   yyssp -= yylen;
@@ -5015,7 +5018,7 @@
 }
 
 
-#line 2246 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 2249 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
 
 
 int yyerror(const char *ErrorMsg) {


Index: llvm/tools/llvm-upgrade/UpgradeParser.h.cvs
diff -u llvm/tools/llvm-upgrade/UpgradeParser.h.cvs:1.29 llvm/tools/llvm-upgrade/UpgradeParser.h.cvs:1.30
--- llvm/tools/llvm-upgrade/UpgradeParser.h.cvs:1.29	Sun Jan 14 18:26:18 2007
+++ llvm/tools/llvm-upgrade/UpgradeParser.h.cvs	Sun Jan 14 20:41:46 2007
@@ -331,12 +331,12 @@
 
 
 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-#line 968 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+#line 971 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
 typedef union YYSTYPE {
   std::string*    String;
-  const TypeInfo* Type;
-  ValueInfo*      Value;
-  ConstInfo*      Const;
+  const Type*     Ty;
+  Value*          Val;
+  Constant*       Const;
   ValueList*      ValList;
   TypeList*       TypeVec;
 } YYSTYPE;


Index: llvm/tools/llvm-upgrade/UpgradeParser.y.cvs
diff -u llvm/tools/llvm-upgrade/UpgradeParser.y.cvs:1.41 llvm/tools/llvm-upgrade/UpgradeParser.y.cvs:1.42
--- llvm/tools/llvm-upgrade/UpgradeParser.y.cvs:1.41	Sun Jan 14 18:26:18 2007
+++ llvm/tools/llvm-upgrade/UpgradeParser.y.cvs	Sun Jan 14 20:41:46 2007
@@ -59,49 +59,49 @@
 
 
 /// This type is used to keep track of the signedness of values. Instead
-/// of creating llvm::Value directly, the parser will create ValueInfo which
+/// of creating llvm::Value directly, the parser will create Value which
 /// associates a Value* with a Signedness indication.
-struct ValueInfo {
+struct Value {
   std::string* val;
-  const TypeInfo* type;
+  const Type* type;
   bool constant;
   bool isConstant() const { return constant; }
-  ~ValueInfo() { delete val; }
+  ~Value() { delete val; }
 };
 
 
 /// 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
+/// create instances of Type which retains the signedness indication so
 /// it can be used by the parser for upgrade decisions.
 /// For example if "uint" is encountered then the "first" field will be set 
 /// to "int32" and the "second" field will be set to "isUnsigned".  If the 
 /// type is not obsolete then "second" will be set to "isSignless".
-class TypeInfo {
+class Type {
 public:
-  static const TypeInfo* get(const std::string &newType, Types oldType);
-  static const TypeInfo* get(const std::string& newType, Types oldType, 
-                             const TypeInfo* eTy, const TypeInfo* rTy);
+  static const Type* get(const std::string &newType, TypeIDs oldType);
+  static const Type* get(const std::string& newType, TypeIDs oldType, 
+                             const Type* eTy, const Type* rTy);
 
-  static const TypeInfo* get(const std::string& newType, Types oldType, 
-                             const TypeInfo *eTy, uint64_t elems);
+  static const Type* get(const std::string& newType, TypeIDs oldType, 
+                             const Type *eTy, uint64_t elems);
 
-  static const TypeInfo* get(const std::string& newType, Types oldType, 
+  static const Type* get(const std::string& newType, TypeIDs oldType, 
                              TypeList* TL);
 
-  static const TypeInfo* get(const std::string& newType, const TypeInfo* resTy, 
+  static const Type* get(const std::string& newType, const Type* resTy, 
                              TypeList* TL);
 
-  const TypeInfo* resolve() const;
-  bool operator<(const TypeInfo& that) const;
+  const Type* resolve() const;
+  bool operator<(const Type& that) const;
 
-  bool sameNewTyAs(const TypeInfo* that) const {
+  bool sameNewTyAs(const Type* that) const {
     return this->newTy == that->newTy;
   }
 
-  bool sameOldTyAs(const TypeInfo* that) const;
+  bool sameOldTyAs(const Type* that) const;
 
-  Types getElementTy() const {
+  TypeIDs getElementTy() const {
     if (elemTy) {
       return elemTy->oldTy;
     }
@@ -113,16 +113,16 @@
     return atoi(&((getNewTy().c_str())[1])); // skip the slash
   }
 
-  typedef std::vector<const TypeInfo*> UpRefStack;
+  typedef std::vector<const Type*> UpRefStack;
   void getSignedness(unsigned &sNum, unsigned &uNum, UpRefStack& stk) const;
   std::string makeUniqueName(const std::string& BaseName) const;
 
   const std::string& getNewTy() const { return newTy; }
-  const TypeInfo* getResultType() const { return resultTy; }
-  const TypeInfo* getElementType() const { return elemTy; }
+  const Type* getResultType() const { return resultTy; }
+  const Type* getElementType() const { return elemTy; }
 
-  const TypeInfo* getPointerType() const {
-    return get(newTy + "*", PointerTy, this, (TypeInfo*)0);
+  const Type* getPointerType() const {
+    return get(newTy + "*", PointerTy, this, (Type*)0);
   }
 
   bool isUnresolved() const { return oldTy == UnresolvedTy; }
@@ -161,13 +161,13 @@
 
   unsigned getBitWidth() const;
 
-  const TypeInfo* getIndexedType(const ValueInfo*  VI) const;
+  const Type* getIndexedType(const Value*  V) const;
 
   unsigned getNumStructElements() const { 
     return (elements ? elements->size() : 0);
   }
 
-  const TypeInfo* getElement(unsigned idx) const {
+  const Type* getElement(unsigned idx) const {
     if (elements)
       if (idx < elements->size())
         return (*elements)[idx];
@@ -175,98 +175,98 @@
   }
 
 private:
-  TypeInfo() 
+  Type() 
     : newTy(), oldTy(UnresolvedTy), elemTy(0), resultTy(0), elements(0),
       nelems(0) {
   }
 
-  TypeInfo(const TypeInfo& that); // do not implement
-  TypeInfo& operator=(const TypeInfo& that); // do not implement
+  Type(const Type& that); // do not implement
+  Type& operator=(const Type& that); // do not implement
 
-  ~TypeInfo() { delete elements; }
+  ~Type() { delete elements; }
 
   struct ltfunctor
   {
-    bool operator()(const TypeInfo* X, const TypeInfo* Y) const {
+    bool operator()(const Type* X, const Type* Y) const {
       assert(X && "Can't compare null pointer");
       assert(Y && "Can't compare null pointer");
       return *X < *Y;
     }
   };
 
-  typedef std::set<const TypeInfo*, ltfunctor> TypeRegMap;
+  typedef std::set<const Type*, ltfunctor> TypeRegMap;
 
-  static const TypeInfo* add_new_type(TypeInfo* existing);
+  static const Type* add_new_type(Type* existing);
 
   std::string newTy;
-  Types oldTy;
-  TypeInfo *elemTy;
-  TypeInfo *resultTy;
+  TypeIDs oldTy;
+  Type *elemTy;
+  Type *resultTy;
   TypeList *elements;
   uint64_t nelems;
   static TypeRegMap registry;
 public:
-  typedef std::vector<const TypeInfo*> TypeVector;
-  typedef std::map<std::string,const TypeInfo*> TypeMap;
-  typedef std::map<const TypeInfo*,std::string> TypePlaneMap;
+  typedef std::vector<const Type*> TypeVector;
+  typedef std::map<std::string,const Type*> TypeMap;
+  typedef std::map<const Type*,std::string> TypePlaneMap;
   typedef std::map<std::string,TypePlaneMap> GlobalsTypeMap;
   static TypeVector EnumeratedTypes;
   static TypeMap NamedTypes;
   static GlobalsTypeMap Globals;
 };
 
-TypeInfo::TypeRegMap     TypeInfo::registry;
-TypeInfo::TypeVector     TypeInfo::EnumeratedTypes;
-TypeInfo::TypeMap        TypeInfo::NamedTypes;
-TypeInfo::GlobalsTypeMap TypeInfo::Globals;
+Type::TypeRegMap     Type::registry;
+Type::TypeVector     Type::EnumeratedTypes;
+Type::TypeMap        Type::NamedTypes;
+Type::GlobalsTypeMap Type::Globals;
 
-const TypeInfo* TypeInfo::get(const std::string &newType, Types oldType) {
-  TypeInfo* Ty = new TypeInfo();
+const Type* Type::get(const std::string &newType, TypeIDs oldType) {
+  Type* Ty = new Type();
   Ty->newTy = newType;
   Ty->oldTy = oldType;
   return add_new_type(Ty);
 }
 
-const TypeInfo* TypeInfo::get(const std::string& newType, Types oldType, 
-                              const TypeInfo* eTy, const TypeInfo* rTy) {
-  TypeInfo* Ty= new TypeInfo();
+const Type* Type::get(const std::string& newType, TypeIDs oldType, 
+                              const Type* eTy, const Type* rTy) {
+  Type* Ty= new Type();
   Ty->newTy = newType;
   Ty->oldTy = oldType;
-  Ty->elemTy = const_cast<TypeInfo*>(eTy);
-  Ty->resultTy = const_cast<TypeInfo*>(rTy);
+  Ty->elemTy = const_cast<Type*>(eTy);
+  Ty->resultTy = const_cast<Type*>(rTy);
   return add_new_type(Ty);
 }
 
-const TypeInfo* TypeInfo::get(const std::string& newType, Types oldType, 
-                              const TypeInfo *eTy, uint64_t elems) {
-  TypeInfo* Ty = new TypeInfo();
+const Type* Type::get(const std::string& newType, TypeIDs oldType, 
+                              const Type *eTy, uint64_t elems) {
+  Type* Ty = new Type();
   Ty->newTy = newType;
   Ty->oldTy = oldType;
-  Ty->elemTy = const_cast<TypeInfo*>(eTy);
+  Ty->elemTy = const_cast<Type*>(eTy);
   Ty->nelems = elems;
   return  add_new_type(Ty);
 }
 
-const TypeInfo* TypeInfo::get(const std::string& newType, Types oldType, 
+const Type* Type::get(const std::string& newType, TypeIDs oldType, 
                               TypeList* TL) {
-  TypeInfo* Ty = new TypeInfo();
+  Type* Ty = new Type();
   Ty->newTy = newType;
   Ty->oldTy = oldType;
   Ty->elements = TL;
   return add_new_type(Ty);
 }
 
-const TypeInfo* TypeInfo::get(const std::string& newType, const TypeInfo* resTy,
+const Type* Type::get(const std::string& newType, const Type* resTy,
                               TypeList* TL) {
-  TypeInfo* Ty = new TypeInfo();
+  Type* Ty = new Type();
   Ty->newTy = newType;
   Ty->oldTy = FunctionTy;
-  Ty->resultTy = const_cast<TypeInfo*>(resTy);
+  Ty->resultTy = const_cast<Type*>(resTy);
   Ty->elements = TL;
   return add_new_type(Ty);
 }
 
-const TypeInfo* TypeInfo::resolve() const {
+const Type* Type::resolve() const {
   if (isUnresolved()) {
     if (getNewTy()[0] == '%' && isdigit(newTy[1])) {
       unsigned ref = atoi(&((newTy.c_str())[1])); // skip the %
@@ -278,7 +278,7 @@
         yyerror(msg.c_str());
       }
     } else {
-      TypeInfo::TypeMap::iterator I = NamedTypes.find(newTy);
+      Type::TypeMap::iterator I = NamedTypes.find(newTy);
       if (I != NamedTypes.end()) {
         return I->second;
       } else {
@@ -292,7 +292,7 @@
   return this;
 }
 
-bool TypeInfo::operator<(const TypeInfo& that) const {
+bool Type::operator<(const Type& that) const {
   if (this == &that)
     return false;
   if (oldTy != that.oldTy)
@@ -308,13 +308,13 @@
       if (this->nelems != that.nelems)
         return nelems < that.nelems;
     case PointerTy: {
-      const TypeInfo* thisTy = this->elemTy;
-      const TypeInfo* thatTy = that.elemTy;
+      const Type* thisTy = this->elemTy;
+      const Type* thatTy = that.elemTy;
       return *thisTy < *thatTy;
     }
     case FunctionTy: {
-      const TypeInfo* thisTy = this->resultTy;
-      const TypeInfo* thatTy = that.resultTy;
+      const Type* thisTy = this->resultTy;
+      const Type* thatTy = that.resultTy;
       if (!thisTy->sameOldTyAs(thatTy))
         return *thisTy < *thatTy;
       /* FALL THROUGH */
@@ -324,8 +324,8 @@
       if (elements->size() != that.elements->size())
         return elements->size() < that.elements->size();
       for (unsigned i = 0; i < elements->size(); i++) {
-        const TypeInfo* thisTy = (*this->elements)[i];
-        const TypeInfo* thatTy = (*that.elements)[i];
+        const Type* thisTy = (*this->elements)[i];
+        const Type* thatTy = (*that.elements)[i];
         if (!thisTy->sameOldTyAs(thatTy))
           return *thisTy < *thatTy;
       }
@@ -339,7 +339,7 @@
   return false; 
 }
 
-bool TypeInfo::sameOldTyAs(const TypeInfo* that) const {
+bool Type::sameOldTyAs(const Type* that) const {
   if (that == 0)
     return false;
   if ( this == that ) 
@@ -353,13 +353,13 @@
         return false;
       /* FALL THROUGH */
     case PointerTy: {
-      const TypeInfo* thisTy = this->elemTy;
-      const TypeInfo* thatTy = that->elemTy;
+      const Type* thisTy = this->elemTy;
+      const Type* thatTy = that->elemTy;
       return thisTy->sameOldTyAs(thatTy);
     }
     case FunctionTy: {
-      const TypeInfo* thisTy = this->resultTy;
-      const TypeInfo* thatTy = that->resultTy;
+      const Type* thisTy = this->resultTy;
+      const Type* thatTy = that->resultTy;
       if (!thisTy->sameOldTyAs(thatTy))
         return false;
       /* FALL THROUGH */
@@ -369,8 +369,8 @@
       if (elements->size() != that->elements->size())
         return false;
       for (unsigned i = 0; i < elements->size(); i++) {
-        const TypeInfo* thisTy = (*this->elements)[i];
-        const TypeInfo* thatTy = (*that->elements)[i];
+        const Type* thisTy = (*this->elements)[i];
+        const Type* thatTy = (*that->elements)[i];
         if (!thisTy->sameOldTyAs(thatTy))
           return false;
       }
@@ -384,7 +384,7 @@
   return true;
 }
 
-bool TypeInfo::isUnresolvedDeep() const {
+bool Type::isUnresolvedDeep() const {
   switch (oldTy) {
     case UnresolvedTy: 
       return true;
@@ -403,7 +403,7 @@
   }
 }
 
-unsigned TypeInfo::getBitWidth() const {
+unsigned Type::getBitWidth() const {
   switch (oldTy) {
     default:
     case LabelTy:
@@ -428,12 +428,12 @@
   }
 }
 
-const TypeInfo* TypeInfo::getIndexedType(const ValueInfo*  VI) const {
+const Type* Type::getIndexedType(const Value*  V) const {
   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());
+    if (V->isConstant() && V->type->isInteger()) {
+      size_t pos = V->val->find(' ') + 1;
+      if (pos < V->val->size()) {
+        uint64_t idx = atoi(V->val->substr(pos).c_str());
         return (*elements)[idx];
       } else {
         yyerror("Invalid value for constant integer");
@@ -450,7 +450,7 @@
   return 0;
 }
 
-void TypeInfo::getSignedness(unsigned &sNum, unsigned &uNum, 
+void Type::getSignedness(unsigned &sNum, unsigned &uNum, 
                              UpRefStack& stack) const {
   switch (oldTy) {
     default:
@@ -478,7 +478,7 @@
       return;
     }
     case UnresolvedTy: {
-      const TypeInfo* Ty = this->resolve();
+      const Type* Ty = this->resolve();
       // Let's not recurse.
       UpRefStack::const_iterator I = stack.begin(), E = stack.end();
       for ( ; I != E && *I != Ty; ++I) 
@@ -499,7 +499,7 @@
   return Name + Suffix;
 }
 
-std::string TypeInfo::makeUniqueName(const std::string& BaseName) const {
+std::string Type::makeUniqueName(const std::string& BaseName) const {
   if (BaseName == "\"alloca point\"")
     return BaseName;
   switch (oldTy) {
@@ -520,14 +520,14 @@
     case PointerTy:
     case PackedTy: 
     case ArrayTy: {
-      TypeInfo::UpRefStack stack;
+      Type::UpRefStack stack;
       elemTy->resolve()->getSignedness(sNum, uNum, stack);
       break;
     }
     case StructTy:
     case PackedStructTy: {
       for (unsigned i = 0; i < elements->size(); i++) {
-        TypeInfo::UpRefStack stack;
+        Type::UpRefStack stack;
         (*elements)[i]->resolve()->getSignedness(sNum, uNum, stack);
       }
       break;
@@ -554,7 +554,7 @@
   return AddSuffix(BaseName, Suffix);
 }
 
-TypeInfo& TypeInfo::operator=(const TypeInfo& that) {
+Type& Type::operator=(const Type& that) {
   oldTy = that.oldTy;
   nelems = that.nelems;
   newTy = that.newTy;
@@ -569,7 +569,7 @@
   return *this;
 }
 
-const TypeInfo* TypeInfo::add_new_type(TypeInfo* newTy) {
+const Type* Type::add_new_type(Type* newTy) {
   TypeRegMap::iterator I = registry.find(newTy);
   if (I != registry.end()) {
     delete newTy;
@@ -579,11 +579,14 @@
   return newTy;
 }
 
+class Instruction {
+};
+
 /// This type is used to keep track of the signedness of constants.
-struct ConstInfo {
+struct Constant {
   std::string *cnst;
-  const TypeInfo *type;
-  ~ConstInfo() { delete cnst; }
+  const Type *type;
+  ~Constant() { delete cnst; }
 };
 
 /// This variable provides a counter for unique names. It is used in various
@@ -605,8 +608,8 @@
 
 
 
-const char* getCastOpcode(std::string& Source, const TypeInfo* SrcTy, 
-                          const TypeInfo* DstTy) {
+const char* getCastOpcode(std::string& Source, const Type* SrcTy, 
+                          const Type* DstTy) {
   unsigned SrcBits = SrcTy->getBitWidth();
   unsigned DstBits = DstTy->getBitWidth();
   const char* opcode = "bitcast";
@@ -682,8 +685,8 @@
   return opcode;
 }
 
-std::string getCastUpgrade(const std::string& Src, const TypeInfo* SrcTy,
-                           const TypeInfo* DstTy, bool isConst) {
+std::string getCastUpgrade(const std::string& Src, const Type* SrcTy,
+                           const Type* DstTy, bool isConst) {
   std::string Result;
   std::string Source = Src;
   if (SrcTy->isFloatingPoint() && DstTy->isPointer()) {
@@ -692,12 +695,12 @@
     if (isConst)
       Source = "i64 fptoui(" + Source + " to i64)";
     else {
-      *O << "    %cast_upgrade" << UniqueNameCounter++ << " = fptoui " 
+      *O << "    %cast_upgrade" << UniqueNameCounter << " = fptoui " 
          << Source << " to i64\n";
-      Source = "i64 %cast_upgrade" + llvm::utostr(UniqueNameCounter);
+      Source = "i64 %cast_upgrade" + llvm::utostr(UniqueNameCounter++);
     }
     // Update the SrcTy for the getCastOpcode call below
-    SrcTy = TypeInfo::get("i64", ULongTy);
+    SrcTy = Type::get("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
@@ -723,9 +726,9 @@
   return Result;
 }
 
-const char* getDivRemOpcode(const std::string& opcode, const TypeInfo* TI) {
+const char* getDivRemOpcode(const std::string& opcode, const Type* TI) {
   const char* op = opcode.c_str();
-  const TypeInfo* Ty = TI->resolve();
+  const Type* Ty = TI->resolve();
   if (Ty->isPacked())
     Ty = Ty->getElementType();
   if (opcode == "div")
@@ -749,7 +752,7 @@
   return op;
 }
 
-std::string getCompareOp(const std::string& setcc, const TypeInfo* TI) {
+std::string getCompareOp(const std::string& setcc, const Type* TI) {
   assert(setcc.length() == 5);
   char cc1 = setcc[3];
   char cc2 = setcc[4];
@@ -779,10 +782,10 @@
   return result;
 }
 
-const TypeInfo* getFunctionReturnType(const TypeInfo* PFTy) {
+const Type* getFunctionReturnType(const Type* PFTy) {
   PFTy = PFTy->resolve();
   if (PFTy->isPointer()) {
-    const TypeInfo* ElemTy = PFTy->getElementType();
+    const Type* ElemTy = PFTy->getElementType();
     ElemTy = ElemTy->resolve();
     if (ElemTy->isFunction())
       return ElemTy->getResultType();
@@ -792,18 +795,18 @@
   return PFTy;
 }
 
-const TypeInfo* ResolveUpReference(const TypeInfo* Ty, 
-                                   TypeInfo::UpRefStack* stack) {
+const Type* ResolveUpReference(const Type* Ty, 
+                                   Type::UpRefStack* stack) {
   assert(Ty->isUpReference() && "Can't resolve a non-upreference");
   unsigned upref = Ty->getUpRefNum();
   assert(upref < stack->size() && "Invalid up reference");
   return (*stack)[upref - stack->size() - 1];
 }
 
-const TypeInfo* getGEPIndexedType(const TypeInfo* PTy, ValueList* idxs) {
-  const TypeInfo* Result = PTy = PTy->resolve();
+const Type* getGEPIndexedType(const Type* PTy, ValueList* idxs) {
+  const Type* Result = PTy = PTy->resolve();
   assert(PTy->isPointer() && "GEP Operand is not a pointer?");
-  TypeInfo::UpRefStack stack;
+  Type::UpRefStack stack;
   for (unsigned i = 0; i < idxs->size(); ++i) {
     if (Result->isComposite()) {
       Result = Result->getIndexedType((*idxs)[i]);
@@ -828,7 +831,7 @@
 // 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.
-std::string getUniqueName(const std::string *Name, const TypeInfo* Ty,
+std::string getUniqueName(const std::string *Name, const Type* Ty,
                           bool isGlobal = false, bool isDef = false) {
 
   // If its not a symbolic name, don't modify it, probably a constant val.
@@ -843,10 +846,10 @@
   Ty = Ty->resolve(); 
 
   // If its a global name, get its uniquified name, if any
-  TypeInfo::GlobalsTypeMap::iterator GI = TypeInfo::Globals.find(*Name);
-  if (GI != TypeInfo::Globals.end()) {
-    TypeInfo::TypePlaneMap::iterator TPI = GI->second.begin();
-    TypeInfo::TypePlaneMap::iterator TPE = GI->second.end();
+  Type::GlobalsTypeMap::iterator GI = Type::Globals.find(*Name);
+  if (GI != Type::Globals.end()) {
+    Type::TypePlaneMap::iterator TPI = GI->second.begin();
+    Type::TypePlaneMap::iterator TPE = GI->second.end();
     for ( ; TPI != TPE ; ++TPI) {
       if (TPI->first->sameNewTyAs(Ty)) 
         return TPI->second;
@@ -869,13 +872,13 @@
 }
 
 std::string getGlobalName(const std::string* Name, const std::string Linkage,
-                          const TypeInfo* Ty, bool isConstant) {
+                          const Type* Ty, bool isConstant) {
   // Default to given name
   std::string Result = *Name; 
   // Look up the name in the Globals Map
-  TypeInfo::GlobalsTypeMap::iterator GI = TypeInfo::Globals.find(*Name);
+  Type::GlobalsTypeMap::iterator GI = Type::Globals.find(*Name);
   // Did we see this global name before?
-  if (GI != TypeInfo::Globals.end()) {
+  if (GI != Type::Globals.end()) {
     if (Ty->isUnresolvedDeep()) {
       // The Gval's type is unresolved. Consequently, we can't disambiguate it
       // by type. We'll just change its name and emit a warning.
@@ -886,7 +889,7 @@
       Result += llvm::utostr(UniqueNameCounter);
       return Result;
     } else {
-      TypeInfo::TypePlaneMap::iterator TPI = GI->second.find(Ty);
+      Type::TypePlaneMap::iterator TPI = GI->second.find(Ty);
       if (TPI != GI->second.end()) {
         // We found an existing name of the same old type. This isn't allowed 
         // in LLVM 2.0. Consequently, we must alter the name of the global so it
@@ -901,8 +904,8 @@
         // There isn't an existing definition for this name according to the
         // old types. Now search the TypePlanMap for types with the same new
         // name. 
-        TypeInfo::TypePlaneMap::iterator TPI = GI->second.begin();
-        TypeInfo::TypePlaneMap::iterator TPE = GI->second.end();
+        Type::TypePlaneMap::iterator TPI = GI->second.begin();
+        Type::TypePlaneMap::iterator TPE = GI->second.end();
         for ( ; TPI != TPE; ++TPI) {
           if (TPI->first->sameNewTyAs(Ty)) {
             // The new types are the same but the old types are different so 
@@ -942,23 +945,23 @@
   // Its a new global name, if it is external we can't change it
   if (isConstant || Linkage == "external" || Linkage == "dllimport" || 
       Linkage == "extern_weak" || Linkage == "") {
-    TypeInfo::Globals[Result][Ty] = Result;
+    Type::Globals[Result][Ty] = Result;
     return Result;
   }
 
   // Its a new global name, and it is internal, change the name to make it
   // unique for its type.
   // Result = getUniqueName(Name, Ty);
-  TypeInfo::Globals[*Name][Ty] = Result;
+  Type::Globals[*Name][Ty] = Result;
   return Result;
 }
 
 } // End anonymous namespace
 
-// This function is used by the Lexer to create a TypeInfo. It can't be
+// This function is used by the Lexer to create a Type. It can't be
 // in the anonymous namespace.
-const TypeInfo* getTypeInfo(const std::string& newTy, Types oldTy) {
-  return TypeInfo::get(newTy, oldTy);
+const Type* getType(const std::string& newTy, TypeIDs oldTy) {
+  return Type::get(newTy, oldTy);
 }
 
 %}
@@ -967,15 +970,15 @@
 
 %union {
   std::string*    String;
-  const TypeInfo* Type;
-  ValueInfo*      Value;
-  ConstInfo*      Const;
+  const Type*     Ty;
+  Value*          Val;
+  Constant*       Const;
   ValueList*      ValList;
   TypeList*       TypeVec;
 }
 
-%token <Type>   VOID BOOL SBYTE UBYTE SHORT USHORT INT UINT LONG ULONG
-%token <Type>   FLOAT DOUBLE LABEL 
+%token <Ty>     VOID BOOL SBYTE UBYTE SHORT USHORT INT UINT LONG ULONG
+%token <Ty>     FLOAT DOUBLE LABEL 
 %token <String> OPAQUE ESINT64VAL EUINT64VAL SINTVAL UINTVAL FPVAL
 %token <String> NULL_TOK UNDEF ZEROINITIALIZER TRUETOK FALSETOK
 %token <String> TYPE VAR_ID LABELSTR STRINGCONSTANT
@@ -1017,13 +1020,13 @@
 %type <ValList> ValueRefList ValueRefListE IndexList
 %type <TypeVec> TypeListI ArgTypeListI
 
-%type <Type> IntType SIntType UIntType FPType TypesV Types 
-%type <Type> PrimType UpRTypesV UpRTypes
+%type <Ty> IntType SIntType UIntType FPType TypesV Types 
+%type <Ty> PrimType UpRTypesV UpRTypes
 
 %type <String> IntVal EInt64Val 
 %type <Const>  ConstVal
 
-%type <Value> ValueRef ResolvedVal InstVal PHIList MemoryInst
+%type <Val> ValueRef ResolvedVal InstVal PHIList MemoryInst
 
 %start Module
 
@@ -1137,17 +1140,17 @@
 PrimType : LONG | ULONG | FLOAT | DOUBLE | LABEL;
 UpRTypes 
   : OPAQUE { 
-    $$ = TypeInfo::get(*$1, OpaqueTy);
+    $$ = Type::get(*$1, OpaqueTy);
   } 
   | SymbolicValueRef { 
-    $$ = TypeInfo::get(*$1, UnresolvedTy);
+    $$ = Type::get(*$1, UnresolvedTy);
   }
   | PrimType { 
     $$ = $1; 
   }
   | '\\' EUINT64VAL {                   // Type UpReference
     $2->insert(0, "\\");
-    $$ = TypeInfo::get(*$2, UpRefTy);
+    $$ = Type::get(*$2, UpRefTy);
   }
   | UpRTypesV '(' ArgTypeListI ')' {           // Function derived type?
     std::string newTy( $1->getNewTy() + "(");
@@ -1160,19 +1163,19 @@
         newTy += (*$3)[i]->getNewTy();
     }
     newTy += ")";
-    $$ = TypeInfo::get(newTy, $1, $3);
+    $$ = Type::get(newTy, $1, $3);
   }
   | '[' EUINT64VAL 'x' UpRTypes ']' {          // Sized array type?
     uint64_t elems = atoi($2->c_str());
     $2->insert(0,"[ ");
     *$2 += " x " + $4->getNewTy() + " ]";
-    $$ = TypeInfo::get(*$2, ArrayTy, $4, elems);
+    $$ = Type::get(*$2, ArrayTy, $4, elems);
   }
   | '<' EUINT64VAL 'x' UpRTypes '>' {          // Packed array type?
     uint64_t elems = atoi($2->c_str());
     $2->insert(0,"< ");
     *$2 += " x " + $4->getNewTy() + " >";
-    $$ = TypeInfo::get(*$2, PackedTy, $4, elems);
+    $$ = Type::get(*$2, PackedTy, $4, elems);
   }
   | '{' TypeListI '}' {                        // Structure type?
     std::string newTy("{");
@@ -1182,10 +1185,10 @@
       newTy += (*$2)[i]->getNewTy();
     }
     newTy += "}";
-    $$ = TypeInfo::get(newTy, StructTy, $2);
+    $$ = Type::get(newTy, StructTy, $2);
   }
   | '{' '}' {                                  // Empty structure type?
-    $$ = TypeInfo::get("{}", StructTy, new TypeList());
+    $$ = Type::get("{}", StructTy, new TypeList());
   }
   | '<' '{' TypeListI '}' '>' {                // Packed Structure type?
     std::string newTy("<{");
@@ -1195,10 +1198,10 @@
       newTy += (*$3)[i]->getNewTy();
     }
     newTy += "}>";
-    $$ = TypeInfo::get(newTy, PackedStructTy, $3);
+    $$ = Type::get(newTy, PackedStructTy, $3);
   }
   | '<' '{' '}' '>' {                          // Empty packed structure type?
-    $$ = TypeInfo::get("<{}>", PackedStructTy, new TypeList());
+    $$ = Type::get("<{}>", PackedStructTy, new TypeList());
   }
   | UpRTypes '*' {                             // Pointer type?
     $$ = $1->getPointerType();
@@ -1222,12 +1225,12 @@
   : TypeListI 
   | TypeListI ',' DOTDOTDOT {
     $$ = $1;
-    $$->push_back(TypeInfo::get("void",VoidTy));
+    $$->push_back(Type::get("void",VoidTy));
     delete $3;
   }
   | DOTDOTDOT {
     $$ = new TypeList();
-    $$->push_back(TypeInfo::get("void",VoidTy));
+    $$->push_back(Type::get("void",VoidTy));
     delete $1;
   }
   | /*empty*/ {
@@ -1241,61 +1244,61 @@
 // ResolvedVal, ValueRef and ConstValueRef productions.
 //
 ConstVal: Types '[' ConstVector ']' { // Nonempty unsized arr
-    $$ = new ConstInfo;
+    $$ = new Constant;
     $$->type = $1;
     $$->cnst = new std::string($1->getNewTy());
     *$$->cnst += " [ " + *$3 + " ]";
     delete $3;
   }
   | Types '[' ']' {
-    $$ = new ConstInfo;
+    $$ = new Constant;
     $$->type = $1;
     $$->cnst = new std::string($1->getNewTy());
     *$$->cnst += "[ ]";
   }
   | Types 'c' STRINGCONSTANT {
-    $$ = new ConstInfo;
+    $$ = new Constant;
     $$->type = $1;
     $$->cnst = new std::string($1->getNewTy());
     *$$->cnst += " c" + *$3;
     delete $3;
   }
   | Types '<' ConstVector '>' { // Nonempty unsized arr
-    $$ = new ConstInfo;
+    $$ = new Constant;
     $$->type = $1;
     $$->cnst = new std::string($1->getNewTy());
     *$$->cnst += " < " + *$3 + " >";
     delete $3;
   }
   | Types '{' ConstVector '}' {
-    $$ = new ConstInfo;
+    $$ = new Constant;
     $$->type = $1;
     $$->cnst = new std::string($1->getNewTy());
     *$$->cnst += " { " + *$3 + " }";
     delete $3;
   }
   | Types '{' '}' {
-    $$ = new ConstInfo;
+    $$ = new Constant;
     $$->type = $1;
     $$->cnst = new std::string($1->getNewTy());
     *$$->cnst += " {}";
   }
   | Types NULL_TOK {
-    $$ = new ConstInfo;
+    $$ = new Constant;
     $$->type = $1;
     $$->cnst = new std::string($1->getNewTy());
     *$$->cnst +=  " " + *$2;
     delete $2;
   }
   | Types UNDEF {
-    $$ = new ConstInfo;
+    $$ = new Constant;
     $$->type = $1;
     $$->cnst = new std::string($1->getNewTy());
     *$$->cnst += " " + *$2;
     delete $2;
   }
   | Types SymbolicValueRef {
-    $$ = new ConstInfo;
+    $$ = new Constant;
     std::string Name = getUniqueName($2, $1->resolve(), true);
     $$->type = $1;
     $$->cnst = new std::string($1->getNewTy());
@@ -1303,49 +1306,49 @@
     delete $2;
   }
   | Types ConstExpr {
-    $$ = new ConstInfo;
+    $$ = new Constant;
     $$->type = $1;
     $$->cnst = new std::string($1->getNewTy());
     *$$->cnst += " " + *$2;
     delete $2;
   }
   | Types ZEROINITIALIZER {
-    $$ = new ConstInfo;
+    $$ = new Constant;
     $$->type = $1;
     $$->cnst = new std::string($1->getNewTy());
     *$$->cnst += " " + *$2;
     delete $2;
   }
   | SIntType EInt64Val {      // integral constants
-    $$ = new ConstInfo;
+    $$ = new Constant;
     $$->type = $1;
     $$->cnst = new std::string($1->getNewTy());
     *$$->cnst += " " + *$2;
     delete $2;
   }
   | UIntType EInt64Val {            // integral constants
-    $$ = new ConstInfo;
+    $$ = new Constant;
     $$->type = $1;
     $$->cnst = new std::string($1->getNewTy());
     *$$->cnst += " " + *$2;
     delete $2;
   }
   | BOOL TRUETOK {                      // Boolean constants
-    $$ = new ConstInfo;
+    $$ = new Constant;
     $$->type = $1;
     $$->cnst = new std::string($1->getNewTy());
     *$$->cnst += " " + *$2;
     delete $2;
   }
   | BOOL FALSETOK {                     // Boolean constants
-    $$ = new ConstInfo;
+    $$ = new Constant;
     $$->type = $1;
     $$->cnst = new std::string($1->getNewTy());
     *$$->cnst += " " + *$2;
     delete $2;
   }
   | FPType FPVAL {                   // Float & Double constants
-    $$ = new ConstInfo;
+    $$ = new Constant;
     $$->type = $1;
     $$->cnst = new std::string($1->getNewTy());
     *$$->cnst += " " + *$2;
@@ -1354,8 +1357,8 @@
 
 ConstExpr: CastOps '(' ConstVal TO Types ')' {
     std::string source = *$3->cnst;
-    const TypeInfo* SrcTy = $3->type->resolve();
-    const TypeInfo* DstTy = $5->resolve(); 
+    const Type* SrcTy = $3->type->resolve();
+    const Type* DstTy = $5->resolve(); 
     if (*$1 == "cast") {
       // Call getCastUpgrade to upgrade the old cast
       $$ = new std::string(getCastUpgrade(source, SrcTy, DstTy, true));
@@ -1369,9 +1372,9 @@
   | GETELEMENTPTR '(' ConstVal IndexList ')' {
     *$1 += "(" + *$3->cnst;
     for (unsigned i = 0; i < $4->size(); ++i) {
-      ValueInfo* VI = (*$4)[i];
-      *$1 += ", " + *VI->val;
-      delete VI;
+      Value* V = (*$4)[i];
+      *$1 += ", " + *V->val;
+      delete V;
     }
     *$1 += ")";
     $$ = $1;
@@ -1485,9 +1488,9 @@
 
 // ConstPool - Constants with optional names assigned to them.
 ConstPool : ConstPool OptAssign TYPE TypesV {
-    TypeInfo::EnumeratedTypes.push_back($4);
+    Type::EnumeratedTypes.push_back($4);
     if (!$2->empty()) {
-      TypeInfo::NamedTypes[*$2] = $4;
+      Type::NamedTypes[*$2] = $4;
       *O << *$2 << " = ";
     }
     *O << "type " << $4->getNewTy() << '\n';
@@ -1739,13 +1742,13 @@
 // ValueRef - A reference to a definition... either constant or symbolic
 ValueRef 
   : SymbolicValueRef {
-    $$ = new ValueInfo;
+    $$ = new Value;
     $$->val = $1;
     $$->constant = false;
     $$->type = 0;
   }
   | ConstValueRef {
-    $$ = new ValueInfo;
+    $$ = new Value;
     $$->val = $1;
     $$->constant = true;
     $$->type = 0;
@@ -1839,7 +1842,7 @@
   }
   | OptAssign INVOKE OptCallingConv TypesV ValueRef '(' ValueRefListE ')'
     TO LABEL ValueRef Unwind LABEL ValueRef {
-    const TypeInfo* ResTy = getFunctionReturnType($4);
+    const Type* ResTy = getFunctionReturnType($4);
     *O << "    ";
     if (!$1->empty()) {
       std::string Name = getUniqueName($1, ResTy);
@@ -1847,11 +1850,11 @@
     }
     *O << *$2 << ' ' << *$3 << ' ' << $4->getNewTy() << ' ' << *$5->val << " (";
     for (unsigned i = 0; i < $7->size(); ++i) {
-      ValueInfo* VI = (*$7)[i];
-      *O << *VI->val;
+      Value* V = (*$7)[i];
+      *O << *V->val;
       if (i+1 < $7->size())
         *O << ", ";
-      delete VI;
+      delete V;
     }
     *O << ") " << *$9 << ' ' << $10->getNewTy() << ' ' << *$11->val << ' ' 
        << *$12 << ' ' << $13->getNewTy() << ' ' << *$14->val << '\n';
@@ -1906,7 +1909,7 @@
     std::string Name = getUniqueName($3->val, $1);
     Name.insert(0, $1->getNewTy() + "[");
     Name += "," + *$5->val + "]";
-    $$ = new ValueInfo;
+    $$ = new Value;
     $$->val = new std::string(Name);
     $$->type = $1;
     delete $3; delete $5;
@@ -1974,7 +1977,7 @@
     $$ = $3;
     delete $$->val;
     $$->val = $1;
-    $$->type = TypeInfo::get("i1",BoolTy);
+    $$->type = Type::get("i1",BoolTy);
     delete $5;
   }
   | ICMP IPredicates Types ValueRef ',' ValueRef {
@@ -1984,7 +1987,7 @@
     $$ = $4;
     delete $$->val;
     $$->val = $1;
-    $$->type = TypeInfo::get("i1",BoolTy);
+    $$->type = Type::get("i1",BoolTy);
     delete $2; delete $6;
   }
   | FCMP FPredicates Types ValueRef ',' ValueRef {
@@ -1994,7 +1997,7 @@
     $$ = $4;
     delete $$->val;
     $$->val = $1;
-    $$->type = TypeInfo::get("i1",BoolTy);
+    $$->type = Type::get("i1",BoolTy);
     delete $2; delete $6;
   }
   | ShiftOps ResolvedVal ',' ResolvedVal {
@@ -2010,8 +2013,8 @@
   }
   | CastOps ResolvedVal TO Types {
     std::string source = *$2->val;
-    const TypeInfo* SrcTy = $2->type->resolve();
-    const TypeInfo* DstTy = $4->resolve();
+    const Type* SrcTy = $2->type->resolve();
+    const Type* DstTy = $4->resolve();
     $$ = $2;
     delete $$->val;
     $$->val = new std::string();
@@ -2085,14 +2088,14 @@
   }
   | OptTailCall OptCallingConv TypesV ValueRef '(' ValueRefListE ')'  {
     // map llvm.isunordered to "fcmp uno" 
-    $$ = new ValueInfo;
+    $$ = new Value;
     if (*$4->val == "%llvm.isunordered.f32" ||
         *$4->val == "%llvm.isunordered.f64") {
       $$->val = new std::string( "fcmp uno " + *(*$6)[0]->val + ", ");
       size_t pos = (*$6)[1]->val->find(' ');
       assert(pos != std::string::npos && "no space?");
       *$$->val += (*$6)[1]->val->substr(pos+1);
-      $$->type = TypeInfo::get("i1", BoolTy);
+      $$->type = Type::get("i1", BoolTy);
     } else {
       static unsigned upgradeCount = 1;
       if (*$4->val == "%llvm.va_start" || *$4->val == "%llvm.va_end") {
@@ -2101,7 +2104,7 @@
           name += llvm::utostr(upgradeCount++);
           $1->insert(0, name + " = bitcast " + *(*$6)[0]->val + " to i8*\n    ");
           *(*$6)[0]->val = "i8* " + name;
-          (*$6)[0]->type = TypeInfo::get("i8", UByteTy)->getPointerType();
+          (*$6)[0]->type = Type::get("i8", UByteTy)->getPointerType();
         }
       } else if (*$4->val == "%llvm.va_copy") {
         std::string name0("%va_upgrade");
@@ -2111,9 +2114,9 @@
         $1->insert(0, name0 + " = bitcast " + *(*$6)[0]->val + " to i8*\n    " +
                       name1 + " = bitcast " + *(*$6)[1]->val + " to i8*\n    ");
         *(*$6)[0]->val = "i8* " + name0;
-        (*$6)[0]->type = TypeInfo::get("i8", UByteTy)->getPointerType();
+        (*$6)[0]->type = Type::get("i8", UByteTy)->getPointerType();
         *(*$6)[1]->val = "i8* " + name1;
-        (*$6)[0]->type = TypeInfo::get("i8", UByteTy)->getPointerType();
+        (*$6)[0]->type = Type::get("i8", UByteTy)->getPointerType();
       }
       if (!$2->empty())
         *$1 += " " + *$2;
@@ -2121,14 +2124,14 @@
         *$1 += " ";
       *$1 += $3->getNewTy() + " " + *$4->val + "(";
       for (unsigned i = 0; i < $6->size(); ++i) {
-        ValueInfo* VI = (*$6)[i];
-        *$1 += *VI->val;
+        Value* V = (*$6)[i];
+        *$1 += *V->val;
         if (i+1 < $6->size())
           *$1 += ", ";
-        delete VI;
+        delete V;
       }
       *$1 += ")";
-      $$ = new ValueInfo;
+      $$ = new Value;
       $$->val = $1;
       $$->type = getFunctionReturnType($3);
     }
@@ -2152,7 +2155,7 @@
     *$1 += " " + $2->getNewTy();
     if (!$3->empty())
       *$1 += " " + *$3;
-    $$ = new ValueInfo;
+    $$ = new Value;
     $$->val = $1;
     $$->type = $2->getPointerType();
     delete $3;
@@ -2162,7 +2165,7 @@
     *$1 += " " + $2->getNewTy() + ", " + $4->getNewTy() + " " + Name;
     if (!$6->empty())
       *$1 += " " + *$6;
-    $$ = new ValueInfo;
+    $$ = new Value;
     $$->val = $1;
     $$->type = $2->getPointerType();
     delete $5; delete $6;
@@ -2171,7 +2174,7 @@
     *$1 += " " + $2->getNewTy();
     if (!$3->empty())
       *$1 += " " + *$3;
-    $$ = new ValueInfo;
+    $$ = new Value;
     $$->val = $1;
     $$->type = $2->getPointerType();
     delete $3;
@@ -2192,7 +2195,7 @@
     $$ = $2;
     delete $2->val;
     $$->val = $1;
-    $$->type = TypeInfo::get("void", VoidTy); 
+    $$->type = Type::get("void", VoidTy); 
   }
   | OptVolatile LOAD Types ValueRef {
     std::string Name = getUniqueName($4->val, $3);
@@ -2213,26 +2216,26 @@
     $$ = $3;
     delete $$->val;
     $$->val = $1;
-    $$->type = TypeInfo::get("void", VoidTy);
+    $$->type = Type::get("void", VoidTy);
     delete $2; delete $6;
   }
   | 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) {
-        *O << "    %gep_upgrade" << UniqueNameCounter << " = zext " << *VI->val 
+      Value* V = (*$4)[i];
+      if (V->type->isUnsigned() && !V->isConstant() && 
+          V->type->getBitWidth() < 64) {
+        *O << "    %gep_upgrade" << UniqueNameCounter << " = zext " << *V->val 
            << " to i64\n";
-        *VI->val = "i64 %gep_upgrade" + llvm::utostr(UniqueNameCounter++);
-        VI->type = TypeInfo::get("i64",ULongTy);
+        *V->val = "i64 %gep_upgrade" + llvm::utostr(UniqueNameCounter++);
+        V->type = Type::get("i64",ULongTy);
       }
     }
     *$1 += " " + $2->getNewTy() + " " + Name;
     for (unsigned i = 0; i < $4->size(); ++i) {
-      ValueInfo* VI = (*$4)[i];
-      *$1 += ", " + *VI->val;
+      Value* V = (*$4)[i];
+      *$1 += ", " + *V->val;
     }
     $$ = $3;
     delete $$->val;






More information about the llvm-commits mailing list