Avoid inifinite looping if READCYCLECOUNTER isn't custom lowered.
authorEvan Cheng <evan.cheng@apple.com>
Wed, 29 Nov 2006 19:13:47 +0000 (19:13 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Wed, 29 Nov 2006 19:13:47 +0000 (19:13 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32022 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/SelectionDAG/LegalizeDAG.cpp

index 1c0be0ba52da25aa98e8d692b98ca4de07498c56..bf467b733d08abe70f6dfb044903c548f549e5ef 100644 (file)
@@ -1850,16 +1850,21 @@ SDOperand SelectionDAGLegalize::LegalizeOp(SDOperand Op) {
     switch (TLI.getOperationAction(ISD::READCYCLECOUNTER,
                                    Node->getValueType(0))) {
     default: assert(0 && "This action is not supported yet!");
-    case TargetLowering::Legal: break;
+    case TargetLowering::Legal:
+      Tmp1 = Result.getValue(0);
+      Tmp2 = Result.getValue(1);
+      break;
     case TargetLowering::Custom:
       Result = TLI.LowerOperation(Result, DAG);
+      Tmp1 = LegalizeOp(Result.getValue(0));
+      Tmp2 = LegalizeOp(Result.getValue(1));
       break;
     }
 
     // Since rdcc produce two values, make sure to remember that we legalized
     // both of them.
-    AddLegalizedOperand(SDOperand(Node, 0), LegalizeOp(Result.getValue(0)));
-    AddLegalizedOperand(SDOperand(Node, 1), LegalizeOp(Result.getValue(1)));
+    AddLegalizedOperand(SDOperand(Node, 0), Tmp1);
+    AddLegalizedOperand(SDOperand(Node, 1), Tmp2);
     return Result;
 
   case ISD::SELECT: