[fast-isel] Add a preemptive fix for the case where we fail to materialize an
authorChad Rosier <mcrosier@apple.com>
Thu, 28 Mar 2013 23:04:47 +0000 (23:04 +0000)
committerChad Rosier <mcrosier@apple.com>
Thu, 28 Mar 2013 23:04:47 +0000 (23:04 +0000)
immediate in a register.  I don't believe this should ever fail, but I see no
harm in trying to make this code bullet proof.

I've added an assert to ensure my assumtion is correct.  If the assertion fires
something is wrong and we should fix it, rather then just silently fall back to
SelectionDAG isel.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178305 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/SelectionDAG/FastISel.cpp

index 10e2dc61499b20bc64aa905ac017772b16607de1..9ac738e507265f3f2b7824e7c239a3d1bcb2ede5 100644 (file)
@@ -1183,6 +1183,8 @@ unsigned FastISel::FastEmit_ri_(MVT VT, unsigned Opcode,
     IntegerType *ITy = IntegerType::get(FuncInfo.Fn->getContext(),
                                               VT.getSizeInBits());
     MaterialReg = getRegForValue(ConstantInt::get(ITy, Imm));
+    assert (MaterialReg != 0 && "Unable to materialize imm.");
+    if (MaterialReg == 0) return 0;
   }
   return FastEmit_rr(VT, VT, Opcode,
                      Op0, Op0IsKill,