https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78758
Bug ID: 78758
Summary: [7 Regression] Warning: '__builtin_memcpy' ...
overflows the destination for string assignment
Product: gcc
Version: 7.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: fortran
Assignee: unassigned at gcc dot gnu.org
Reporter: anlauf at gmx dot de
Target Milestone: ---
I just saw the following warning:
% gfc-trunk -c gfcbug137.f90 -O
gfcbug137.f90:7:0:
longname(5:) = " " // adjustl (name(5:))
Warning: '__builtin_memcpy' writing 12 bytes into a region of size 11 overflows
the destination [-Wstringop-overflow=]
for the simple code:
% cat gfcbug137.f90
integer function get_satid (name)
character(len=*), intent(in) :: name
character(len=16) :: longname
longname = name
if (name(1:4) == "GOES" .and. name(5:5) /= " ") then
longname(5:) = " " // adjustl (name(5:))
end if
get_satid = satid_longname (longname)
end function get_satid
% gfc-trunk --version | head -1
GNU Fortran (GCC) 7.0.0 20161208 (experimental)
Note: optimization (-O or higher) is essential; there is no warning
with -O0 or -Og.
For Fortran code, the expected behavior in string assignment is that there
should be no overflow.