diff options
author | Evan Cheng <evan.cheng@apple.com> | 2006-11-29 19:13:47 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2006-11-29 19:13:47 +0000 |
commit | a743fada653dd1e4337c46b9addfcf6755550d50 (patch) | |
tree | 2d2b71db9c84dc438f6f9d58ac57bbf2baa5dbeb /llvm/lib/CodeGen | |
parent | 01b74b6f7bb6a058710e10baf19d69b09e4b3bc2 (diff) | |
download | bcm5719-llvm-a743fada653dd1e4337c46b9addfcf6755550d50.tar.gz bcm5719-llvm-a743fada653dd1e4337c46b9addfcf6755550d50.zip |
Avoid inifinite looping if READCYCLECOUNTER isn't custom lowered.
llvm-svn: 32022
Diffstat (limited to 'llvm/lib/CodeGen')
-rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp b/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp index 1c0be0ba52d..bf467b733d0 100644 --- a/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp +++ b/llvm/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: |