------- Comment #25 from rguenth at gcc dot gnu dot org 2009-07-03 12:57 ------- Btw, the inlined minloc
D.1570 = a.dim[0].lbound; D.1571 = a.dim[0].ubound; pos.0 = 0; { integer(kind=8) S.3; ({ S.3 = D.1570; while (1) { ({ if (S.3 > D.1571) goto L.3; offset.1 = 1 - D.1570; if ((*D.1568)[S.3 + D.1569] < limit.2 || pos.0 == 0 && (*D.1568)[S.3 + D.1569] == limit.2) { ({ limit.2 = (*D.1568)[S.3 + D.1569]; pos.0 = S.3 + offset.1; }) void } S.3 = S.3 + 1; }) void } L.3:; }) void has a superfluous check || (pos.0 == 0 && (*D.1568)[S.3 + D.1569] == limit.2) at least for flag_finite_math_only. If the array cannot contain Inf or NaN then it either has all elements == FLT_MAX, so pos will stay zero, or at least one is less than FLT_MAX in which case pos will be adjusted anyway. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31067