------- Comment #1 from burnus at gcc dot gnu dot org 2008-03-25 23:52 ------- Thanks for testing/reducing/reporting this.
If one looks at the bounds, one sees that for negative lower bounds the output is wrong. NAG correctly has: 2 1 0 1 -2 -3 -4 3 4 5 0 7 8 9 while gfortran wrongly has: 2 1 0 1 1 1 1 3 4 5 0 0 0 0 ila1[S.2 + -1] = lla.dim[S.2 + -1].stride >= 0 && lla.dim[S.2 + -1].ubound >= lla.dim[S.2 + -1].lbound || lla.dim[S.2 + -1].stride < 0 && lla.dim[S.2 + -1].ubound <= lla.dim[S.2 + -1].lbound ? (integer(kind=4)) lla.dim[S.2 + -1].lbound : 1; This looks ok. However, I do not understand the stride calculation: lla.dim[3].lbound = (integer(kind=8)) nf10; lla.dim[3].ubound = 1; lla.dim[3].stride = 48; so far so good, but why the following? D.950 = (2 - (integer(kind=8)) nf10) * 48; lla.dim[4].lbound = -2; lla.dim[4].ubound = 7; lla.dim[4].stride = D.950; D.950 is (2-10)*48 = -384 ?!?!? -- burnus at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- OtherBugsDependingO| |32834 nThis| | Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Keywords| |wrong-code Last reconfirmed|0000-00-00 00:00:00 |2008-03-25 23:52:07 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35698