[llvm-commits] [llvm] r170412 - in /llvm/trunk: lib/Transforms/Scalar/SROA.cpp test/Transforms/SROA/2012-12-17-vpointers.ll

Chandler Carruth chandlerc at google.com
Mon Dec 17 21:43:02 PST 2012


On Mon, Dec 17, 2012 at 9:23 PM, Nadav Rotem <nrotem at apple.com> wrote:

> Author: nadav
> Date: Mon Dec 17 23:23:31 2012
> New Revision: 170412
>
> URL: http://llvm.org/viewvc/llvm-project?rev=170412&view=rev
> Log:
> SROA: Replace calls to getScalarSizeInBits to DataLayout's API because
> getScalarSizeInBits could not handle vectors of pointers.
>
>
> Added:
>     llvm/trunk/test/Transforms/SROA/2012-12-17-vpointers.ll
>

It's a small thing, but there is a general desire to move away from
date-based test cases. They make the test cases harder to remember and type
with no real benefit -- SVN has the date afterall....

Also, it works better to have more tests in a single file in terms of
scaling the test system. I'd rather start a test file specifically for
vector pointers and geps.


> Modified:
>     llvm/trunk/lib/Transforms/Scalar/SROA.cpp
>
> Modified: llvm/trunk/lib/Transforms/Scalar/SROA.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/SROA.cpp?rev=170412&r1=170411&r2=170412&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Transforms/Scalar/SROA.cpp (original)
> +++ llvm/trunk/lib/Transforms/Scalar/SROA.cpp Mon Dec 17 23:23:31 2012
> @@ -1669,9 +1669,9 @@
>      APInt TypeSize(Offset.getBitWidth(),
>                     TD.getTypeAllocSize(GTI.getIndexedType()));
>      if (VectorType *VTy = dyn_cast<VectorType>(*GTI)) {
> -      assert((VTy->getScalarSizeInBits() % 8) == 0 &&
> +      assert((TD.getTypeSizeInBits(VTy->getScalarType()) % 8) == 0 &&
>               "vector element size is not a multiple of 8, cannot GEP over
> it");
> -      TypeSize = VTy->getScalarSizeInBits() / 8;
> +      TypeSize = TD.getTypeSizeInBits(VTy->getScalarType()) / 8;
>      }
>
>      GEPOffset += OpC->getValue().sextOrTrunc(Offset.getBitWidth()) *
> TypeSize;
> @@ -1762,7 +1762,7 @@
>    // extremely poorly defined currently. The long-term goal is to remove
> GEPing
>    // over a vector from the IR completely.
>    if (VectorType *VecTy = dyn_cast<VectorType>(Ty)) {
> -    unsigned ElementSizeInBits = VecTy->getScalarSizeInBits();
> +    unsigned ElementSizeInBits =
> TD.getTypeSizeInBits(VecTy->getScalarType());
>      if (ElementSizeInBits % 8)
>        return 0; // GEPs over non-multiple of 8 size vector elements are
> invalid.
>      APInt ElementSize(Offset.getBitWidth(), ElementSizeInBits / 8);
> @@ -2010,7 +2010,7 @@
>      return false;
>
>    uint64_t VecSize = TD.getTypeSizeInBits(Ty);
> -  uint64_t ElementSize = Ty->getScalarSizeInBits();
> +  uint64_t ElementSize = TD.getTypeSizeInBits(Ty->getScalarType());
>
>    // While the definition of LLVM vectors is bitpacked, we don't support
> sizes
>    // that aren't byte sized.
> @@ -2370,9 +2370,9 @@
>        ++NumVectorized;
>        VecTy = cast<VectorType>(NewAI.getAllocatedType());
>        ElementTy = VecTy->getElementType();
> -      assert((VecTy->getScalarSizeInBits() % 8) == 0 &&
> +      assert((TD.getTypeSizeInBits(VecTy->getScalarType()) % 8) == 0 &&
>               "Only multiple-of-8 sized vector elements are viable");
> -      ElementSize = VecTy->getScalarSizeInBits() / 8;
> +      ElementSize = TD.getTypeSizeInBits(VecTy->getScalarType()) / 8;
>      } else if (isIntegerWideningViable(TD, NewAI.getAllocatedType(),
>                                         NewAllocaBeginOffset, P, I, E)) {
>        IntTy = Type::getIntNTy(NewAI.getContext(),
>
> Added: llvm/trunk/test/Transforms/SROA/2012-12-17-vpointers.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/SROA/2012-12-17-vpointers.ll?rev=170412&view=auto
>
> ==============================================================================
> --- llvm/trunk/test/Transforms/SROA/2012-12-17-vpointers.ll (added)
> +++ llvm/trunk/test/Transforms/SROA/2012-12-17-vpointers.ll Mon Dec 17
> 23:23:31 2012
> @@ -0,0 +1,25 @@
> +; RUN: opt < %s -sroa
> +
> +; Make sure we don't crash on this one.
> +
> +target datalayout =
> "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
> +target triple = "x86_64-apple-macosx10.8.0"
> +
> +define void @foo() {
> +entry:
> +  %Args.i = alloca <2 x i32*>, align 16
> +  br i1 undef, label %bb0.exit158, label %if.then.i.i.i.i.i138
> +
> +if.then.i.i.i.i.i138:
> +  unreachable
> +
> +bb0.exit158:
> +  br i1 undef, label %bb0.exit257, label %if.then.i.i.i.i.i237
> +
> +if.then.i.i.i.i.i237:
> +  unreachable
> +
> +bb0.exit257:
> +  %0 = load <2 x i32*>* %Args.i, align 16
> +  unreachable
> +}
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20121217/13ff4eee/attachment.html>


More information about the llvm-commits mailing list