Remove the assumption that byval has been applied to
authorDuncan Sands <baldrick@free.fr>
Sun, 13 Jan 2008 21:19:59 +0000 (21:19 +0000)
committerDuncan Sands <baldrick@free.fr>
Sun, 13 Jan 2008 21:19:59 +0000 (21:19 +0000)
a pointer to a struct.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45939 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp

index 69c7b2c7b9593a28a67b1c7a6106dbc0eb25aad6..2934345b603589440655ad9018a69e41b5dad6e0 100644 (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;