diff options
author | Duncan Sands <baldrick@free.fr> | 2008-01-13 21:19:59 +0000 |
---|---|---|
committer | Duncan Sands <baldrick@free.fr> | 2008-01-13 21:19:59 +0000 |
commit | a41d7198035bdeaa3ba0a5840086d34ebcddac26 (patch) | |
tree | df2cc831ff45d425c43239f4f2d248b3a319c46a /lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp | |
parent | 421d1c93cc7e15fc918bf0f545006dc0da20edc6 (diff) |
Remove the assumption that byval has been applied to
a pointer to a struct.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45939 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp')
-rw-r--r-- | lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp b/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp index 69c7b2c7b9..2934345b60 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp +++ b/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp @@ -3916,12 +3916,12 @@ TargetLowering::LowerArguments(Function &F, SelectionDAG &DAG) { if (F.paramHasAttr(j, ParamAttr::ByVal)) { Flags |= ISD::ParamFlags::ByVal; const PointerType *Ty = cast<PointerType>(I->getType()); - const StructType *STy = cast<StructType>(Ty->getElementType()); - unsigned StructAlign = - Log2_32(getTargetData()->getCallFrameTypeAlignment(STy)); - unsigned StructSize = getTargetData()->getABITypeSize(STy); - Flags |= (StructAlign << ISD::ParamFlags::ByValAlignOffs); - Flags |= (StructSize << ISD::ParamFlags::ByValSizeOffs); + const Type *ElementTy = Ty->getElementType(); + unsigned FrameAlign = + Log2_32(getTargetData()->getCallFrameTypeAlignment(ElementTy)); + unsigned FrameSize = getTargetData()->getABITypeSize(ElementTy); + Flags |= (FrameAlign << ISD::ParamFlags::ByValAlignOffs); + Flags |= (FrameSize << ISD::ParamFlags::ByValSizeOffs); } if (F.paramHasAttr(j, ParamAttr::Nest)) Flags |= ISD::ParamFlags::Nest; @@ -4046,12 +4046,12 @@ TargetLowering::LowerCallTo(SDOperand Chain, const Type *RetTy, if (Args[i].isByVal) { Flags |= ISD::ParamFlags::ByVal; const PointerType *Ty = cast<PointerType>(Args[i].Ty); - const StructType *STy = cast<StructType>(Ty->getElementType()); - unsigned StructAlign = - Log2_32(getTargetData()->getCallFrameTypeAlignment(STy)); - unsigned StructSize = getTargetData()->getABITypeSize(STy); - Flags |= (StructAlign << ISD::ParamFlags::ByValAlignOffs); - Flags |= (StructSize << ISD::ParamFlags::ByValSizeOffs); + const Type *ElementTy = Ty->getElementType(); + unsigned FrameAlign = + Log2_32(getTargetData()->getCallFrameTypeAlignment(ElementTy)); + unsigned FrameSize = getTargetData()->getABITypeSize(ElementTy); + Flags |= (FrameAlign << ISD::ParamFlags::ByValAlignOffs); + Flags |= (FrameSize << ISD::ParamFlags::ByValSizeOffs); } if (Args[i].isNest) Flags |= ISD::ParamFlags::Nest; |