[PATCH] Assume GetElementPtr offsets to be inbounds
Tobias Grosser
tobias at grosser.es
Mon Nov 24 23:53:55 PST 2014
Thanks for the review. I will commit it as soon as our LNT builders are green again.
================
Comment at: include/polly/ScopInfo.h:476
@@ +475,3 @@
+ /// time at least one iteration of the outer loop is executed. Hence, we
+ /// assume:
+ ///
----------------
jdoerfert wrote:
> What about n > 10 and m > 1? Shouldn't that be a violation too?
The first dimension does not carry any size information. I declared the array as A[][20] to make this clear.
================
Comment at: lib/Analysis/ScopInfo.cpp:850
@@ -849,1 +849,3 @@
+void ScopStmt::deriveAssumptionsFromGEP(GetElementPtrInst *Inst) {
+ int Dimension = 0;
----------------
jdoerfert wrote:
> I would rename Inst to GEP or GEPInst or sth. to make the type clear.
Done.
================
Comment at: lib/Analysis/ScopInfo.cpp:856
@@ +855,3 @@
+
+ if (auto *PtrTy = dyn_cast<PointerType>(Ty)) {
+ Dimension = 1;
----------------
jdoerfert wrote:
> Theoretically, we could make this a while and increment the dimension, however I don't think it will ever matter.
> However, stripping of structs might be worthwile?
Possibly. I do not have a test case yet. I think we can add it in a subsequent commit if found useful.
================
Comment at: lib/Analysis/ScopInfo.cpp:867
@@ +866,3 @@
+
+ const SCEV *Expr = Parent.getSE()->getSCEV(Inst->getOperand(1 + Dimension));
+
----------------
jdoerfert wrote:
> 1 + Dimension is Operand!
Fixed.
================
Comment at: lib/Analysis/ScopInfo.cpp:869
@@ +868,3 @@
+
+ if (isAffineExpr(&Parent.getRegion(), Expr, *Parent.getSE())) {
+ isl_pw_aff *AccessOffset = SCEVAffinator::getPwAff(this, Expr);
----------------
jdoerfert wrote:
> Please move Parent.getSE() before the loop
Fixed.
http://reviews.llvm.org/D6369
More information about the llvm-commits
mailing list