diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp b/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp index e1b5ed175c7..93de4f0f75d 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp +++ b/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp @@ -3917,8 +3917,7 @@ TargetLowering::LowerArguments(Function &F, SelectionDAG &DAG) { Flags |= ISD::ParamFlags::ByVal; const PointerType *Ty = cast(I->getType()); const Type *ElementTy = Ty->getElementType(); - unsigned FrameAlign = - Log2_32(getTargetData()->getCallFrameTypeAlignment(ElementTy)); + unsigned FrameAlign = Log2_32(getByValTypeAlignment(ElementTy)); unsigned FrameSize = getTargetData()->getABITypeSize(ElementTy); Flags |= (FrameAlign << ISD::ParamFlags::ByValAlignOffs); Flags |= (FrameSize << ISD::ParamFlags::ByValSizeOffs); @@ -4047,8 +4046,7 @@ TargetLowering::LowerCallTo(SDOperand Chain, const Type *RetTy, Flags |= ISD::ParamFlags::ByVal; const PointerType *Ty = cast(Args[i].Ty); const Type *ElementTy = Ty->getElementType(); - unsigned FrameAlign = - Log2_32(getTargetData()->getCallFrameTypeAlignment(ElementTy)); + unsigned FrameAlign = Log2_32(getByValTypeAlignment(ElementTy)); unsigned FrameSize = getTargetData()->getABITypeSize(ElementTy); Flags |= (FrameAlign << ISD::ParamFlags::ByValAlignOffs); Flags |= (FrameSize << ISD::ParamFlags::ByValSizeOffs); diff --git a/lib/CodeGen/SelectionDAG/TargetLowering.cpp b/lib/CodeGen/SelectionDAG/TargetLowering.cpp index 6fb27028a8e..3ccfcfa2e83 100644 --- a/lib/CodeGen/SelectionDAG/TargetLowering.cpp +++ b/lib/CodeGen/SelectionDAG/TargetLowering.cpp @@ -414,6 +414,12 @@ unsigned TargetLowering::getVectorTypeBreakdown(MVT::ValueType VT, return 1; } +/// getByValTypeAlignment - Return the desired alignment for ByVal aggregate +/// function arguments in the caller parameter area. +unsigned TargetLowering::getByValTypeAlignment(const Type *Ty) const { + return Log2_32(TD->getCallFrameTypeAlignment(Ty)); +} + SDOperand TargetLowering::getPICJumpTableRelocBase(SDOperand Table, SelectionDAG &DAG) const { if (usesGlobalOffsetTable())