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

Hans Wennborg via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 31 10:44:28 PST 2017


Thanks! r293669.

On Tue, Jan 31, 2017 at 10:35 AM, David Majnemer <majnemer at google.com> wrote:
> 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
>
>


More information about the llvm-commits mailing list