Emit a better assertion message for PR1133
authorChris Lattner <sabre@nondot.org>
Thu, 1 Feb 2007 01:21:12 +0000 (01:21 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 1 Feb 2007 01:21:12 +0000 (01:21 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33736 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp

index 7e2a2777dfe459c1ab31c9bae04dc727e397e243..af63d369919a91e0cbb7c5e317845b9dae5f369e 100644 (file)
@@ -2663,23 +2663,26 @@ void SelectionDAGLowering::visitInlineAsm(CallInst &I) {
 
         unsigned NumOps = 
           cast<ConstantSDNode>(AsmNodeOperands[CurOp])->getValue();
-        assert((NumOps & 7) == 2 /*REGDEF*/ &&
-               "Skipped past definitions?");
+        if ((NumOps & 7) == 2 /*REGDEF*/) {
+          // Add NumOps>>3 registers to MatchedRegs.
+          RegsForValue MatchedRegs;
+          MatchedRegs.ValueVT = InOperandVal.getValueType();
+          MatchedRegs.RegVT   = AsmNodeOperands[CurOp+1].getValueType();
+          for (unsigned i = 0, e = NumOps>>3; i != e; ++i) {
+            unsigned Reg =
+              cast<RegisterSDNode>(AsmNodeOperands[++CurOp])->getReg();
+            MatchedRegs.Regs.push_back(Reg);
+          }
         
-        // Add NumOps>>3 registers to MatchedRegs.
-        RegsForValue MatchedRegs;
-        MatchedRegs.ValueVT = InOperandVal.getValueType();
-        MatchedRegs.RegVT   = AsmNodeOperands[CurOp+1].getValueType();
-        for (unsigned i = 0, e = NumOps>>3; i != e; ++i) {
-          unsigned Reg=cast<RegisterSDNode>(AsmNodeOperands[++CurOp])->getReg();
-          MatchedRegs.Regs.push_back(Reg);
+          // Use the produced MatchedRegs object to 
+          MatchedRegs.getCopyToRegs(InOperandVal, DAG, Chain, Flag,
+                                    TLI.getPointerTy());
+          MatchedRegs.AddInlineAsmOperands(1 /*REGUSE*/, DAG, AsmNodeOperands);
+          break;
+        } else {
+          assert((NumOps & 7) == 4/*MEM*/ && "Unknown matching constraint!");
+          assert(0 && "matching constraints for memory operands unimp");
         }
-        
-        // Use the produced MatchedRegs object to 
-        MatchedRegs.getCopyToRegs(InOperandVal, DAG, Chain, Flag,
-                                  TLI.getPointerTy());
-        MatchedRegs.AddInlineAsmOperands(1 /*REGUSE*/, DAG, AsmNodeOperands);
-        break;
       }
       
       TargetLowering::ConstraintType CTy = TargetLowering::C_RegisterClass;