From: Evan Cheng Date: Wed, 29 Nov 2006 19:13:47 +0000 (+0000) Subject: Avoid inifinite looping if READCYCLECOUNTER isn't custom lowered. X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=6a16c5ab2d7786583d3c9a79646dc85fbda6cd41;p=oota-llvm.git Avoid inifinite looping if READCYCLECOUNTER isn't custom lowered. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32022 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp b/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp index 1c0be0ba52d..bf467b733d0 100644 --- a/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp +++ b/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp @@ -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: