diff options
| author | Nate Begeman <natebegeman@mac.com> | 2005-03-26 08:25:22 +0000 |
|---|---|---|
| committer | Nate Begeman <natebegeman@mac.com> | 2005-03-26 08:25:22 +0000 |
| commit | 518a994b7dcc6548992714560d30c83a1655b59d (patch) | |
| tree | c4ec6d3c3c030c127ab5aec3ff6f47513b4ff3da /llvm/lib | |
| parent | dcad53e7bd28ce02bb884f3133a83910db0ce564 (diff) | |
| download | bcm5719-llvm-518a994b7dcc6548992714560d30c83a1655b59d.tar.gz bcm5719-llvm-518a994b7dcc6548992714560d30c83a1655b59d.zip | |
Fix that pesky floats in integer regs problem by assigning the f32 type to
the correct register class. Also remove the loading of float data into int
regs part of varargs; it will need to be implemented differently later.
llvm-svn: 20857
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/PowerPC/PPC32ISelPattern.cpp | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/llvm/lib/Target/PowerPC/PPC32ISelPattern.cpp b/llvm/lib/Target/PowerPC/PPC32ISelPattern.cpp index 7ec033afb86..fb00e46e6f6 100644 --- a/llvm/lib/Target/PowerPC/PPC32ISelPattern.cpp +++ b/llvm/lib/Target/PowerPC/PPC32ISelPattern.cpp @@ -44,7 +44,7 @@ namespace { // Set up the register classes. addRegisterClass(MVT::i32, PPC32::GPRCRegisterClass); - addRegisterClass(MVT::f32, PPC32::GPRCRegisterClass); + addRegisterClass(MVT::f32, PPC32::FPRCRegisterClass); addRegisterClass(MVT::f64, PPC32::FPRCRegisterClass); computeRegisterProperties(); @@ -322,13 +322,9 @@ PPC32TargetLowering::LowerCallTo(SDOperand Chain, // store only the non-fixed arguments in a vararg function. Stores.push_back(DAG.getNode(ISD::STORE, MVT::Other, Chain, Args[i].first, PtrOff)); - if (GPR_remaining > 0) - args_to_use.push_back(DAG.getLoad(MVT::i32, Chain, PtrOff)); - if (GPR_remaining > 1) { - SDOperand ConstFour = DAG.getConstant(4, getPointerTy()); - PtrOff = DAG.getNode(ISD::ADD, MVT::i32, PtrOff, ConstFour); - args_to_use.push_back(DAG.getLoad(MVT::i32, Chain, PtrOff)); - } + // FIXME: Need a way to communicate to the ISD::CALL select code + // that a particular argument is non-fixed so that we can load them + // into the correct GPR to shadow the FPR } args_to_use.push_back(Args[i].first); --FPR_remaining; |

