forked from OSchip/llvm-project
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). llvm-svn: 22326
This commit is contained in:
parent
b97404687a
commit
d313b92b66
|
@ -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) {
|
||||
|
|
Loading…
Reference in New Issue