diff options
| author | Chris Lattner <sabre@nondot.org> | 2006-12-11 18:53:38 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2006-12-11 18:53:38 +0000 |
| commit | e9a203c4e55aa10b5f0ce92a27166764295da3a6 (patch) | |
| tree | 4e61c758f33cb5b6588b208f3ec5a2b1db6e5eb1 /llvm/lib | |
| parent | 2b136a73bd3d5b17756bf0f305b480bee13f04ad (diff) | |
| download | bcm5719-llvm-e9a203c4e55aa10b5f0ce92a27166764295da3a6.tar.gz bcm5719-llvm-e9a203c4e55aa10b5f0ce92a27166764295da3a6.zip | |
Revert changes that broke oggenc on ppc
llvm-svn: 32440
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp | 23 |
1 files changed, 9 insertions, 14 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp b/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp index e1696eb87fb..fa337064ab8 100644 --- a/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp @@ -1547,10 +1547,7 @@ SDOperand SelectionDAGLegalize::LegalizeOp(SDOperand Op) { if (Tmp2.getValueType() != MVT::Vector) { SDOperand Lo, Hi; ExpandOp(Tmp2, Lo, Hi); - if (Hi.Val) - Result = DAG.getNode(ISD::RET, MVT::Other, Tmp1, Lo, Tmp3, Hi,Tmp3); - else - Result = DAG.getNode(ISD::RET, MVT::Other, Tmp1, Lo, Tmp3); + Result = DAG.getNode(ISD::RET, MVT::Other, Tmp1, Lo, Tmp3, Hi, Tmp3); Result = LegalizeOp(Result); } else { SDNode *InVal = Tmp2.Val; @@ -1612,10 +1609,8 @@ SDOperand SelectionDAGLegalize::LegalizeOp(SDOperand Op) { ExpandOp(Node->getOperand(i), Lo, Hi); NewValues.push_back(Lo); NewValues.push_back(Node->getOperand(i+1)); - if (Hi.Val) { - NewValues.push_back(Hi); - NewValues.push_back(Node->getOperand(i+1)); - } + NewValues.push_back(Hi); + NewValues.push_back(Node->getOperand(i+1)); break; } case Promote: @@ -4572,10 +4567,12 @@ void SelectionDAGLegalize::ExpandOp(SDOperand Op, SDOperand &Lo, SDOperand &Hi){ Tmp = TLI.LowerOperation(DAG.getNode(ISD::BIT_CONVERT, VT, Tmp), DAG); } + MVT::ValueType NVT = Node->getValueType(0); // f32 / f64 must be expanded to i32 / i64. - if (VT == MVT::f32 || VT == MVT::f64) { - Lo = DAG.getNode(ISD::BIT_CONVERT, NVT, Node->getOperand(0)); - Hi = SDOperand(); + if (NVT == MVT::f32 || NVT == MVT::f64) { + Lo = DAG.getNode(ISD::BIT_CONVERT, TLI.getTypeToTransformTo(NVT), + Node->getOperand(0)); + Hi = DAG.getConstant(0, TLI.getTypeToTransformTo(NVT)); break; } @@ -4878,9 +4875,7 @@ void SelectionDAGLegalize::ExpandOp(SDOperand Op, SDOperand &Lo, SDOperand &Hi){ // is a type that requires multi-step expansion. if (getTypeAction(NVT) != Expand && NVT != MVT::isVoid) { Lo = LegalizeOp(Lo); - if (Hi.Val) - // Don't legalize the high part if it is expanded to a single node. - Hi = LegalizeOp(Hi); + Hi = LegalizeOp(Hi); } // Remember in a map if the values will be reused later. |

