https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107444
anlauf at gcc dot gnu.org changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |wrong-code --- Comment #2 from anlauf at gcc dot gnu.org --- OK, here's a better example of the weird situation: program p call s() call s(i=7) call s(c='a') call s(r=3.0) contains subroutine s (i,c,r) integer , value, optional :: i character, value, optional :: c real , value, optional :: r print *, "present (i), present (r) =", present (i), present (r) end subroutine s end With 12-branch this prints: present (i), present (r) = F F present (i), present (r) = T F present (i), present (r) = F F ! right but for the wrong reason... present (i), present (r) = F F ! should be F T With 13-mainline + patch under review for pr107441(v2) I get: present (i), present (r) = F F present (i), present (r) = T F present (i), present (r) = F T ! should be F F present (i), present (r) = F T ! right but for the wrong reason... So not a regression... ;-)