diff --git a/include/llvm/Instruction.def b/include/llvm/Instruction.def
index 4a78edf..f40110e 100644
--- a/include/llvm/Instruction.def
+++ b/include/llvm/Instruction.def
@@ -114,7 +114,7 @@
 
 // Other operators...
  FIRST_OTHER_INST(26)
-HANDLE_OTHER_INST(26, PHINode, PHINode    )  // PHI node instruction
+HANDLE_OTHER_INST(26, PHI    , PHINode    )  // PHI node instruction
 HANDLE_OTHER_INST(27, Cast   , CastInst   )  // Type cast
 HANDLE_OTHER_INST(28, Call   , CallInst   )  // Call a function
 
diff --git a/include/llvm/iPHINode.h b/include/llvm/iPHINode.h
index 4dbee25..5213455 100644
--- a/include/llvm/iPHINode.h
+++ b/include/llvm/iPHINode.h
@@ -23,7 +23,7 @@
 public:
   PHINode(const Type *Ty, const std::string &Name = "",
           Instruction *InsertBefore = 0)
-    : Instruction(Ty, Instruction::PHINode, Name, InsertBefore) {
+    : Instruction(Ty, Instruction::PHI, Name, InsertBefore) {
   }
 
   virtual Instruction *clone() const { return new PHINode(*this); }
@@ -98,7 +98,7 @@
   /// Methods for support type inquiry through isa, cast, and dyn_cast:
   static inline bool classof(const PHINode *) { return true; }
   static inline bool classof(const Instruction *I) {
-    return I->getOpcode() == Instruction::PHINode; 
+    return I->getOpcode() == Instruction::PHI; 
   }
   static inline bool classof(const Value *V) {
     return isa<Instruction>(V) && classof(cast<Instruction>(V));
diff --git a/lib/Analysis/IPA/FindUnsafePointerTypes.cpp b/lib/Analysis/IPA/FindUnsafePointerTypes.cpp
index 3f28a6f..3897ec8 100644
--- a/lib/Analysis/IPA/FindUnsafePointerTypes.cpp
+++ b/lib/Analysis/IPA/FindUnsafePointerTypes.cpp
@@ -43,7 +43,7 @@
   case Instruction::GetElementPtr:
   case Instruction::Call:
   case Instruction::Invoke:
-  case Instruction::PHINode:
+  case Instruction::PHI:
     return true;
   }
   return false;
diff --git a/lib/AsmParser/Lexer.l b/lib/AsmParser/Lexer.l
index f0f007b..3092891 100644
--- a/lib/AsmParser/Lexer.l
+++ b/lib/AsmParser/Lexer.l
@@ -219,7 +219,7 @@
 setle           { RET_TOK(BinaryOpVal, SetLE, SETLE); }
 setge           { RET_TOK(BinaryOpVal, SetGE, SETGE); }
 
-phi             { RET_TOK(OtherOpVal, PHINode, PHI); }
+phi             { RET_TOK(OtherOpVal, PHI, PHI_TOK); }
 call            { RET_TOK(OtherOpVal, Call, CALL); }
 cast            { RET_TOK(OtherOpVal, Cast, CAST); }
 shl             { RET_TOK(OtherOpVal, Shl, SHL); }
diff --git a/lib/AsmParser/llvmAsmParser.y b/lib/AsmParser/llvmAsmParser.y
index efb9d3e..eb56f11 100644
--- a/lib/AsmParser/llvmAsmParser.y
+++ b/lib/AsmParser/llvmAsmParser.y
@@ -785,7 +785,7 @@
 
 // Other Operators
 %type  <OtherOpVal> ShiftOps
-%token <OtherOpVal> PHI CALL CAST SHL SHR VAARG VANEXT
+%token <OtherOpVal> PHI_TOK CALL CAST SHL SHR VAARG VANEXT
 %token VA_ARG // FIXME: OBSOLETE
 
 %start Module
@@ -1747,7 +1747,7 @@
     $$ = new VANextInst($2, *$4);
     delete $4;
   }
-  | PHI PHIList {
+  | PHI_TOK PHIList {
     const Type *Ty = $2->front().first->getType();
     $$ = new PHINode(Ty);
     $$->op_reserve($2->size()*2);
diff --git a/lib/Bytecode/Reader/InstructionReader.cpp b/lib/Bytecode/Reader/InstructionReader.cpp
index 84ad4c5..97becaa 100644
--- a/lib/Bytecode/Reader/InstructionReader.cpp
+++ b/lib/Bytecode/Reader/InstructionReader.cpp
@@ -158,7 +158,7 @@
   case Instruction::Cast:
     Result = new CastInst(getValue(RI.Type, Args[0]), getType(Args[1]));
     break;
-  case Instruction::PHINode: {
+  case Instruction::PHI: {
     if (Args.size() == 0 || (Args.size() & 1))
       throw std::string("Invalid phi node encountered!\n");
 
diff --git a/lib/CodeGen/InstrSelection/InstrForest.cpp b/lib/CodeGen/InstrSelection/InstrForest.cpp
index 496e279..7ae2373 100644
--- a/lib/CodeGen/InstrSelection/InstrForest.cpp
+++ b/lib/CodeGen/InstrSelection/InstrForest.cpp
@@ -299,7 +299,7 @@
 	  InstrTreeNode* opTreeNode;
 	  if (isa<Instruction>(operand) && operand->hasOneUse() &&
 	      cast<Instruction>(operand)->getParent() == instr->getParent() &&
-	      instr->getOpcode() != Instruction::PHINode &&
+	      instr->getOpcode() != Instruction::PHI &&
 	      instr->getOpcode() != Instruction::Call)
 	    {
 	      // Recursively create a treeNode for it.
@@ -334,7 +334,7 @@
   if (numChildren > 2)
     {
       unsigned instrOpcode = treeNode->getInstruction()->getOpcode();
-      assert(instrOpcode == Instruction::PHINode ||
+      assert(instrOpcode == Instruction::PHI ||
 	     instrOpcode == Instruction::Call ||
 	     instrOpcode == Instruction::Load ||
 	     instrOpcode == Instruction::Store ||
diff --git a/lib/Target/SparcV9/InstrSelection/InstrForest.cpp b/lib/Target/SparcV9/InstrSelection/InstrForest.cpp
index 496e279..7ae2373 100644
--- a/lib/Target/SparcV9/InstrSelection/InstrForest.cpp
+++ b/lib/Target/SparcV9/InstrSelection/InstrForest.cpp
@@ -299,7 +299,7 @@
 	  InstrTreeNode* opTreeNode;
 	  if (isa<Instruction>(operand) && operand->hasOneUse() &&
 	      cast<Instruction>(operand)->getParent() == instr->getParent() &&
-	      instr->getOpcode() != Instruction::PHINode &&
+	      instr->getOpcode() != Instruction::PHI &&
 	      instr->getOpcode() != Instruction::Call)
 	    {
 	      // Recursively create a treeNode for it.
@@ -334,7 +334,7 @@
   if (numChildren > 2)
     {
       unsigned instrOpcode = treeNode->getInstruction()->getOpcode();
-      assert(instrOpcode == Instruction::PHINode ||
+      assert(instrOpcode == Instruction::PHI ||
 	     instrOpcode == Instruction::Call ||
 	     instrOpcode == Instruction::Load ||
 	     instrOpcode == Instruction::Store ||
diff --git a/lib/Target/SparcV9/SparcV9InstrInfo.cpp b/lib/Target/SparcV9/SparcV9InstrInfo.cpp
index 1807ea0..b4b4702 100644
--- a/lib/Target/SparcV9/SparcV9InstrInfo.cpp
+++ b/lib/Target/SparcV9/SparcV9InstrInfo.cpp
@@ -365,7 +365,7 @@
     case Instruction::Malloc:         
     case Instruction::Alloca:         
     case Instruction::GetElementPtr:  
-    case Instruction::PHINode:       
+    case Instruction::PHI:       
     case Instruction::Cast:
     case Instruction::Call:  modelOpCode = V9::ADDi; break;
 
diff --git a/lib/Transforms/ExprTypeConvert.cpp b/lib/Transforms/ExprTypeConvert.cpp
index abf6e90..8408a29 100644
--- a/lib/Transforms/ExprTypeConvert.cpp
+++ b/lib/Transforms/ExprTypeConvert.cpp
@@ -196,7 +196,7 @@
       return false;
     break;                                     
   }
-  case Instruction::PHINode: {
+  case Instruction::PHI: {
     PHINode *PN = cast<PHINode>(I);
     for (unsigned i = 0; i < PN->getNumIncomingValues(); ++i)
       if (!ExpressionConvertibleToType(PN->getIncomingValue(i), Ty, CTMap, TD))
@@ -402,7 +402,7 @@
     break;
   }
 
-  case Instruction::PHINode: {
+  case Instruction::PHI: {
     PHINode *OldPN = cast<PHINode>(I);
     PHINode *NewPN = new PHINode(Ty, Name);
 
@@ -808,7 +808,7 @@
     }
     return false;
 
-  case Instruction::PHINode: {
+  case Instruction::PHI: {
     PHINode *PN = cast<PHINode>(I);
     for (unsigned i = 0; i < PN->getNumIncomingValues(); ++i)
       if (!ExpressionConvertibleToType(PN->getIncomingValue(i), Ty, CTMap, TD))
@@ -1141,7 +1141,7 @@
 #endif
     break;
 
-  case Instruction::PHINode: {
+  case Instruction::PHI: {
     PHINode *OldPN = cast<PHINode>(I);
     PHINode *NewPN = new PHINode(NewTy, Name);
     VMC.ExprMap[I] = NewPN;
diff --git a/lib/Transforms/IPO/MutateStructTypes.cpp b/lib/Transforms/IPO/MutateStructTypes.cpp
index 91302af..736da63 100644
--- a/lib/Transforms/IPO/MutateStructTypes.cpp
+++ b/lib/Transforms/IPO/MutateStructTypes.cpp
@@ -425,7 +425,7 @@
       }
 
         // Miscellaneous Instructions
-      case Instruction::PHINode: {
+      case Instruction::PHI: {
         const PHINode &OldPN = cast<PHINode>(I);
         PHINode *PN = new PHINode(ConvertType(OldPN.getType()));
         for (unsigned i = 0; i < OldPN.getNumIncomingValues(); ++i)
diff --git a/lib/Transforms/Instrumentation/TraceValues.cpp b/lib/Transforms/Instrumentation/TraceValues.cpp
index f6bc4ce..d4fa79c 100644
--- a/lib/Transforms/Instrumentation/TraceValues.cpp
+++ b/lib/Transforms/Instrumentation/TraceValues.cpp
@@ -180,7 +180,7 @@
   // 
   return (opCode  < Instruction::OtherOpsBegin &&
           opCode != Instruction::Alloca &&
-          opCode != Instruction::PHINode &&
+          opCode != Instruction::PHI &&
           opCode != Instruction::Cast);
 }
 
diff --git a/lib/Transforms/Scalar/Reassociate.cpp b/lib/Transforms/Scalar/Reassociate.cpp
index c837f0b..7d34df4 100644
--- a/lib/Transforms/Scalar/Reassociate.cpp
+++ b/lib/Transforms/Scalar/Reassociate.cpp
@@ -75,7 +75,7 @@
     // for PHI nodes, we cannot have infinite recursion here, because there
     // cannot be loops in the value graph that do not go through PHI nodes.
     //
-    if (I->getOpcode() == Instruction::PHINode ||
+    if (I->getOpcode() == Instruction::PHI ||
         I->getOpcode() == Instruction::Alloca ||
         I->getOpcode() == Instruction::Malloc || isa<TerminatorInst>(I) ||
         I->mayWriteToMemory())  // Cannot move inst if it writes to memory!
diff --git a/lib/VMCore/InstrTypes.cpp b/lib/VMCore/InstrTypes.cpp
index f1b5c4f..137f181 100644
--- a/lib/VMCore/InstrTypes.cpp
+++ b/lib/VMCore/InstrTypes.cpp
@@ -25,7 +25,7 @@
 //===----------------------------------------------------------------------===//
 
 PHINode::PHINode(const PHINode &PN)
-  : Instruction(PN.getType(), Instruction::PHINode) {
+  : Instruction(PN.getType(), Instruction::PHI) {
   Operands.reserve(PN.Operands.size());
   for (unsigned i = 0; i < PN.Operands.size(); i+=2) {
     Operands.push_back(Use(PN.Operands[i], this));
diff --git a/lib/VMCore/Instruction.cpp b/lib/VMCore/Instruction.cpp
index 179a988..b6bedf4 100644
--- a/lib/VMCore/Instruction.cpp
+++ b/lib/VMCore/Instruction.cpp
@@ -87,7 +87,7 @@
   case GetElementPtr: return "getelementptr";
     
   // Other instructions...
-  case PHINode: return "phi";
+  case PHI:     return "phi";
   case Cast:    return "cast";
   case Call:    return "call";
   case Shl:     return "shl";
