[Bug fortran/37486] New: alignment of data in COMMON blocks
janus at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Thu Sep 11 20:55:00 GMT 2008
Currently, gfortran automatically aligns data in COMMON blocks, as in the
following example:
implicit none
integer(kind=4) :: n
real(kind=8) :: p
common /foo/ n,p
end
This gives the warning:
COMMON 'foo' at (1) requires 4 bytes of padding at start
This automatic padding can result in unexpected results, as demonstrated by the
following code:
subroutine one()
implicit none
integer :: n1,n2,n3,n4
common /foo/ n1,n2(2),n3,n4
print *, n3, n4
end subroutine one
program prog
implicit none
integer :: n1,n2,n3
real(8) :: r1
common /foo/ n1,r1,n2,n3
n2 = 2
n3 = 3
call one()
end program prog
The output of this program is "0 2" instead of "2 3".
Therefore gfortran should have an option to suppress automatic alignment.
Preferrably this option should be enabled by default.
See also http://gcc.gnu.org/ml/fortran/2008-09/msg00221.html
--
Summary: alignment of data in COMMON blocks
Product: gcc
Version: 4.4.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: janus at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37486
More information about the Gcc-bugs
mailing list