[Bug testsuite/83752] New: gfortran.dg/common_align_2.f90 fails in execution for target with __BIGGEST_ALIGNMENT__ < 8
vries at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Jan 9 12:50:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83752
Bug ID: 83752
Summary: gfortran.dg/common_align_2.f90 fails in execution for
target with __BIGGEST_ALIGNMENT__ < 8
Product: gcc
Version: 8.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: testsuite
Assignee: unassigned at gcc dot gnu.org
Reporter: vries at gcc dot gnu.org
Target Milestone: ---
The test contains a list of common vars:
...
real(8) x, y
common i, x, j, y ! { dg-warning "Padding" }
...
and assumes a byte layout:
...
i: 0-3
x: 8-15
j: 16-19
y: 24-31
...
based on 8-byte alignment for the real(8).
On targets with BIGGEST_ALIGNMENT == 32 (so __BIGGEST_ALIGNMENT__ == 4), we
have instead:
...
i: 0-3
x: 4-11
j: 12-15
y: 16-23
...
So this minimal version:
...
subroutine foo ()
common i(8)
if ((i(5) .ne. 43)) call abort
end subroutine
real(8) x, y
common i, x, j, y
j = 43
call foo ()
end
...
tests i(5), which is at offset ((5 - 1) * 4) == 16, where it expects to find j,
but instead finds y.
This test needs a:
...
! { dg-require-biggest-alignment ">=" "8" }
...
or some such.
Just adding -cpp and conditionalizing on __BIGGEST_ALIGNMENT__ will work for
the execution failure, but not for the missing padding warning.
More information about the Gcc-bugs
mailing list