https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96886
Bug ID: 96886
Summary: valgrind error with optional character argument of
unknown length
Product: gcc
Version: 10.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libfortran
Assignee: unassigned at gcc dot gnu.org
Reporter: ajmay81 at googlemail dot com
Target Milestone: ---
Looks like a regression between 10.1.0 and 10.2.0. test.f90:
module test_module
implicit none
contains
subroutine testsub0(propnam)
character(*), intent(in), optional :: propnam(*)
if(.not.present(propnam)) then
stop 'property names not given'
else
write(*,*) propnam(1)
endif
end subroutine testsub0
end module test_module
program bug
use test_module
implicit none
character(8) :: prop(1)
prop(1)='POT'
call testsub0(propnam=prop)
end program bug
bug> module load gcc/10.2.0
bug> gfortran test.f90 && valgrind ./a.out
==31524== Memcheck, a memory error detector
==31524== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==31524== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
==31524== Command: ./a.out
==31524==
==31524== Conditional jump or move depends on uninitialised value(s)
==31524== at 0x400741: __test_module_MOD_testsub0 (in /home/andy/bug/a.out)
==31524== by 0x400825: MAIN__ (in /home/andy/bug/a.out)
==31524== by 0x40085C: main (in /home/andy/bug/a.out)
==31524==
==31524== Conditional jump or move depends on uninitialised value(s)
==31524== at 0x400762: __test_module_MOD_testsub0 (in /home/andy/bug/a.out)
==31524== by 0x400825: MAIN__ (in /home/andy/bug/a.out)
==31524== by 0x40085C: main (in /home/andy/bug/a.out)
==31524==
STOP property names not given
==31524==
==31524== HEAP SUMMARY:
==31524== in use at exit: 0 bytes in 0 blocks
==31524== total heap usage: 21 allocs, 21 frees, 13,584 bytes allocated
==31524==
==31524== All heap blocks were freed -- no leaks are possible
==31524==
==31524== Use --track-origins=yes to see where uninitialised values come from
==31524== For lists of detected and suppressed errors, rerun with: -s
==31524== ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
bug> module purge
bug> module load gcc/10.1.0
bug> gfortran test.f90 && valgrind ./a.out
==31516== Memcheck, a memory error detector
==31516== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==31516== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
==31516== Command: ./a.out
==31516==
POT
==31516==
==31516== HEAP SUMMARY:
==31516== in use at exit: 0 bytes in 0 blocks
==31516== total heap usage: 21 allocs, 21 frees, 13,584 bytes allocated
==31516==
==31516== All heap blocks were freed -- no leaks are possible
==31516==
==31516== For lists of detected and suppressed errors, rerun with: -s
==31516== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)