aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2006-12-11 18:53:38 +0000
committerChris Lattner <sabre@nondot.org>2006-12-11 18:53:38 +0000
commit70a24b3141c098d67321dda4d6f615a9153d7d9b (patch)
treef78f5aa22e707b1901f638e4753e447f67f66390 /lib
parent2060a822fee8a500017e3afc1d91cf3644553d44 (diff)
Revert changes that broke oggenc on ppc
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32440 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/CodeGen/SelectionDAG/LegalizeDAG.cpp23
1 files changed, 9 insertions, 14 deletions
diff --git a/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp b/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
index e1696eb87f..fa337064ab 100644
--- a/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
+++ b/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.