Fix a recent fast-isel coverage regression - don't bail out before
authorDan Gohman <gohman@apple.com>
Thu, 25 Sep 2008 01:28:51 +0000 (01:28 +0000)
committerDan Gohman <gohman@apple.com>
Thu, 25 Sep 2008 01:28:51 +0000 (01:28 +0000)
giving the target a chance to materialize constants.

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

lib/CodeGen/SelectionDAG/FastISel.cpp

index 4b773226072cfbb9b54144ff9105fb75323f0ac3..dd7e95294f116d3e54a8d3224b24fb9f364014c7 100644 (file)
@@ -75,16 +75,17 @@ unsigned FastISel::getRegForValue(Value *V) {
   } else if (isa<UndefValue>(V)) {
     Reg = createResultReg(TLI.getRegClassFor(VT));
     BuildMI(MBB, TII.get(TargetInstrInfo::IMPLICIT_DEF), Reg);
-  } else {
-    return 0;
   }
   
+  // If target-independent code couldn't handle the value, give target-specific
+  // code a try.
   if (!Reg && isa<Constant>(V))
     Reg = TargetMaterializeConstant(cast<Constant>(V));
   
   // Don't cache constant materializations in the general ValueMap.
   // To do so would require tracking what uses they dominate.
-  LocalValueMap[V] = Reg;
+  if (Reg != 0)
+    LocalValueMap[V] = Reg;
   return Reg;
 }