In order to model non-affine control flow SCoP statements can now represent a basic block (precise/affine case) or a whole region (non-affine case). In the latter all write accesses except the ones in the region entry and exit will be may-write accesses as we cannot be certain they are executed. As there is no real difference non-affine branches as well as floating point branches are covered (and both called non-affine control flow). Furthermore, conditionals as wells as loops with non-affine control flow can be overapproximated.
Details
Diff Detail
Event Timeline
I like the patch: let's wait for comments from Tobi before committing.
include/polly/ScopInfo.h | ||
---|---|---|
466 | s/modelt/modeled/ | |
test/ScopInfo/non-affine-loop-condition.ll | ||
6 | if C[0] is non null, then the inner while loop is infinite unless there is some aliasing A == C. Would we say that all the elements of arrays A and C are accessed if we cannot compute their access functions? |
test/ScopInfo/non-affine-loop-condition.ll | ||
---|---|---|
6 | This was a bad example I will change the body to C[i]-- to make it more realistic. |
s/modelt/modeled/