* New revised variable argument handling support
* More dense bytecode encoding for varargs calls (like printf)
* Eliminated the extremely old bytecode format.  rev #0 is now 1.0


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9220 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Bytecode/Reader/ConstantReader.cpp b/lib/Bytecode/Reader/ConstantReader.cpp
index 71afaf6..0746b3b 100644
--- a/lib/Bytecode/Reader/ConstantReader.cpp
+++ b/lib/Bytecode/Reader/ConstantReader.cpp
@@ -258,64 +258,47 @@
     return ConstantStruct::get(ST, Elements);
   }    
 
-  case Type::PointerTyID: {
+  case Type::PointerTyID: {  // ConstantPointerRef value...
     const PointerType *PT = cast<PointerType>(Ty);
-    unsigned SubClass;
-    if (HasImplicitZeroInitializer)
-      SubClass = 1;
-    else
-      if (read_vbr(Buf, EndBuf, SubClass)) throw Error_readvbr;
-
-    switch (SubClass) {
-    case 0:    // ConstantPointerNull value...
-      return ConstantPointerNull::get(PT);
-
-    case 1: {  // ConstantPointerRef value...
-      unsigned Slot;
-      if (read_vbr(Buf, EndBuf, Slot)) throw Error_readvbr;
-      BCR_TRACE(4, "CPR: Type: '" << Ty << "'  slot: " << Slot << "\n");
-
-      // Check to see if we have already read this global variable...
-      Value *Val = getValue(PT, Slot, false);
-      GlobalValue *GV;
-      if (Val) {
-        if (!(GV = dyn_cast<GlobalValue>(Val))) 
-          throw std::string("Value of ConstantPointerRef not in ValueTable!");
-        BCR_TRACE(5, "Value Found in ValueTable!\n");
-      } else if (RevisionNum > 0) {
-        // Revision #0 could have forward references to globals that were weird.
-        // We got rid of this in subsequent revs.
-        throw std::string("Forward references to globals not allowed.");
-      } else {         // Nope... find or create a forward ref. for it
-        GlobalRefsType::iterator I = GlobalRefs.find(std::make_pair(PT, Slot));
-
-        if (I != GlobalRefs.end()) {
-          BCR_TRACE(5, "Previous forward ref found!\n");
-          GV = cast<GlobalValue>(I->second);
-        } else {
-          BCR_TRACE(5, "Creating new forward ref to a global variable!\n");
-          
-          // Create a placeholder for the global variable reference...
-          GlobalVariable *GVar =
-            new GlobalVariable(PT->getElementType(), false,
-                               GlobalValue::InternalLinkage);
-          
-          // Keep track of the fact that we have a forward ref to recycle it
-          GlobalRefs.insert(std::make_pair(std::make_pair(PT, Slot), GVar));
-          
-          // Must temporarily push this value into the module table...
-          TheModule->getGlobalList().push_back(GVar);
-          GV = GVar;
-        }
+    unsigned Slot;
+    if (read_vbr(Buf, EndBuf, Slot)) throw Error_readvbr;
+    BCR_TRACE(4, "CPR: Type: '" << Ty << "'  slot: " << Slot << "\n");
+    
+    // Check to see if we have already read this global variable...
+    Value *Val = getValue(PT, Slot, false);
+    GlobalValue *GV;
+    if (Val) {
+      if (!(GV = dyn_cast<GlobalValue>(Val))) 
+        throw std::string("Value of ConstantPointerRef not in ValueTable!");
+      BCR_TRACE(5, "Value Found in ValueTable!\n");
+    } else if (RevisionNum > 0) {
+      // Revision #0 could have forward references to globals that were weird.
+      // We got rid of this in subsequent revs.
+      throw std::string("Forward references to globals not allowed.");
+    } else {         // Nope... find or create a forward ref. for it
+      GlobalRefsType::iterator I = GlobalRefs.find(std::make_pair(PT, Slot));
+      
+      if (I != GlobalRefs.end()) {
+        BCR_TRACE(5, "Previous forward ref found!\n");
+        GV = cast<GlobalValue>(I->second);
+      } else {
+        BCR_TRACE(5, "Creating new forward ref to a global variable!\n");
+        
+        // Create a placeholder for the global variable reference...
+        GlobalVariable *GVar =
+          new GlobalVariable(PT->getElementType(), false,
+                             GlobalValue::InternalLinkage);
+        
+        // Keep track of the fact that we have a forward ref to recycle it
+        GlobalRefs.insert(std::make_pair(std::make_pair(PT, Slot), GVar));
+        
+        // Must temporarily push this value into the module table...
+        TheModule->getGlobalList().push_back(GVar);
+        GV = GVar;
       }
-
-      return ConstantPointerRef::get(GV);
     }
     
-    default:
-      BCR_TRACE(5, "UNKNOWN Pointer Constant Type!\n");
-      throw std::string("Unknown pointer constant type.");
-    }
+    return ConstantPointerRef::get(GV);
   }
 
   default: