This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug fortran/37486] New: alignment of data in COMMON blocks
- From: "janus at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 11 Sep 2008 20:54:38 -0000
- Subject: [Bug fortran/37486] New: alignment of data in COMMON blocks
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
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