[PATCH] D17158: Don't promote load alignment from packed structure elements

David Majnemer via llvm-commits llvm-commits at lists.llvm.org
Thu Feb 11 13:18:17 PST 2016


We should merge this into 3.8

On Thu, Feb 11, 2016 at 1:16 PM, Pete Cooper <peter_cooper at apple.com> wrote:

> Thanks for the very quick review David.
>
> How do you feel about taking this in 3.8?
>
> Cheers,
> Pete
> > On Feb 11, 2016, at 1:15 PM, Pete Cooper <peter_cooper at apple.com> wrote:
> >
> > This revision was automatically updated to reflect the committed changes.
> > Closed by commit rL260587: Set load alignment on aggregate loads.
> (authored by pete).
> >
> > Changed prior to commit:
> >  http://reviews.llvm.org/D17158?vs=47690&id=47717#toc
> >
> > Repository:
> >  rL LLVM
> >
> > http://reviews.llvm.org/D17158
> >
> > Files:
> >  llvm/trunk/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp
> >  llvm/trunk/test/Transforms/InstCombine/unpack-fca.ll
> >
> > Index: llvm/trunk/test/Transforms/InstCombine/unpack-fca.ll
> > ===================================================================
> > --- llvm/trunk/test/Transforms/InstCombine/unpack-fca.ll
> > +++ llvm/trunk/test/Transforms/InstCombine/unpack-fca.ll
> > @@ -136,3 +136,18 @@
> >   %1 = load %B, %B* %b.ptr, align 8
> >   ret %B %1
> > }
> > +
> > +%struct.S = type <{ i8, %struct.T }>
> > +%struct.T = type { i32, i32 }
> > +
> > +; Make sure that we do not increase alignment of packed struct element
> > +define i32 @packed_alignment(%struct.S* dereferenceable(9) %s) {
> > +; CHECK-LABEL: packed_alignment
> > +; CHECK-NEXT: %tv.elt1 = getelementptr inbounds %struct.S, %struct.S*
> %s, i64 0, i32 1, i32 1
> > +; CHECK-NEXT: %tv.unpack2 = load i32, i32* %tv.elt1, align 1
> > +; CHECK-NEXT: ret i32 %tv.unpack2
> > +  %t = getelementptr inbounds %struct.S, %struct.S* %s, i32 0, i32 1
> > +  %tv = load %struct.T, %struct.T* %t, align 1
> > +  %v = extractvalue %struct.T %tv, 1
> > +  ret i32 %v
> > +}
> > Index:
> llvm/trunk/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp
> > ===================================================================
> > --- llvm/trunk/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp
> > +++ llvm/trunk/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp
> > @@ -552,7 +552,8 @@
> >         ConstantInt::get(IdxType, i),
> >       };
> >       auto *Ptr = IC.Builder->CreateInBoundsGEP(ST, Addr,
> makeArrayRef(Indices), EltName);
> > -      auto *L = IC.Builder->CreateLoad(ST->getTypeAtIndex(i), Ptr,
> LoadName);
> > +      auto *L = IC.Builder->CreateAlignedLoad(Ptr, LI.getAlignment(),
> > +                                              LoadName);
> >       V = IC.Builder->CreateInsertValue(V, L, i);
> >     }
> >
> >
> >
> > <D17158.47717.patch>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160211/77be099c/attachment.html>


More information about the llvm-commits mailing list