[PATCH] D15146: [InstCombine] Look through PHIs, GEPs, IntToPtrs and PtrToInts to expose more constants when comparing GEPs
Hal Finkel via llvm-commits
llvm-commits at lists.llvm.org
Fri Dec 11 09:07:14 PST 2015
hfinkel added inline comments.
================
Comment at: lib/Transforms/InstCombine/InstCombineCompares.cpp:905
@@ +904,3 @@
+ // OFFSET1 cmp OFFSET2
+ Value *NewRHS = RewriteGEPAsOffset(RHS, PtrBase, DL, Nodes);
+ return new ICmpInst(ICmpInst::getSignedPredicate(Cond), Index, NewRHS);
----------------
sbaranga wrote:
> hfinkel wrote:
> > Still don't find this clear. It seems to me that:
> >
> > std::tie(PtrBase, Index) = GetAsConstantIndexedAddress(GEPLHS, DL);
> >
> > returns PtrBase and Index such that GEP(PtrBase, Index) == GEPLHS. And then:
> >
> > RewriteGEPAsOffset(RHS, PtrBase)
> >
> > returns GEP(PtrBase, Something) == RHS. And then we compare:
> >
> > Index icmp GEP(PtrBase, Something)
> >
> > which must be wrong. What am I missing?
> >
> RewriteGEPAsOffset returns the offset, not the GEP.
Ah, I understand now. The GEP it builds is not returned, but is for use by other users of the original GEP being replaced.
http://reviews.llvm.org/D15146
More information about the llvm-commits
mailing list