diff --git a/lib/Bytecode/Reader/ConstantReader.cpp b/lib/Bytecode/Reader/ConstantReader.cpp
index 4b6e998..2689362 100644
--- a/lib/Bytecode/Reader/ConstantReader.cpp
+++ b/lib/Bytecode/Reader/ConstantReader.cpp
@@ -165,9 +165,7 @@
                 << ArgValSlot << "\n");
       
       // Get the arg value from its slot if it exists, otherwise a placeholder
-      Constant *C = getConstantValue(ArgTy, ArgValSlot);
-      if (C == 0) throw std::string("No arg value or placeholder found.");
-      ArgVec.push_back(C);
+      ArgVec.push_back(getConstantValue(ArgTy, ArgValSlot));
     }
     
     // Construct a ConstantExpr of the appropriate kind
@@ -241,9 +239,7 @@
     while (NumElements--) {   // Read all of the elements of the constant.
       unsigned Slot;
       if (read_vbr(Buf, EndBuf, Slot)) throw Error_readvbr;
-      Constant *C = getConstantValue(AT->getElementType(), Slot);
-      if (!C) throw std::string("Unable to get const value of array slot.");
-      Elements.push_back(C);
+      Elements.push_back(getConstantValue(AT->getElementType(), Slot));
     }
     return ConstantArray::get(AT, Elements);
   }
@@ -256,9 +252,7 @@
     for (unsigned i = 0; i < ET.size(); ++i) {
       unsigned Slot;
       if (read_vbr(Buf, EndBuf, Slot)) throw Error_readvbr;
-      Constant *C = getConstantValue(ET[i], Slot);
-      if (!C) throw std::string("Could not read const value in struct slot.");
-      Elements.push_back(C);
+      Elements.push_back(getConstantValue(ET[i], Slot));
     }
 
     return ConstantStruct::get(ST, Elements);
diff --git a/lib/Bytecode/Reader/Reader.cpp b/lib/Bytecode/Reader/Reader.cpp
index c515c15..bf2b011 100644
--- a/lib/Bytecode/Reader/Reader.cpp
+++ b/lib/Bytecode/Reader/Reader.cpp
@@ -164,7 +164,10 @@
 ///
 Constant *BytecodeParser::getConstantValue(const Type *Ty, unsigned Slot) {
   if (Value *V = getValue(Ty, Slot, false))
-    return dyn_cast<Constant>(V);      // If we already have the value parsed...
+    if (Constant *C = dyn_cast<Constant>(V))
+      return C;   // If we already have the value parsed, just return it
+    else
+      throw std::string("Reference of a value is expected to be a constant!");
 
   std::pair<const Type*, unsigned> Key(Ty, Slot);
   GlobalRefsType::iterator I = GlobalRefs.lower_bound(Key);
