Handle the case where target-specific fastisel code doesn't have
authorDan Gohman <gohman@apple.com>
Tue, 19 Aug 2008 20:43:22 +0000 (20:43 +0000)
committerDan Gohman <gohman@apple.com>
Tue, 19 Aug 2008 20:43:22 +0000 (20:43 +0000)
a desired opcode.

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

lib/CodeGen/SelectionDAG/FastISel.cpp

index f4d453966b8eebdcbcdfe9b54b28459be1881c08..62fac06ceb8c0832adeabdc8b5db9e00e65b123d 100644 (file)
@@ -33,6 +33,11 @@ FastISel::SelectInstructions(BasicBlock::iterator Begin, BasicBlock::iterator En
         return I;
       }
       unsigned ResultReg = FastEmit_rr(VT.getSimpleVT(), ISD::ADD, Op0, Op1);
+      if (ResultReg == 0) {
+        // Target-specific code wasn't able to find a machine opcode for
+        // the given ISD opcode and type. Halt "fast" selection and bail.
+        return I;
+      }
       ValueMap[I] = ResultReg;
       break;
     }