https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66873
vries at gcc dot gnu.org changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |missed-optimization --- Comment #1 from vries at gcc dot gnu.org --- Once noticeable difference with outer-1.c, is that pass_iv_canon make the inner and outer loop ivs run downwards (from 500 to 0). Removing pass_iv_canon from the pass list fixes that, but doesn't change anything about the dependency analysis in parloops: ... (Data Dep: #(Data Ref: # bb: 4 # stmt: x[_12] = _14; # ref: x[_12]; # base_object: x; # Access function 0: {{0, +, 1}_3, +, 500}_4 #) #(Data Ref: # bb: 4 # stmt: x[_12] = _14; # ref: x[_12]; # base_object: x; # Access function 0: {{0, +, 1}_3, +, 500}_4 #) access_fn_A: {{0, +, 1}_3, +, 500}_4 access_fn_B: {{0, +, 1}_3, +, 500}_4 (subscript iterations_that_access_an_element_twice_in_A: [0] last_conflict: scev_not_known iterations_that_access_an_element_twice_in_B: [0] last_conflict: scev_not_known (Subscript distance: 0 )) inner loop index: 0 loop nest: (3 4 ) distance_vector: 0 0 distance_vector: 500 -1 direction_vector: = = direction_vector: + - ) FAILED: data dependencies exist across iterations ...