diff --git a/lib/Target/Sparc/SparcISelDAGToDAG.cpp b/lib/Target/Sparc/SparcISelDAGToDAG.cpp index 336cbb79042..2b4cf731353 100644 --- a/lib/Target/Sparc/SparcISelDAGToDAG.cpp +++ b/lib/Target/Sparc/SparcISelDAGToDAG.cpp @@ -360,6 +360,9 @@ SparcV8TargetLowering::LowerCallTo(SDOperand Chain, const Type *RetTy, else ArgsSize = 0; + // Keep stack frames 8-byte aligned. + ArgsSize = (ArgsSize+7) & ~7; + Chain = DAG.getNode(ISD::CALLSEQ_START, MVT::Other, Chain, DAG.getConstant(ArgsSize, getPointerTy())); diff --git a/lib/Target/SparcV8/SparcV8ISelDAGToDAG.cpp b/lib/Target/SparcV8/SparcV8ISelDAGToDAG.cpp index 336cbb79042..2b4cf731353 100644 --- a/lib/Target/SparcV8/SparcV8ISelDAGToDAG.cpp +++ b/lib/Target/SparcV8/SparcV8ISelDAGToDAG.cpp @@ -360,6 +360,9 @@ SparcV8TargetLowering::LowerCallTo(SDOperand Chain, const Type *RetTy, else ArgsSize = 0; + // Keep stack frames 8-byte aligned. + ArgsSize = (ArgsSize+7) & ~7; + Chain = DAG.getNode(ISD::CALLSEQ_START, MVT::Other, Chain, DAG.getConstant(ArgsSize, getPointerTy()));