Remove the assumption that byval has been applied to

a pointer to a struct.

llvm-svn: 45939
This commit is contained in:
Duncan Sands 2008-01-13 21:19:59 +00:00
parent 2796740ad6
commit 08c728b519
1 changed files with 12 additions and 12 deletions

View File

@ -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;