eliminate code related to --no-ir-gen

BUG=
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1522433004 .
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 30c9f96..4cf29da 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -16,7 +16,6 @@
   -DALLOW_LLVM_CL=0
   -DALLOW_LLVM_IR=0
   -DALLOW_LLVM_IR_AS_INPUT=0
-  -DALLOW_DISABLE_IR_GEN=0
   -DALLOW_MINIMAL_BUILD=1
   -DPNACL_BROWSER_TRANSLATOR=1
   )
@@ -26,7 +25,6 @@
   -DALLOW_LLVM_CL=1
   -DALLOW_LLVM_IR=1
   -DALLOW_LLVM_IR_AS_INPUT=1
-  -DALLOW_DISABLE_IR_GEN=1
   -DALLOW_MINIMAL_BUILD=0
   -DPNACL_BROWSER_TRANSLATOR=0
   )
diff --git a/Makefile b/Makefile
index cf86103..b1564c8 100644
--- a/Makefile
+++ b/Makefile
@@ -21,11 +21,11 @@
 
 ifeq ($(PNACL_BROWSER_TRANSLATOR),1)
   CPP.Defines += -DALLOW_DUMP=0 -DALLOW_LLVM_CL=0 -DALLOW_LLVM_IR=0 \
-    -DALLOW_LLVM_IR_AS_INPUT=0 -DALLOW_DISABLE_IR_GEN=0 \
-    -DALLOW_MINIMAL_BUILD=1 -DPNACL_BROWSER_TRANSLATOR=1
+    -DALLOW_LLVM_IR_AS_INPUT=0 -DALLOW_MINIMAL_BUILD=1 \
+    -DPNACL_BROWSER_TRANSLATOR=1
 else
   CPP.Defines += -DALLOW_DUMP=1 -DALLOW_LLVM_CL=1 -DALLOW_LLVM_IR=1 \
-    -DALLOW_LLVM_IR_AS_INPUT=1 -DALLOW_DISABLE_IR_GEN=1 \
-    -DALLOW_MINIMAL_BUILD=0 -DPNACL_BROWSER_TRANSLATOR=0
+    -DALLOW_LLVM_IR_AS_INPUT=1 -DALLOW_MINIMAL_BUILD=0 \
+    -DPNACL_BROWSER_TRANSLATOR=0
 endif
 
diff --git a/Makefile.standalone b/Makefile.standalone
index 940817c..2997247 100644
--- a/Makefile.standalone
+++ b/Makefile.standalone
@@ -78,12 +78,10 @@
   NOASSERT = 1
   OBJDIR := $(OBJDIR)+Min
   BASE_CXX_DEFINES += -DALLOW_DUMP=0 -DALLOW_LLVM_CL=0 -DALLOW_LLVM_IR=0 \
-    -DALLOW_LLVM_IR_AS_INPUT=0 -DALLOW_DISABLE_IR_GEN=0 \
-    -DALLOW_MINIMAL_BUILD=1
+    -DALLOW_LLVM_IR_AS_INPUT=0 -DALLOW_MINIMAL_BUILD=1
 else
   BASE_CXX_DEFINES += -DALLOW_DUMP=1 -DALLOW_LLVM_CL=1 -DALLOW_LLVM_IR=1 \
-    -DALLOW_LLVM_IR_AS_INPUT=1 -DALLOW_DISABLE_IR_GEN=1 \
-    -DALLOW_MINIMAL_BUILD=0
+    -DALLOW_LLVM_IR_AS_INPUT=1 -DALLOW_MINIMAL_BUILD=0
 endif
 
 SB_CXX_DEFINES := $(BASE_CXX_DEFINES) -DPNACL_BROWSER_TRANSLATOR=1
diff --git a/src/IceBuildDefs.h b/src/IceBuildDefs.h
index 5dabd9a..fc06f65 100644
--- a/src/IceBuildDefs.h
+++ b/src/IceBuildDefs.h
@@ -15,70 +15,66 @@
 #define SUBZERO_SRC_ICEBUILDDEFS_H
 
 namespace Ice {
-  /// \brief Defines constexpr functions that express various Subzero build
-  /// system defined values.
-  ///
-  /// These resulting constexpr functions allow code to in effect be
-  /// conditionally compiled without having to do this using the older C++
-  /// preprocessor solution.
+/// \brief Defines constexpr functions that express various Subzero build
+/// system defined values.
+///
+/// These resulting constexpr functions allow code to in effect be
+/// conditionally compiled without having to do this using the older C++
+/// preprocessor solution.
 
-  /** \verbatim
+/** \verbatim
 
-   For example whenever the value of FEATURE_SUPPORTED is needed, instead
-   of (except in these constexpr functions):
+ For example whenever the value of FEATURE_SUPPORTED is needed, instead
+ of (except in these constexpr functions):
 
-   #if FEATURE_SUPPORTED ...
-   ...
-   #endif
+ #if FEATURE_SUPPORTED ...
+ ...
+ #endif
 
-   We can have:
+ We can have:
 
-   namespace Ice {
-   namespace BuildDefs {
+ namespace Ice {
+ namespace BuildDefs {
 
-   // Use this form when FEATURE_SUPPORTED is guaranteed to be defined on the
-   // C++ compiler command line as 0 or 1.
-   constexpr bool hasFeature() { return FEATURE_SUPPORTED; }
+ // Use this form when FEATURE_SUPPORTED is guaranteed to be defined on the
+ // C++ compiler command line as 0 or 1.
+ constexpr bool hasFeature() { return FEATURE_SUPPORTED; }
 
-   or
+ or
 
-   // Use this form when FEATURE_SUPPORTED may not necessarily be defined on
-   // the C++ compiler command line.
-   constexpr bool hasFeature() {
-   #if FEATURE_SUPPORTED
-     return true;
-   #else // !FEATURE_SUPPORTED
-     return false;
-   #endif // !FEATURE_SUPPORTED
-   }
+ // Use this form when FEATURE_SUPPORTED may not necessarily be defined on
+ // the C++ compiler command line.
+ constexpr bool hasFeature() {
+ #if FEATURE_SUPPORTED
+   return true;
+ #else // !FEATURE_SUPPORTED
+   return false;
+ #endif // !FEATURE_SUPPORTED
+ }
 
-   ...} // end of namespace BuildDefs
-   } // end of namespace Ice
+ ...} // end of namespace BuildDefs
+ } // end of namespace Ice
 
 
-   And later in the code:
+ And later in the code:
 
-   if (Ice::BuildDefs::hasFeature() {
-      ...
-   }
+ if (Ice::BuildDefs::hasFeature() {
+    ...
+ }
 
-   \endverbatim
+ \endverbatim
 
-   Since hasFeature() returns a constexpr, an optimizing compiler will know to
-   keep or discard the above fragment. In addition, the code will always be
-   looked at by the compiler which eliminates the problem with defines in that
-   if you don't build that variant, you don't even know if the code would
-   compile unless you build with that variant.
+ Since hasFeature() returns a constexpr, an optimizing compiler will know to
+ keep or discard the above fragment. In addition, the code will always be
+ looked at by the compiler which eliminates the problem with defines in that
+ if you don't build that variant, you don't even know if the code would
+ compile unless you build with that variant.
 
-    **/
-
+  **/
 
 namespace BuildDefs {
 
 // The ALLOW_* etc. symbols must be #defined to zero or non-zero.
-/// Return true if ALLOW_DISABLE_IR_GEN is defined as a non-zero value
-constexpr bool disableIrGen() { return ALLOW_DISABLE_IR_GEN; }
-/// Return true if ALLOW_DUMP is defined as a non-zero value
 constexpr bool dump() { return ALLOW_DUMP; }
 /// Return true if ALLOW_LLVM_CL is defined as a non-zero value
 constexpr bool llvmCl() { return ALLOW_LLVM_CL; }
diff --git a/src/IceClFlags.cpp b/src/IceClFlags.cpp
index b922d40..56b0585 100644
--- a/src/IceClFlags.cpp
+++ b/src/IceClFlags.cpp
@@ -82,9 +82,7 @@
 
 cl::opt<bool> DisableInternal("externalize",
                               cl::desc("Externalize all symbols"));
-// Note: Modifiable only if ALLOW_DISABLE_IR_GEN.
-cl::opt<bool> DisableIRGeneration("no-ir-gen",
-                                  cl::desc("Disable generating Subzero IR."));
+
 cl::opt<bool> DisableTranslation("notranslate",
                                  cl::desc("Disable Subzero translation"));
 
@@ -390,7 +388,6 @@
   OutFlags.DecorateAsm = false;
   OutFlags.DisableHybridAssembly = false;
   OutFlags.DisableInternal = false;
-  OutFlags.DisableIRGeneration = false;
   OutFlags.DisableTranslation = false;
   OutFlags.DumpStats = false;
   OutFlags.EnableBlockProfile = false;
@@ -434,9 +431,6 @@
 }
 
 void ClFlags::getParsedClFlags(ClFlags &OutFlags) {
-  if (::DisableIRGeneration)
-    ::DisableTranslation = true;
-
   Ice::VerboseMask VMask = Ice::IceV_None;
   // Don't generate verbose messages if routines to dump messages are not
   // available.
@@ -457,7 +451,6 @@
   OutFlags.setDisableHybridAssembly(::DisableHybridAssembly ||
                                     (::OutFileType != Ice::FT_Iasm));
   OutFlags.setDisableInternal(::DisableInternal);
-  OutFlags.setDisableIRGeneration(::DisableIRGeneration);
   OutFlags.setDisableTranslation(::DisableTranslation);
   OutFlags.setDumpStats(::DumpStats);
   OutFlags.setEnableBlockProfile(::EnableBlockProfile);
diff --git a/src/IceClFlags.h b/src/IceClFlags.h
index a514a9b..1beb2a0 100644
--- a/src/IceClFlags.h
+++ b/src/IceClFlags.h
@@ -70,11 +70,6 @@
   bool getDisableInternal() const { return DisableInternal; }
   void setDisableInternal(bool NewValue) { DisableInternal = NewValue; }
 
-  bool getDisableIRGeneration() const {
-    return BuildDefs::disableIrGen() && DisableIRGeneration;
-  }
-  void setDisableIRGeneration(bool NewValue) { DisableIRGeneration = NewValue; }
-
   bool getDisableTranslation() const { return DisableTranslation; }
   void setDisableTranslation(bool NewValue) { DisableTranslation = NewValue; }
 
@@ -260,7 +255,6 @@
   bool DecorateAsm;
   bool DisableHybridAssembly;
   bool DisableInternal;
-  bool DisableIRGeneration;
   bool DisableTranslation;
   bool DumpStats;
   bool EnableBlockProfile;
diff --git a/src/IceCompiler.cpp b/src/IceCompiler.cpp
index 82f99a9..2d70b66 100644
--- a/src/IceCompiler.cpp
+++ b/src/IceCompiler.cpp
@@ -47,7 +47,6 @@
   int FlagValue;
 } ConditionalBuildAttributes[] = {
     {"dump", BuildDefs::dump()},
-    {"disable_ir_gen", BuildDefs::disableIrGen()},
     {"llvm_cl", BuildDefs::llvmCl()},
     {"llvm_ir", BuildDefs::llvmIr()},
     {"llvm_ir_as_input", BuildDefs::llvmIrAsInput()},
@@ -95,12 +94,6 @@
   if (ExtraFlags.getGenerateBuildAtts())
     return Ctx.getErrorStatus()->assign(EC_None);
 
-  if (!BuildDefs::disableIrGen() && Ctx.getFlags().getDisableIRGeneration()) {
-    Ctx.getStrError() << "Error: Build doesn't allow --no-ir-gen when not "
-                      << "ALLOW_DISABLE_IR_GEN!\n";
-    return Ctx.getErrorStatus()->assign(EC_Args);
-  }
-
   // The Minimal build (specifically, when dump()/emit() are not implemented)
   // allows only --filetype=obj. Check here to avoid cryptic error messages
   // downstream.
diff --git a/src/IceConverter.cpp b/src/IceConverter.cpp
index 58b1d3a..e976a8b 100644
--- a/src/IceConverter.cpp
+++ b/src/IceConverter.cpp
@@ -89,8 +89,6 @@
       : LLVM2ICEConverter(Converter), Func(nullptr) {}
 
   void convertFunction(const Function *F) {
-    if (Ctx->isIRGenerationDisabled())
-      return;
     Func = Ice::Cfg::create(Ctx, Converter.getNextSequenceNumber());
     Ice::Cfg::setCurrentCfg(Func.get());
 
diff --git a/src/IceGlobalContext.h b/src/IceGlobalContext.h
index ec4e717..01724fb 100644
--- a/src/IceGlobalContext.h
+++ b/src/IceGlobalContext.h
@@ -222,10 +222,6 @@
 
   const ClFlags &getFlags() const { return Flags; }
 
-  bool isIRGenerationDisabled() const {
-    return getFlags().getDisableIRGeneration();
-  }
-
   /// Allocate data of type T using the global allocator. We allow entities
   /// allocated from this global allocator to be either trivially or
   /// non-trivially destructible. We optimize the case when T is trivially
diff --git a/src/IceOperand.h b/src/IceOperand.h
index 7398f73..67ff09f 100644
--- a/src/IceOperand.h
+++ b/src/IceOperand.h
@@ -166,8 +166,6 @@
 
   static ConstantPrimitive *create(GlobalContext *Ctx, Type Ty,
                                    PrimType Value) {
-    assert(!Ctx->isIRGenerationDisabled() &&
-           "Attempt to build primitive constant when IR generation disabled");
     return new (Ctx->allocate<ConstantPrimitive>())
         ConstantPrimitive(Ty, Value);
   }
@@ -279,8 +277,6 @@
 public:
   static ConstantRelocatable *create(GlobalContext *Ctx, Type Ty,
                                      const RelocatableTuple &Tuple) {
-    assert(!Ctx->isIRGenerationDisabled() &&
-           "Attempt to build relocatable constant when IR generation disabled");
     return new (Ctx->allocate<ConstantRelocatable>()) ConstantRelocatable(
         Ty, Tuple.Offset, Tuple.Name, Tuple.SuppressMangling);
   }
@@ -320,8 +316,6 @@
 
 public:
   static ConstantUndef *create(GlobalContext *Ctx, Type Ty) {
-    assert(!Ctx->isIRGenerationDisabled() &&
-           "Attempt to build undefined constant when IR generation disabled");
     return new (Ctx->allocate<ConstantUndef>()) ConstantUndef(Ty);
   }
 
diff --git a/src/PNaClTranslator.cpp b/src/PNaClTranslator.cpp
index bdb524c..ddf6342 100644
--- a/src/PNaClTranslator.cpp
+++ b/src/PNaClTranslator.cpp
@@ -250,11 +250,6 @@
 
   size_t getNumTypeIDValues() const { return TypeIDValues.size(); }
 
-  /// Returns true if generation of Subzero IR is disabled.
-  bool isIRGenerationDisabled() const {
-    return Translator.getFlags().getDisableIRGeneration();
-  }
-
   /// Returns the undefined type associated with type ID. Note: Returns extended
   /// type ready to be defined.
   ExtendedType *getTypeByIDForDefining(NaClBcIndexSize_t ID) {
@@ -534,11 +529,8 @@
     for (const Ice::FunctionDeclaration *Func : FunctionDeclarations) {
       if (!Func->verifyLinkageCorrect(Ctx))
         reportLinkageError("Function", *Func);
-      Ice::Constant *C = nullptr;
-      if (!isIRGenerationDisabled()) {
-        C = getConstantSym(Func->getName(), Func->getSuppressMangling(),
-                           Func->isProto());
-      }
+      Ice::Constant *C = getConstantSym(
+          Func->getName(), Func->getSuppressMangling(), Func->isProto());
       ValueIDConstants.push_back(C);
     }
   }
@@ -549,11 +541,9 @@
     for (const Ice::VariableDeclaration *Decl : *VariableDeclarations) {
       if (!Decl->verifyLinkageCorrect(Ctx))
         reportLinkageError("Global", *Decl);
-      Ice::Constant *C = nullptr;
-      if (!isIRGenerationDisabled()) {
-        C = getConstantSym(Decl->getName(), Decl->getSuppressMangling(),
-                           !Decl->hasInitializer());
-      }
+      Ice::Constant *C =
+          getConstantSym(Decl->getName(), Decl->getSuppressMangling(),
+                         !Decl->hasInitializer());
       ValueIDConstants.push_back(C);
     }
   }
@@ -681,10 +671,6 @@
 
   const Ice::ClFlags &getFlags() const { return getTranslator().getFlags(); }
 
-  bool isIRGenerationDisabled() const {
-    return getTranslator().getFlags().getDisableIRGeneration();
-  }
-
   // Default implementation. Reports that block is unknown and skips its
   // contents.
   bool ParseBlock(unsigned BlockID) override;
@@ -1145,11 +1131,9 @@
     uint32_t Alignment =
         Context->extractAlignment(this, "Global variable", Values[0]);
     CurGlobalVar = getGlobalVarByID(NextGlobalID);
-    if (!isIRGenerationDisabled()) {
-      InitializersNeeded = 1;
-      CurGlobalVar->setAlignment(Alignment);
-      CurGlobalVar->setIsConstant(Values[1] != 0);
-    }
+    InitializersNeeded = 1;
+    CurGlobalVar->setAlignment(Alignment);
+    CurGlobalVar->setIsConstant(Values[1] != 0);
     ++NextGlobalID;
     return;
   }
@@ -1169,16 +1153,12 @@
       Error(StrBuf.str());
       return;
     }
-    if (isIRGenerationDisabled())
-      return;
     InitializersNeeded = Values[0];
     return;
   case naclbitc::GLOBALVAR_ZEROFILL: {
     // ZEROFILL: [size]
     if (!isValidRecordSize(1, "zerofill"))
       return;
-    if (isIRGenerationDisabled())
-      return;
     CurGlobalVar->addInitializer(
         Ice::VariableDeclaration::ZeroInitializer::create(Values[0]));
     return;
@@ -1187,8 +1167,6 @@
     // DATA: [b0, b1, ...]
     if (!isValidRecordSizeAtLeast(1, "data"))
       return;
-    if (isIRGenerationDisabled())
-      return;
     CurGlobalVar->addInitializer(
         Ice::VariableDeclaration::DataInitializer::create(Values));
     return;
@@ -1197,8 +1175,6 @@
     // RELOC: [val, [addend]]
     if (!isValidRecordSizeInRange(1, 2, "reloc"))
       return;
-    if (isIRGenerationDisabled())
-      return;
     NaClBcIndexSize_t Index = Values[0];
     NaClBcIndexSize_t IndexLimit = SpecifiedNumberVars + NumFunctionIDs;
     if (Index >= IndexLimit) {
@@ -1365,22 +1341,16 @@
 
     // TODO(kschimpf) Clean up API to add a function signature to a CFG.
     const Ice::FuncSigType &Signature = FuncDecl->getSignature();
-    if (isIRGenerationDisabled()) {
-      CurrentNode = nullptr;
-      for (Ice::Type ArgType : Signature.getArgList()) {
-        (void)ArgType;
-        setNextLocalInstIndex(nullptr);
-      }
-    } else {
-      Func->setFunctionName(FuncDecl->getName());
-      Func->setReturnType(Signature.getReturnType());
-      Func->setInternal(FuncDecl->getLinkage() == GlobalValue::InternalLinkage);
-      CurrentNode = installNextBasicBlock();
-      Func->setEntryNode(CurrentNode);
-      for (Ice::Type ArgType : Signature.getArgList()) {
-        Func->addArg(getNextInstVar(ArgType));
-      }
+
+    Func->setFunctionName(FuncDecl->getName());
+    Func->setReturnType(Signature.getReturnType());
+    Func->setInternal(FuncDecl->getLinkage() == GlobalValue::InternalLinkage);
+    CurrentNode = installNextBasicBlock();
+    Func->setEntryNode(CurrentNode);
+    for (Ice::Type ArgType : Signature.getArgList()) {
+      Func->addArg(getNextInstVar(ArgType));
     }
+
     bool ParserResult = ParseThisBlock();
 
     // Temporarily end per-function timing, which will be resumed by the
@@ -1424,8 +1394,6 @@
     if (Index < CachedNumGlobalValueIDs) {
       return Context->getGlobalConstantByID(Index);
     }
-    if (isIRGenerationDisabled())
-      return nullptr;
     NaClBcIndexSize_t LocalIndex = Index - CachedNumGlobalValueIDs;
     if (LocalIndex >= LocalOperands.size())
       reportGetOperandUndefined(Index);
@@ -1480,14 +1448,12 @@
 
   // Creates and appends a new basic block to the list of basic blocks.
   Ice::CfgNode *installNextBasicBlock() {
-    assert(!isIRGenerationDisabled());
     Ice::CfgNode *Node = Func->makeNode();
     return Node;
   }
 
   // Returns the Index-th basic block in the list of basic blocks.
   Ice::CfgNode *getBasicBlock(NaClBcIndexSize_t Index) {
-    assert(!isIRGenerationDisabled());
     if (Index >= Func->getNumNodes()) {
       std::string Buffer;
       raw_string_ostream StrBuf(Buffer);
@@ -1503,7 +1469,6 @@
   // Index corresponds to a branch instruction. Hence, if the branch references
   // the entry block, it also generates a corresponding error.
   Ice::CfgNode *getBranchBasicBlock(NaClBcIndexSize_t Index) {
-    assert(!isIRGenerationDisabled());
     if (Index == 0) {
       Error("Branch to entry block not allowed");
     }
@@ -1512,7 +1477,6 @@
 
   // Generate an instruction variable with type Ty.
   Ice::Variable *createInstVar(Ice::Type Ty) {
-    assert(!isIRGenerationDisabled());
     if (Ty == Ice::IceType_void) {
       Error("Can't define instruction value using type void");
       // Recover since we can't throw an exception.
@@ -1523,7 +1487,6 @@
 
   // Generates the next available local variable using the given type.
   Ice::Variable *getNextInstVar(Ice::Type Ty) {
-    assert(!isIRGenerationDisabled());
     assert(NextLocalInstIndex >= CachedNumGlobalValueIDs);
     // Before creating one, see if a forwardtyperef has already defined it.
     NaClBcIndexSize_t LocalIndex = NextLocalInstIndex - CachedNumGlobalValueIDs;
@@ -1566,7 +1529,7 @@
 
   // Sets element Index (in the local operands list) to Op.
   void setOperand(NaClBcIndexSize_t Index, Ice::Operand *Op) {
-    assert(Op || isIRGenerationDisabled());
+    assert(Op);
     // Check if simple push works.
     NaClBcIndexSize_t LocalIndex = Index - CachedNumGlobalValueIDs;
     if (LocalIndex == LocalOperands.size()) {
@@ -2134,8 +2097,6 @@
   // Check if the last instruction in the function was terminating.
   if (!InstIsTerminating) {
     Error("Last instruction in function not terminator");
-    if (isIRGenerationDisabled())
-      return;
     // Recover by inserting an unreachable instruction.
     CurrentNode->appendInst(Ice::InstUnreachable::create(Func.get()));
   }
@@ -2147,8 +2108,6 @@
            << " basic blocks, but defined " << CurrentBbIndex << ".";
     Error(StrBuf.str());
   }
-  if (isIRGenerationDisabled())
-    return;
   // Before translating, check for blocks without instructions, and insert
   // unreachable. This shouldn't happen, but be safe.
   size_t Index = 0;
@@ -2183,8 +2142,7 @@
   if (InstIsTerminating) {
     InstIsTerminating = false;
     ++CurrentBbIndex;
-    if (!isIRGenerationDisabled())
-      CurrentNode = getBasicBlock(CurrentBbIndex);
+    CurrentNode = getBasicBlock(CurrentBbIndex);
   }
   // The base index for relative indexing.
   NaClBcIndexSize_t BaseIndex = getNextInstIndex();
@@ -2217,8 +2175,6 @@
     }
 
     DeclaredNumberBbs = NumBbs;
-    if (isIRGenerationDisabled())
-      return;
     // Install the basic blocks, skipping bb0 which was created in the
     // constructor.
     for (size_t i = 1; i < NumBbs; ++i)
@@ -2231,11 +2187,6 @@
       return;
     Ice::Operand *Op1 = getRelativeOperand(Values[0], BaseIndex);
     Ice::Operand *Op2 = getRelativeOperand(Values[1], BaseIndex);
-    if (isIRGenerationDisabled()) {
-      assert(Op1 == nullptr && Op2 == nullptr);
-      setNextLocalInstIndex(nullptr);
-      return;
-    }
     Ice::Type Type1 = Op1->getType();
     Ice::Type Type2 = Op2->getType();
     if (Type1 != Type2) {
@@ -2263,11 +2214,6 @@
     Ice::Operand *Src = getRelativeOperand(Values[0], BaseIndex);
     Ice::Type CastType = Context->getSimpleTypeByID(Values[1]);
     Ice::InstCast::OpKind CastKind;
-    if (isIRGenerationDisabled()) {
-      assert(Src == nullptr);
-      setNextLocalInstIndex(nullptr);
-      return;
-    }
     if (!convertCastOpToIceOp(Values[2], Src->getType(), CastType, CastKind)) {
       appendErrorInstruction(CastType);
       return;
@@ -2283,11 +2229,6 @@
     Ice::Operand *ThenVal = getRelativeOperand(Values[0], BaseIndex);
     Ice::Operand *ElseVal = getRelativeOperand(Values[1], BaseIndex);
     Ice::Operand *CondVal = getRelativeOperand(Values[2], BaseIndex);
-    if (isIRGenerationDisabled()) {
-      assert(ThenVal == nullptr && ElseVal == nullptr && CondVal == nullptr);
-      setNextLocalInstIndex(nullptr);
-      return;
-    }
     Ice::Type ThenType = ThenVal->getType();
     Ice::Type ElseType = ElseVal->getType();
     if (ThenType != ElseType) {
@@ -2331,11 +2272,6 @@
       return;
     Ice::Operand *Vec = getRelativeOperand(Values[0], BaseIndex);
     Ice::Operand *Index = getRelativeOperand(Values[1], BaseIndex);
-    if (isIRGenerationDisabled()) {
-      assert(Vec == nullptr && Index == nullptr);
-      setNextLocalInstIndex(nullptr);
-      return;
-    }
     Ice::Type VecType = Vec->getType();
     VectorIndexCheckValue IndexCheckValue = validateVectorIndex(Vec, Index);
     if (IndexCheckValue != VectorIndexValid) {
@@ -2359,11 +2295,6 @@
     Ice::Operand *Vec = getRelativeOperand(Values[0], BaseIndex);
     Ice::Operand *Elt = getRelativeOperand(Values[1], BaseIndex);
     Ice::Operand *Index = getRelativeOperand(Values[2], BaseIndex);
-    if (isIRGenerationDisabled()) {
-      assert(Vec == nullptr && Elt == nullptr && Index == nullptr);
-      setNextLocalInstIndex(nullptr);
-      return;
-    }
     Ice::Type VecType = Vec->getType();
     VectorIndexCheckValue IndexCheckValue = validateVectorIndex(Vec, Index);
     if (IndexCheckValue != VectorIndexValid) {
@@ -2397,11 +2328,6 @@
       return;
     Ice::Operand *Op1 = getRelativeOperand(Values[0], BaseIndex);
     Ice::Operand *Op2 = getRelativeOperand(Values[1], BaseIndex);
-    if (isIRGenerationDisabled()) {
-      assert(Op1 == nullptr && Op2 == nullptr);
-      setNextLocalInstIndex(nullptr);
-      return;
-    }
     Ice::Type Op1Type = Op1->getType();
     Ice::Type Op2Type = Op2->getType();
     Ice::Type DestType = getCompareResultType(Op1Type);
@@ -2463,15 +2389,9 @@
     if (!isValidRecordSizeInRange(0, 1, "return"))
       return;
     if (Values.empty()) {
-      if (isIRGenerationDisabled())
-        return;
       CurrentNode->appendInst(Ice::InstRet::create(Func.get()));
     } else {
       Ice::Operand *RetVal = getRelativeOperand(Values[0], BaseIndex);
-      if (isIRGenerationDisabled()) {
-        assert(RetVal == nullptr);
-        return;
-      }
       CurrentNode->appendInst(Ice::InstRet::create(Func.get(), RetVal));
     }
     return;
@@ -2480,8 +2400,6 @@
     InstIsTerminating = true;
     if (Values.size() == 1) {
       // BR: [bb#]
-      if (isIRGenerationDisabled())
-        return;
       Ice::CfgNode *Block = getBranchBasicBlock(Values[0]);
       if (Block == nullptr)
         return;
@@ -2491,10 +2409,6 @@
       if (!isValidRecordSize(3, "branch"))
         return;
       Ice::Operand *Cond = getRelativeOperand(Values[2], BaseIndex);
-      if (isIRGenerationDisabled()) {
-        assert(Cond == nullptr);
-        return;
-      }
       if (Cond->getType() != Ice::IceType_i1) {
         std::string Buffer;
         raw_string_ostream StrBuf(Buffer);
@@ -2535,10 +2449,7 @@
     Ice::SizeT BitWidth = Ice::getScalarIntBitWidth(CondTy);
     Ice::Operand *Cond = getRelativeOperand(Values[1], BaseIndex);
 
-    const bool isIRGenDisabled = isIRGenerationDisabled();
-    if (isIRGenDisabled) {
-      assert(Cond == nullptr);
-    } else if (CondTy != Cond->getType()) {
+    if (CondTy != Cond->getType()) {
       std::string Buffer;
       raw_string_ostream StrBuf(Buffer);
       StrBuf << "Case condition expects type " << CondTy
@@ -2546,8 +2457,7 @@
       Error(StrBuf.str());
       return;
     }
-    Ice::CfgNode *DefaultLabel =
-        isIRGenDisabled ? nullptr : getBranchBasicBlock(Values[2]);
+    Ice::CfgNode *DefaultLabel = getBranchBasicBlock(Values[2]);
     if (DefaultLabel == nullptr)
       return;
     uint64_t NumCasesRaw = Values[3];
@@ -2564,9 +2474,7 @@
     if (!isValidRecordSize(4 + NumCases * 4, "switch"))
       return;
     std::unique_ptr<Ice::InstSwitch> Switch(
-        isIRGenDisabled ? nullptr
-                        : Ice::InstSwitch::create(Func.get(), NumCases, Cond,
-                                                  DefaultLabel));
+        Ice::InstSwitch::create(Func.get(), NumCases, Cond, DefaultLabel));
     unsigned ValCaseIndex = 4; // index to beginning of case entry.
     for (uint32_t CaseIndex = 0; CaseIndex < NumCases;
          ++CaseIndex, ValCaseIndex += 4) {
@@ -2580,15 +2488,11 @@
       }
       BitcodeInt Value(BitWidth,
                        NaClDecodeSignRotatedValue(Values[ValCaseIndex + 2]));
-      if (isIRGenDisabled)
-        continue;
       Ice::CfgNode *Label = getBranchBasicBlock(Values[ValCaseIndex + 3]);
       if (Label == nullptr)
         return;
       Switch->addBranch(CaseIndex, Value.getSExtValue(), Label);
     }
-    if (isIRGenDisabled)
-      return;
     CurrentNode->appendInst(Switch.release());
     return;
   }
@@ -2597,8 +2501,6 @@
     InstIsTerminating = true;
     if (!isValidRecordSize(0, "unreachable"))
       return;
-    if (isIRGenerationDisabled())
-      return;
     CurrentNode->appendInst(Ice::InstUnreachable::create(Func.get()));
     return;
   }
@@ -2620,15 +2522,6 @@
       Error("Phi record using type void not allowed");
       return;
     }
-    if (isIRGenerationDisabled()) {
-      // Verify arguments are defined before quitting.
-      for (unsigned i = 1; i < Values.size(); i += 2) {
-        assert(getRelativeOperand(NaClDecodeSignRotatedValue(Values[i]),
-                                  BaseIndex) == nullptr);
-      }
-      setNextLocalInstIndex(nullptr);
-      return;
-    }
     Ice::Variable *Dest = getNextInstVar(Ty);
     Ice::InstPhi *Phi =
         Ice::InstPhi::create(Func.get(), Values.size() >> 1, Dest);
@@ -2655,11 +2548,6 @@
       return;
     Ice::Operand *ByteCount = getRelativeOperand(Values[0], BaseIndex);
     uint32_t Alignment = Context->extractAlignment(this, "Alloca", Values[1]);
-    if (isIRGenerationDisabled()) {
-      assert(ByteCount == nullptr);
-      setNextLocalInstIndex(nullptr);
-      return;
-    }
     Ice::Type PtrTy = Ice::getPointerType();
     if (ByteCount->getType() != Ice::IceType_i32) {
       std::string Buffer;
@@ -2680,11 +2568,6 @@
     Ice::Operand *Address = getRelativeOperand(Values[0], BaseIndex);
     Ice::Type Ty = Context->getSimpleTypeByID(Values[2]);
     uint32_t Alignment = Context->extractAlignment(this, "Load", Values[1]);
-    if (isIRGenerationDisabled()) {
-      assert(Address == nullptr);
-      setNextLocalInstIndex(nullptr);
-      return;
-    }
     if (!isValidPointerType(Address, "Load")) {
       appendErrorInstruction(Ty);
       return;
@@ -2704,10 +2587,6 @@
     Ice::Operand *Address = getRelativeOperand(Values[0], BaseIndex);
     Ice::Operand *Value = getRelativeOperand(Values[1], BaseIndex);
     uint32_t Alignment = Context->extractAlignment(this, "Store", Values[2]);
-    if (isIRGenerationDisabled()) {
-      assert(Address == nullptr && Value == nullptr);
-      return;
-    }
     if (!isValidPointerType(Address, "Store"))
       return;
     if (!isValidLoadStoreAlignment(Alignment, Value->getType(), "Store"))
@@ -2785,19 +2664,17 @@
     } else { // Record.GetCode() == naclbitc::FUNC_CODE_INST_CALL_INDIRECT
       // There is no signature. Assume defined by parameter types.
       ReturnType = Context->getSimpleTypeByID(Values[2]);
-      if (!isIRGenerationDisabled() && Callee != nullptr)
+      if (Callee != nullptr)
         isValidPointerType(Callee, "Call indirect");
     }
 
-    if (Callee == nullptr && !isIRGenerationDisabled())
+    if (Callee == nullptr)
       return;
 
     // Extract out the the call parameters.
     SmallVector<Ice::Operand *, 8> Params;
     for (Ice::SizeT Index = ParamsStartIndex; Index < Values.size(); ++Index) {
       Ice::Operand *Op = getRelativeOperand(Values[Index], BaseIndex);
-      if (isIRGenerationDisabled())
-        continue;
       if (Op == nullptr) {
         std::string Buffer;
         raw_string_ostream StrBuf(Buffer);
@@ -2821,12 +2698,6 @@
       ReturnType = Ice::IceType_i32;
     }
 
-    if (isIRGenerationDisabled()) {
-      if (ReturnType != Ice::IceType_void)
-        setNextLocalInstIndex(nullptr);
-      return;
-    }
-
     // Type check call parameters.
     for (Ice::SizeT Index = 0; Index < Params.size(); ++Index) {
       Ice::Operand *Op = Params[Index];
@@ -2883,8 +2754,7 @@
     if (!isValidRecordSize(2, "forward type ref"))
       return;
     Ice::Type OpType = Context->getSimpleTypeByID(Values[1]);
-    setOperand(Values[0],
-               isIRGenerationDisabled() ? nullptr : createInstVar(OpType));
+    setOperand(Values[0], createInstVar(OpType));
     return;
   }
   default:
@@ -2949,10 +2819,6 @@
       return;
     if (!isValidNextConstantType())
       return;
-    if (isIRGenerationDisabled()) {
-      FuncParser->setNextConstantID(nullptr);
-      return;
-    }
     FuncParser->setNextConstantID(
         getContext()->getConstantUndef(NextConstantType));
     return;
@@ -2963,10 +2829,6 @@
       return;
     if (!isValidNextConstantType())
       return;
-    if (isIRGenerationDisabled()) {
-      FuncParser->setNextConstantID(nullptr);
-      return;
-    }
     if (Ice::isScalarIntegerType(NextConstantType)) {
       BitcodeInt Value(Ice::getScalarIntBitWidth(NextConstantType),
                        NaClDecodeSignRotatedValue(Values[0]));
@@ -2989,10 +2851,6 @@
       return;
     if (!isValidNextConstantType())
       return;
-    if (isIRGenerationDisabled()) {
-      FuncParser->setNextConstantID(nullptr);
-      return;
-    }
     switch (NextConstantType) {
     case Ice::IceType_f32: {
       const BitcodeInt Value(32, static_cast<uint32_t>(Values[0]));
@@ -3067,8 +2925,6 @@
     reportUnableToAssign("Global value", Index, Name);
     return;
   }
-  if (isIRGenerationDisabled())
-    return;
   Ice::Operand *Op = getFunctionParser()->getOperand(Index);
   if (auto *V = dyn_cast<Ice::Variable>(Op)) {
     if (Ice::BuildDefs::dump()) {
@@ -3084,8 +2940,6 @@
                                           StringType &Name) {
   if (!Ice::BuildDefs::dump())
     return;
-  if (isIRGenerationDisabled())
-    return;
   if (Index >= getFunctionParser()->getFunc()->getNumNodes()) {
     reportUnableToAssign("Basic block", Index, Name);
     return;
diff --git a/tests_lit/parse_errs/bad-bb-size.test b/tests_lit/parse_errs/bad-bb-size.test
index 1414c91..e27180a 100644
--- a/tests_lit/parse_errs/bad-bb-size.test
+++ b/tests_lit/parse_errs/bad-bb-size.test
@@ -3,7 +3,7 @@
 ; REQUIRES: no_minimal_build
 
 ; RUN: not %pnacl_sz -bitcode-as-text %p/Inputs/bad-bb-size.tbc \
-; RUN:     -bitcode-format=pnacl -notranslate -no-ir-gen -build-on-read \
+; RUN:     -bitcode-format=pnacl -notranslate -build-on-read \
 ; RUN:     -allow-externally-defined-symbols 2>&1 \
 ; RUN:   | FileCheck %s
 
diff --git a/tests_lit/parse_errs/bad-global-alignment.test b/tests_lit/parse_errs/bad-global-alignment.test
index 20cab35..5cef7ac 100644
--- a/tests_lit/parse_errs/bad-global-alignment.test
+++ b/tests_lit/parse_errs/bad-global-alignment.test
@@ -5,7 +5,7 @@
 ; REQUIRES: no_minimal_build
 
 ; RUN: not %pnacl_sz -bitcode-as-text %p/Inputs/bad-global-alignment.tbc \
-; RUN:     -bitcode-format=pnacl -notranslate -no-ir-gen -build-on-read 2>&1 \
+; RUN:     -bitcode-format=pnacl -notranslate -build-on-read 2>&1 \
 ; RUN:   | FileCheck %s
 
 ; CHECK: Global variable alignment greater than 2**29. Found: 2**30
diff --git a/tests_lit/parse_errs/bad-var-fwdref.test b/tests_lit/parse_errs/bad-var-fwdref.test
index ebf20da..cf6cf7c 100644
--- a/tests_lit/parse_errs/bad-var-fwdref.test
+++ b/tests_lit/parse_errs/bad-var-fwdref.test
@@ -3,7 +3,7 @@
 ; REQUIRES: no_minimal_build
 
 ; RUN: not %pnacl_sz -bitcode-as-text %p/Inputs/bad-var-fwdref.tbc \
-; RUN:     -bitcode-format=pnacl -notranslate -no-ir-gen -build-on-read \
+; RUN:     -bitcode-format=pnacl -notranslate -build-on-read \
 ; RUN:     -allow-externally-defined-symbols 2>&1 \
 ; RUN:   | FileCheck %s
 
diff --git a/tests_lit/parse_errs/duplicate-fcn-name.test b/tests_lit/parse_errs/duplicate-fcn-name.test
index 2ff1a6c..5d72d36 100644
--- a/tests_lit/parse_errs/duplicate-fcn-name.test
+++ b/tests_lit/parse_errs/duplicate-fcn-name.test
@@ -3,7 +3,7 @@
 ; REQUIRES: no_minimal_build
 
 ; RUN: not %pnacl_sz -bitcode-as-text %p/Inputs/duplicate-fcn-name.tbc \
-; RUN:     -bitcode-format=pnacl -notranslate -no-ir-gen -build-on-read 2>&1 \
+; RUN:     -bitcode-format=pnacl -notranslate -build-on-read 2>&1 \
 ; RUN:   | FileCheck %s
 
 ; CHECK: Module valuesymtab defines duplicate value name: 'f'
diff --git a/tests_lit/reader_tests/alloca.ll b/tests_lit/reader_tests/alloca.ll
index 034cc4f..bb18e74 100644
--- a/tests_lit/reader_tests/alloca.ll
+++ b/tests_lit/reader_tests/alloca.ll
@@ -1,9 +1,7 @@
 ; Test if we can read alloca instructions.
 
 ; RUN: %p2i -i %s --insts | FileCheck %s
-; RUN: %if --need=allow_disable_ir_gen --command \
-; RUN:   %p2i -i %s --args -notranslate -timing -no-ir-gen \
-; RUN: | %if --need=allow_disable_ir_gen --command \
+; RUN:   %p2i -i %s --args -notranslate -timing | \
 ; RUN:   FileCheck --check-prefix=NOIR %s
 
 ; Show examples where size is defined by a constant.
diff --git a/tests_lit/reader_tests/binops.ll b/tests_lit/reader_tests/binops.ll
index 6436343..c4533ac 100644
--- a/tests_lit/reader_tests/binops.ll
+++ b/tests_lit/reader_tests/binops.ll
@@ -3,9 +3,7 @@
 ; RUN: %p2i -i %s --insts | FileCheck %s
 ; RUN: %l2i -i %s --insts | %ifl FileCheck %s
 ; RUN: %lc2i -i %s --insts | %iflc FileCheck %s
-; RUN: %if --need=allow_disable_ir_gen --command \
-; RUN:   %p2i -i %s --args -notranslate -timing -no-ir-gen \
-; RUN: | %if --need=allow_disable_ir_gen --command \
+; RUN:   %p2i -i %s --args -notranslate -timing | \
 ; RUN:   FileCheck --check-prefix=NOIR %s
 
 ; TODO(kschimpf): add i8/i16. Needs bitcasts.
diff --git a/tests_lit/reader_tests/branch.ll b/tests_lit/reader_tests/branch.ll
index 0b70223..5613fdb 100644
--- a/tests_lit/reader_tests/branch.ll
+++ b/tests_lit/reader_tests/branch.ll
@@ -1,9 +1,7 @@
 ; Tests if we handle a branch instructions.
 
 ; RUN: %p2i -i %s --insts | FileCheck %s
-; RUN: %if --need=allow_disable_ir_gen --command \
-; RUN:   %p2i -i %s --args -notranslate -timing -no-ir-gen \
-; RUN: | %if --need=allow_disable_ir_gen --command \
+; RUN:   %p2i -i %s --args -notranslate -timing | \
 ; RUN:   FileCheck --check-prefix=NOIR %s
 
 define internal void @SimpleBranch() {
diff --git a/tests_lit/reader_tests/call.ll b/tests_lit/reader_tests/call.ll
index ab1cfec..59af96c 100644
--- a/tests_lit/reader_tests/call.ll
+++ b/tests_lit/reader_tests/call.ll
@@ -2,10 +2,8 @@
 
 ; RUN: %p2i -i %s --insts --args -allow-externally-defined-symbols \
 ; RUN: | FileCheck %s
-; RUN: %if --need=allow_disable_ir_gen --command \
-; RUN:   %p2i -i %s --args -notranslate -timing -no-ir-gen \
-; RUN:        -allow-externally-defined-symbols \
-; RUN: | %if --need=allow_disable_ir_gen --command \
+; RUN:   %p2i -i %s --args -notranslate -timing \
+; RUN:        -allow-externally-defined-symbols | \
 ; RUN:   FileCheck --check-prefix=NOIR %s
 
 define internal i32 @fib(i32 %n) {
diff --git a/tests_lit/reader_tests/casts.ll b/tests_lit/reader_tests/casts.ll
index 2475379..901fa9a 100644
--- a/tests_lit/reader_tests/casts.ll
+++ b/tests_lit/reader_tests/casts.ll
@@ -1,9 +1,7 @@
 ; Tests if we can read cast operations.
 
 ; RUN: %p2i -i %s --insts --no-local-syms | FileCheck %s
-; RUN: %if --need=allow_disable_ir_gen --command \
-; RUN:   %p2i -i %s --args -notranslate -timing -no-ir-gen \
-; RUN: | %if --need=allow_disable_ir_gen --command \
+; RUN:   %p2i -i %s --args -notranslate -timing | \
 ; RUN:   FileCheck --check-prefix=NOIR %s
 
 ; TODO(kschimpf) Find way to test pointer conversions (since they in general
diff --git a/tests_lit/reader_tests/compare.ll b/tests_lit/reader_tests/compare.ll
index d140bfd..7acc3b0 100644
--- a/tests_lit/reader_tests/compare.ll
+++ b/tests_lit/reader_tests/compare.ll
@@ -1,9 +1,7 @@
 ; Test if we can read compare instructions.
 
 ; RUN: %p2i -i %s --insts | FileCheck %s
-; RUN: %if --need=allow_disable_ir_gen --command \
-; RUN:   %p2i -i %s --args -notranslate -timing -no-ir-gen \
-; RUN: | %if --need=allow_disable_ir_gen --command \
+; RUN:   %p2i -i %s --args -notranslate -timing | \
 ; RUN:   FileCheck --check-prefix=NOIR %s
 
 define internal i1 @IcmpI1(i32 %p1, i32 %p2) {
diff --git a/tests_lit/reader_tests/constants.ll b/tests_lit/reader_tests/constants.ll
index f6efeaf..e63112e 100644
--- a/tests_lit/reader_tests/constants.ll
+++ b/tests_lit/reader_tests/constants.ll
@@ -1,9 +1,7 @@
 ; Test handling of constants in function blocks.
 
 ; RUN: %p2i -i %s --insts | FileCheck %s
-; RUN: %if --need=allow_disable_ir_gen --command \
-; RUN:   %p2i -i %s --args -notranslate -timing -no-ir-gen \
-; RUN: | %if --need=allow_disable_ir_gen --command \
+; RUN:   %p2i -i %s --args -notranslate -timing | \
 ; RUN:   FileCheck --check-prefix=NOIR %s
 
 define internal void @TestIntegers() {
diff --git a/tests_lit/reader_tests/forwardref.ll b/tests_lit/reader_tests/forwardref.ll
index 980f633..401f44f 100644
--- a/tests_lit/reader_tests/forwardref.ll
+++ b/tests_lit/reader_tests/forwardref.ll
@@ -3,9 +3,7 @@
 ; RUN: %p2i -i %s --insts | FileCheck %s
 ; RUN: llvm-as < %s | pnacl-freeze | pnacl-bcdis -no-records \
 ; RUN:              | FileCheck --check-prefix=DUMP %s
-; RUN: %if --need=allow_disable_ir_gen --command \
-; RUN:   %p2i -i %s --args -notranslate -timing -no-ir-gen \
-; RUN: | %if --need=allow_disable_ir_gen --command \
+; RUN:   %p2i -i %s --args -notranslate -timing | \
 ; RUN:   FileCheck --check-prefix=NOIR %s
 
 define internal void @LoopCarriedDep() {
diff --git a/tests_lit/reader_tests/globalinit.pnacl.ll b/tests_lit/reader_tests/globalinit.pnacl.ll
index 73c15e3..9d020f3 100644
--- a/tests_lit/reader_tests/globalinit.pnacl.ll
+++ b/tests_lit/reader_tests/globalinit.pnacl.ll
@@ -6,10 +6,8 @@
 ; RUN: | %ifl FileCheck %s
 ; RUN: %lc2i -i %s --insts --args -allow-externally-defined-symbols \
 ; RUN: | %iflc FileCheck %s
-; RUN: %if --need=allow_disable_ir_gen --command \
-; RUN:   %p2i -i %s --args -notranslate -timing -no-ir-gen \
-; RUN:        -allow-externally-defined-symbols \
-; RUN: | %if --need=allow_disable_ir_gen --command \
+; RUN:   %p2i -i %s --args -notranslate -timing \
+; RUN:        -allow-externally-defined-symbols | \
 ; RUN:   FileCheck --check-prefix=NOIR %s
 
 @PrimitiveInit = internal global [4 x i8] c"\1B\00\00\00", align 4
diff --git a/tests_lit/reader_tests/globalrelocs.ll b/tests_lit/reader_tests/globalrelocs.ll
index 55d9524..b6869d1 100644
--- a/tests_lit/reader_tests/globalrelocs.ll
+++ b/tests_lit/reader_tests/globalrelocs.ll
@@ -3,9 +3,7 @@
 ; RUN: %p2i -i %s --insts | FileCheck %s
 ; RUN: %l2i -i %s --insts | %ifl FileCheck %s
 ; RUN: %lc2i -i %s --insts | %iflc FileCheck %s
-; RUN: %if --need=allow_disable_ir_gen --command \
-; RUN:   %p2i -i %s --args -notranslate -timing -no-ir-gen \
-; RUN: | %if --need=allow_disable_ir_gen --command \
+; RUN:   %p2i -i %s --args -notranslate -timing | \
 ; RUN:   FileCheck --check-prefix=NOIR %s
 
 @bytes = internal global [7 x i8] c"abcdefg"
diff --git a/tests_lit/reader_tests/insertextract.ll b/tests_lit/reader_tests/insertextract.ll
index 8259065..ffdda6c 100644
--- a/tests_lit/reader_tests/insertextract.ll
+++ b/tests_lit/reader_tests/insertextract.ll
@@ -3,9 +3,7 @@
 ; RUN: %p2i -i %s --insts | FileCheck %s
 ; RUN: %l2i -i %s --insts | %ifl FileCheck %s
 ; RUN: %lc2i -i %s --insts | %iflc FileCheck %s
-; RUN: %if --need=allow_disable_ir_gen --command \
-; RUN:   %p2i -i %s --args -notranslate -timing -no-ir-gen \
-; RUN: | %if --need=allow_disable_ir_gen --command \
+; RUN:   %p2i -i %s --args -notranslate -timing | \
 ; RUN:   FileCheck --check-prefix=NOIR %s
 
 define internal void @ExtractV4xi1(<4 x i1> %v) {
diff --git a/tests_lit/reader_tests/load.ll b/tests_lit/reader_tests/load.ll
index 08d4e84..0d15992 100644
--- a/tests_lit/reader_tests/load.ll
+++ b/tests_lit/reader_tests/load.ll
@@ -1,9 +1,7 @@
 ; Test if we can read load instructions.
 
 ; RUN: %p2i --no-local-syms -i %s --insts | FileCheck %s
-; RUN: %if --need=allow_disable_ir_gen --command \
-; RUN:   %p2i -i %s --args -notranslate -timing -no-ir-gen \
-; RUN: | %if --need=allow_disable_ir_gen --command \
+; RUN:   %p2i -i %s --args -notranslate -timing | \
 ; RUN:   FileCheck --check-prefix=NOIR %s
 
 define internal i32 @load_i8(i32 %addr) {
diff --git a/tests_lit/reader_tests/nacl-atomic-intrinsics.ll b/tests_lit/reader_tests/nacl-atomic-intrinsics.ll
index d12c723..e0db3a2 100644
--- a/tests_lit/reader_tests/nacl-atomic-intrinsics.ll
+++ b/tests_lit/reader_tests/nacl-atomic-intrinsics.ll
@@ -1,9 +1,7 @@
 ; Test parsing NaCl atomic instructions.
 
 ; RUN: %p2i -i %s --insts | FileCheck %s
-; RUN: %if --need=allow_disable_ir_gen --command \
-; RUN:   %p2i -i %s --args -notranslate -timing -no-ir-gen \
-; RUN: | %if --need=allow_disable_ir_gen --command \
+; RUN:   %p2i -i %s --args -notranslate -timing | \
 ; RUN:   FileCheck --check-prefix=NOIR %s
 
 declare i8 @llvm.nacl.atomic.load.i8(i8*, i32)
diff --git a/tests_lit/reader_tests/nacl-other-intrinsics.ll b/tests_lit/reader_tests/nacl-other-intrinsics.ll
index 38cd72d..f1ef663 100644
--- a/tests_lit/reader_tests/nacl-other-intrinsics.ll
+++ b/tests_lit/reader_tests/nacl-other-intrinsics.ll
@@ -2,10 +2,8 @@
 
 ; RUN: %p2i -i %s --insts --args -allow-externally-defined-symbols \
 ; RUN: | FileCheck %s
-; RUN: %if --need=allow_disable_ir_gen --command \
-; RUN:   %p2i -i %s --args -notranslate -timing -no-ir-gen \
-; RUN:        -allow-externally-defined-symbols \
-; RUN: | %if --need=allow_disable_ir_gen --command \
+; RUN:   %p2i -i %s --args -notranslate -timing \
+; RUN:        -allow-externally-defined-symbols | \
 ; RUN:   FileCheck --check-prefix=NOIR %s
 
 declare i8* @llvm.nacl.read.tp()
diff --git a/tests_lit/reader_tests/phi.ll b/tests_lit/reader_tests/phi.ll
index a90bc4c..de35635 100644
--- a/tests_lit/reader_tests/phi.ll
+++ b/tests_lit/reader_tests/phi.ll
@@ -1,9 +1,7 @@
 ; Test reading phi instructions.
 
 ; RUN: %p2i -i %s --insts | FileCheck %s
-; RUN: %if --need=allow_disable_ir_gen --command \
-; RUN:   %p2i -i %s --args -notranslate -timing -no-ir-gen \
-; RUN: | %if --need=allow_disable_ir_gen --command \
+; RUN:   %p2i -i %s --args -notranslate -timing | \
 ; RUN:   FileCheck --check-prefix=NOIR %s
 
 ; TODO(kschimpf) Add forward reference examples.
diff --git a/tests_lit/reader_tests/select.ll b/tests_lit/reader_tests/select.ll
index 834f1a8..a99c36d 100644
--- a/tests_lit/reader_tests/select.ll
+++ b/tests_lit/reader_tests/select.ll
@@ -1,9 +1,7 @@
 ; Tests if we can read select instructions.
 
 ; RUN: %p2i -i %s --insts | FileCheck %s
-; RUN: %if --need=allow_disable_ir_gen --command \
-; RUN:   %p2i -i %s --args -notranslate -timing -no-ir-gen \
-; RUN: | %if --need=allow_disable_ir_gen --command \
+; RUN:   %p2i -i %s --args -notranslate -timing | \
 ; RUN:   FileCheck --check-prefix=NOIR %s
 
 define internal void @Seli1(i32 %p) {
diff --git a/tests_lit/reader_tests/store.ll b/tests_lit/reader_tests/store.ll
index 33f3302..de4dd77 100644
--- a/tests_lit/reader_tests/store.ll
+++ b/tests_lit/reader_tests/store.ll
@@ -1,9 +1,7 @@
 ; Test if we can read store instructions.
 
 ; RUN: %p2i -i %s --insts --no-local-syms | FileCheck %s
-; RUN: %if --need=allow_disable_ir_gen --command \
-; RUN:   %p2i -i %s --args -notranslate -timing -no-ir-gen \
-; RUN: | %if --need=allow_disable_ir_gen --command \
+; RUN:   %p2i -i %s --args -notranslate -timing | \
 ; RUN:   FileCheck --check-prefix=NOIR %s
 
 define internal void @store_i8(i32 %addr) {
diff --git a/tests_lit/reader_tests/switch.ll b/tests_lit/reader_tests/switch.ll
index 5a6014d..27f7598 100644
--- a/tests_lit/reader_tests/switch.ll
+++ b/tests_lit/reader_tests/switch.ll
@@ -1,9 +1,7 @@
 ; Test switch instructions.
 
 ; RUN: %p2i -i %s --insts | FileCheck %s
-; RUN: %if --need=allow_disable_ir_gen --command \
-; RUN:   %p2i -i %s --args -notranslate -timing -no-ir-gen \
-; RUN: | %if --need=allow_disable_ir_gen --command \
+; RUN:   %p2i -i %s --args -notranslate -timing | \
 ; RUN:   FileCheck --check-prefix=NOIR %s
 
 define internal void @testDefaultSwitch(i32 %a) {
diff --git a/tests_lit/reader_tests/unnamed.ll b/tests_lit/reader_tests/unnamed.ll
index b5db147..3f4e1fd 100644
--- a/tests_lit/reader_tests/unnamed.ll
+++ b/tests_lit/reader_tests/unnamed.ll
@@ -12,9 +12,7 @@
 ; RUN:      -default-function-prefix=h -default-global-prefix=g \
 ; RUN:      | FileCheck --check-prefix=BAD %s
 
-; RUN: %if --need=allow_disable_ir_gen --command \
-; RUN:   %p2i -i %s --args -notranslate -timing -no-ir-gen \
-; RUN: | %if --need=allow_disable_ir_gen --command \
+; RUN:   %p2i -i %s --args -notranslate -timing | \
 ; RUN:   FileCheck --check-prefix=NOIR %s
 
 ; TODO(kschimpf) Check global variable declarations, once generated.
diff --git a/tests_lit/reader_tests/unreachable.ll b/tests_lit/reader_tests/unreachable.ll
index 7f12187..b9950bf 100644
--- a/tests_lit/reader_tests/unreachable.ll
+++ b/tests_lit/reader_tests/unreachable.ll
@@ -1,9 +1,7 @@
 ; Test parsing unreachable instruction.
 
 ; RUN: %p2i -i %s --insts | FileCheck %s
-; RUN: %if --need=allow_disable_ir_gen --command \
-; RUN:   %p2i -i %s --args -notranslate -timing -no-ir-gen \
-; RUN: | %if --need=allow_disable_ir_gen --command \
+; RUN:   %p2i -i %s --args -notranslate -timing | \
 ; RUN:   FileCheck --check-prefix=NOIR %s
 
 define internal i32 @divide(i32 %num, i32 %den) {