http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14741
--- Comment #22 from Sebastian Pop <spop at gcc dot gnu.org> --- Once we revert that patch, the remaining problem is that graphite_can_represent_scev returns false on this scev: {{(stride.12_14 + offset.13_15) + 1, +, stride.12_14}_1, +, 1}_2 the parameters are defined like this: _12 = *n_11(D); ubound.10_13 = (integer(kind=8)) _12; stride.12_14 = MAX_EXPR <ubound.10_13, 0>; offset.13_15 = ~stride.12_14; #(Data Ref: # bb: 5 # stmt: c__I_lsm.30_8 = *c_21(D)[_20]; # ref: *c_21(D)[_20]; # base_object: *c_21(D); # Access function 0: {{(stride.12_14 + offset.13_15) + 1, +, stride.12_14}_1, +, 1}_2 #) #(Data Ref: # bb: 6 # stmt: _29 = *a_28(D)[_27]; # ref: *a_28(D)[_27]; # base_object: *a_28(D); # Access function 0: {{(stride.12_14 + offset.13_15) + 1, +, 1}_2, +, stride.12_14}_3 #) Why have these arrays been linearized?