From c1671e2d7ddd81f0ac59652cc889ba2a40278ebf Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Fri, 1 Jul 2005 23:11:56 +0000 Subject: [PATCH] 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 --- lib/Target/PowerPC/PPCISelPattern.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/lib/Target/PowerPC/PPCISelPattern.cpp b/lib/Target/PowerPC/PPCISelPattern.cpp index eaf7b09cb0c..8f3122ef814 100644 --- a/lib/Target/PowerPC/PPCISelPattern.cpp +++ b/lib/Target/PowerPC/PPCISelPattern.cpp @@ -98,10 +98,10 @@ namespace { SelectionDAG &DAG); virtual std::pair - LowerVAStart(SDOperand Chain, SelectionDAG &DAG); + LowerVAStart(SDOperand Chain, SelectionDAG &DAG, SDOperand Dest); virtual std::pair - LowerVAArgNext(bool isVANext, SDOperand Chain, SDOperand VAList, + LowerVAArgNext(SDOperand Chain, SDOperand VAList, const Type *ArgTy, SelectionDAG &DAG); virtual std::pair @@ -464,14 +464,19 @@ PPC32TargetLowering::LowerCallTo(SDOperand Chain, } std::pair -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 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) {