[llvm] r293629 - [InstCombine] Make sure that LHS and RHS have the same type in

David Majnemer via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 31 10:35:41 PST 2017


SGTM

On Tue, Jan 31, 2017 at 10:21 AM, Hans Wennborg <hans at chromium.org> wrote:

> David, it was suggested this be merged to 4.0. What do you think?
>
> Thanks,
> Hans
>
> On Tue, Jan 31, 2017 at 6:04 AM, Silviu Baranga via llvm-commits
> <llvm-commits at lists.llvm.org> wrote:
> > Author: sbaranga
> > Date: Tue Jan 31 08:04:15 2017
> > New Revision: 293629
> >
> > URL: http://llvm.org/viewvc/llvm-project?rev=293629&view=rev
> > Log:
> > [InstCombine] Make sure that LHS and RHS have the same type in
> > transformToIndexedCompare
> >
> > If they don't have the same type, the size of the constant
> > index would need to be adjusted (and this wouldn't be always
> > possible).
> >
> > Alternatively we could try the analysis with the initial
> > RHS value, which would guarantee that the two sides have
> > the same type. However it is unlikely that in practice this
> > would pass our transformation requirements.
> >
> > Fixes PR31808 (https://llvm.org/bugs/show_bug.cgi?id=31808).
> >
> >
> > Modified:
> >     llvm/trunk/lib/Transforms/InstCombine/InstCombineCompares.cpp
> >     llvm/trunk/test/Transforms/InstCombine/indexed-gep-compares.ll
> >
> > Modified: llvm/trunk/lib/Transforms/InstCombine/InstCombineCompares.cpp
> > URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/
> Transforms/InstCombine/InstCombineCompares.cpp?rev=
> 293629&r1=293628&r2=293629&view=diff
> > ============================================================
> ==================
> > --- llvm/trunk/lib/Transforms/InstCombine/InstCombineCompares.cpp
> (original)
> > +++ llvm/trunk/lib/Transforms/InstCombine/InstCombineCompares.cpp Tue
> Jan 31 08:04:15 2017
> > @@ -884,6 +884,10 @@ static Instruction *transformToIndexedCo
> >    if (!GEPLHS->hasAllConstantIndices())
> >      return nullptr;
> >
> > +  // Make sure the pointers have the same type.
> > +  if (GEPLHS->getType() != RHS->getType())
> > +    return nullptr;
> > +
> >    Value *PtrBase, *Index;
> >    std::tie(PtrBase, Index) = getAsConstantIndexedAddress(GEPLHS, DL);
> >
> >
> > Modified: llvm/trunk/test/Transforms/InstCombine/indexed-gep-compares.ll
> > URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/
> Transforms/InstCombine/indexed-gep-compares.ll?rev=
> 293629&r1=293628&r2=293629&view=diff
> > ============================================================
> ==================
> > --- llvm/trunk/test/Transforms/InstCombine/indexed-gep-compares.ll
> (original)
> > +++ llvm/trunk/test/Transforms/InstCombine/indexed-gep-compares.ll Tue
> Jan 31 08:04:15 2017
> > @@ -188,3 +188,20 @@ bb10:
> >
> >
> >  declare i32 @__gxx_personality_v0(...)
> > +
> > +define i1 @test8(i64* %in, i64 %offset) {
> > +entry:
> > +
> > + %ld = load i64, i64* %in, align 8
> > + %casti8 = inttoptr i64 %ld to i8*
> > + %gepi8 = getelementptr inbounds i8, i8* %casti8, i64 %offset
> > + %cast = bitcast i8* %gepi8 to i32**
> > + %ptrcast = inttoptr i64 %ld to i32**
> > + %gepi32 = getelementptr inbounds i32*, i32** %ptrcast, i64 1
> > + %cmp = icmp eq i32** %gepi32, %cast
> > + ret i1 %cmp
> > +
> > +
> > +; CHECK-LABEL: @test8(
> > +; CHECK-NOT: icmp eq i32 %{{[0-9A-Za-z.]+}}, 1
> > +}
> >
> >
> > _______________________________________________
> > llvm-commits mailing list
> > llvm-commits at lists.llvm.org
> > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170131/719e44e4/attachment.html>


More information about the llvm-commits mailing list