diff options
author | Chris Lattner <sabre@nondot.org> | 2005-07-01 23:11:56 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2005-07-01 23:11:56 +0000 |
commit | c1671e2d7ddd81f0ac59652cc889ba2a40278ebf (patch) | |
tree | ffb364a6b970b674edd38eb5216d2491a17cb34e /lib/Target/PowerPC/PPCISelPattern.cpp | |
parent | b36cbd0286cf008987737dbcc3b788af902d414b (diff) |
Varargs is apparently currently broken on PPC. This hacks it so that it
is at least overloading the right virtual methods. The implementations
are currently wrong though. This fixes Ptrdist/bc, but not other programs
(e.g. siod).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22326 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/PowerPC/PPCISelPattern.cpp')
-rw-r--r-- | lib/Target/PowerPC/PPCISelPattern.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/lib/Target/PowerPC/PPCISelPattern.cpp b/lib/Target/PowerPC/PPCISelPattern.cpp index eaf7b09cb0..8f3122ef81 100644 --- a/lib/Target/PowerPC/PPCISelPattern.cpp +++ b/lib/Target/PowerPC/PPCISelPattern.cpp @@ -98,10 +98,10 @@ namespace { SelectionDAG &DAG); virtual std::pair<SDOperand, SDOperand> - LowerVAStart(SDOperand Chain, SelectionDAG &DAG); + LowerVAStart(SDOperand Chain, SelectionDAG &DAG, SDOperand Dest); virtual std::pair<SDOperand,SDOperand> - LowerVAArgNext(bool isVANext, SDOperand Chain, SDOperand VAList, + LowerVAArgNext(SDOperand Chain, SDOperand VAList, const Type *ArgTy, SelectionDAG &DAG); virtual std::pair<SDOperand, SDOperand> @@ -464,14 +464,19 @@ PPC32TargetLowering::LowerCallTo(SDOperand Chain, } std::pair<SDOperand, SDOperand> -PPC32TargetLowering::LowerVAStart(SDOperand Chain, SelectionDAG &DAG) { +PPC32TargetLowering::LowerVAStart(SDOperand Chain, SelectionDAG &DAG, SDOperand Dest) { //vastart just returns the address of the VarArgsFrameIndex slot. return std::make_pair(DAG.getFrameIndex(VarArgsFrameIndex, MVT::i32), Chain); } std::pair<SDOperand,SDOperand> PPC32TargetLowering:: -LowerVAArgNext(bool isVANext, SDOperand Chain, SDOperand VAList, +LowerVAArgNext(SDOperand Chain, SDOperand VAList, const Type *ArgTy, SelectionDAG &DAG) { + // FIXME: THIS IS BROKEN!!! + + bool isVANext = true; + + MVT::ValueType ArgVT = getValueType(ArgTy); SDOperand Result; if (!isVANext) { |