https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107441
Bug ID: 107441 Summary: optional arguments are identified as "present" when missing Product: gcc Version: 12.2.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran Assignee: unassigned at gcc dot gnu.org Reporter: kaiserkarl31 at yahoo dot com Target Milestone: --- If the first argument to a function is of type "character" (of any length, from what I can tell, including ":" and "*") and the second parameter is both passed by value and optional, the second argument will be identified as "present" even when absent. The following short program reproduces the problem with gfortran 12.2.1: program bugdemo implicit none character :: s integer :: t s = 'a' t = testoptional(s) print*, 'testoptional: ', t contains function testoptional(w, x) result(t) character, intent(in) :: w integer, intent(in), value, optional :: x integer :: t print*, 'present(x) is ', present(x) t = 0 end function testoptional end program bugdemo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! When compiled and run with gfortran 12.2.1, this gives the following output: present(x) is T testoptional: 0 [clearly, the first line should have "F" instead of "T"]