Currently the isl AST generator derives for (long i = LB; i <= UB; i++) A[i] for most loops. An alternative would be to generate for (long i = LB; i != UB + 1; i++) A[i] In the second version a value of LB that is strictly larger than UB + 1 will cause i to eventually overflow. As we know this is not valid (and we annotate i in Polly with NSW), the IR carries the information that such an overflow can never happen and consequently that LB must be smaller or equal to UB + 1. LLVM and its -indvars pass prefers the second alternative precisely for this reason. We should consider to generate IR with the above type.