diff --git a/llvm/lib/Bytecode/Reader/Reader.cpp b/llvm/lib/Bytecode/Reader/Reader.cpp
index c69e680..321a26f 100644
--- a/llvm/lib/Bytecode/Reader/Reader.cpp
+++ b/llvm/lib/Bytecode/Reader/Reader.cpp
@@ -192,29 +192,28 @@
 
 void BytecodeParser::postResolveValues(ValueTable &ValTab) {
   while (!ValTab.empty()) {
-    ValueList &DL = *ValTab.back();
+    ValueList &VL = *ValTab.back();
     ValTab.pop_back();    
 
-    while (!DL.empty()) {
-      Value *D = DL.back();
-      unsigned IDNumber = getValueIDNumberFromPlaceHolder(D);
-      DL.pop_back();
+    while (!VL.empty()) {
+      Value *V = VL.back();
+      unsigned IDNumber = getValueIDNumberFromPlaceHolder(V);
+      VL.pop_back();
 
-      Value *NewDef = getValue(D->getType(), IDNumber, false);
-      if (NewDef == 0) {
+      Value *NewVal = getValue(V->getType(), IDNumber, false);
+      if (NewVal == 0)
         throw std::string("Unresolvable reference found: <" +
-                          D->getType()->getDescription() + ">:" + 
+                          V->getType()->getDescription() + ">:" + 
                           utostr(IDNumber) + ".");
-      } else {
-        // Fixup all of the uses of this placeholder def...
-        D->replaceAllUsesWith(NewDef);
 
-        // Now that all the uses are gone, delete the placeholder...
-        // If we couldn't find a def (error case), then leak a little
-        delete D;  // memory, 'cause otherwise we can't remove all uses!
-      }
+      // Fixup all of the uses of this placeholder def...
+      V->replaceAllUsesWith(NewVal);
+      
+      // Now that all the uses are gone, delete the placeholder...
+      // If we couldn't find a def (error case), then leak a little
+      delete V;  // memory, 'cause otherwise we can't remove all uses!
     }
-    delete &DL;
+    delete &VL;
   }
 }
 
