diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp b/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
index f502247..7702b3d 100644
--- a/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
+++ b/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
@@ -63,6 +63,9 @@
 static cl::opt<bool>
 EnableFastISelAbort("fast-isel-abort", cl::Hidden,
           cl::desc("Enable abort calls when \"fast\" instruction fails"));
+#else
+static const bool EnableFastISelVerbose = false,
+                  EnableFastISelAbort = false;
 #endif
 static cl::opt<bool>
 SchedLiveInCopies("schedule-livein-copies",
@@ -703,10 +706,8 @@
         for (Function::arg_iterator I = Fn.arg_begin(), E = Fn.arg_end();
              I != E; ++I, ++j)
           if (Fn.paramHasAttr(j, Attribute::ByVal)) {
-#ifndef NDEBUG
             if (EnableFastISelVerbose || EnableFastISelAbort)
               cerr << "FastISel skips entry block due to byval argument\n";
-#endif
             SuppressFastISel = true;
             break;
           }
@@ -770,14 +771,12 @@
         // feed PHI nodes in successor blocks.
         if (isa<TerminatorInst>(BI))
           if (!HandlePHINodesInSuccessorBlocksFast(LLVMBB, FastIS)) {
-#ifndef NDEBUG
             if (EnableFastISelVerbose || EnableFastISelAbort) {
               cerr << "FastISel miss: ";
               BI->dump();
             }
             if (EnableFastISelAbort)
               assert(0 && "FastISel didn't handle a PHI in a successor");
-#endif
             break;
           }
 
@@ -791,12 +790,10 @@
 
         // Then handle certain instructions as single-LLVM-Instruction blocks.
         if (isa<CallInst>(BI)) {
-#ifndef NDEBUG
           if (EnableFastISelVerbose || EnableFastISelAbort) {
             cerr << "FastISel missed call: ";
             BI->dump();
           }
-#endif
 
           if (BI->getType() != Type::VoidTy) {
             unsigned &R = FuncInfo->ValueMap[BI];
@@ -811,7 +808,6 @@
           continue;
         }
 
-#ifndef NDEBUG
         // Otherwise, give up on FastISel for the rest of the block.
         // For now, be a little lenient about non-branch terminators.
         if (!isa<TerminatorInst>(BI) || isa<BranchInst>(BI)) {
@@ -824,7 +820,6 @@
             // For the purpose of debugging, just abort.
             assert(0 && "FastISel didn't select the entire block");
         }
-#endif
         break;
       }
     }
