From 6f85546f7c47327ca9f4599ea4c11180df915967 Mon Sep 17 00:00:00 2001 From: Paul Thomas Date: Sat, 4 Apr 2009 16:41:30 +0000 Subject: [PATCH] re PR fortran/37614 (Change position of padding for aligned COMMONs) 2009-04-04 Paul Thomas PR fortran/37614 * trans-common.c (translate_common): Do not offset the whole coomon block. 2009-04-04 Paul Thomas PR fortran/37614 * gfortran.dg/common_align_2.f90: New test. From-SVN: r145541 --- gcc/fortran/ChangeLog | 6 ++++ gcc/fortran/trans-common.c | 5 ---- gcc/testsuite/ChangeLog | 5 ++++ gcc/testsuite/gfortran.dg/common_align_2.f90 | 30 ++++++++++++++++++++ 4 files changed, 41 insertions(+), 5 deletions(-) create mode 100644 gcc/testsuite/gfortran.dg/common_align_2.f90 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index f629bf21486..2f611ff6d5f 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2009-04-04 Paul Thomas + + PR fortran/37614 + * trans-common.c (translate_common): Do not offset the whole + coomon block. + 2009-04-03 Tobias Burnus PR fortran/39594 diff --git a/gcc/fortran/trans-common.c b/gcc/fortran/trans-common.c index 92edd208dae..6cf9d5b0979 100644 --- a/gcc/fortran/trans-common.c +++ b/gcc/fortran/trans-common.c @@ -1124,11 +1124,6 @@ translate_common (gfc_common_head *common, gfc_symbol *var_list) s->sym->name, &common->where); } } - else - { - /* Offset the whole common block. */ - apply_segment_offset (common_segment, offset); - } /* Apply the offset to the new segments. */ apply_segment_offset (current_segment, offset); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 82894528ca5..be66288f75f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2009-04-04 Paul Thomas + + PR fortran/37614 + * gfortran.dg/common_align_2.f90: New test. + 2009-04-04 Richard Guenther PR tree-optimization/8781 diff --git a/gcc/testsuite/gfortran.dg/common_align_2.f90 b/gcc/testsuite/gfortran.dg/common_align_2.f90 new file mode 100644 index 00000000000..e3b70d76edb --- /dev/null +++ b/gcc/testsuite/gfortran.dg/common_align_2.f90 @@ -0,0 +1,30 @@ +! { dg-do run } +! Tests the fix for PR37614, in which the alignement of commons followed +! g77 rather than the standard or other compilers. +! +! Contributed by Tobias Burnus +! +subroutine foo (z) + real(8) x, y, z + common i(8) + equivalence (x, i(3)),(y,i(7)) + if ((i(1) .ne. 42) .or. (i(5) .ne. 43)) call abort + if ((i(2) .ne. 0) .or. (i(2) .ne. 0)) call abort + if ((x .ne. z) .or. (y .ne. z)) call abort +end subroutine + +subroutine bar + common i(8) + i = 0 +end subroutine + + real(8) x, y + common i, x, j, y ! { dg-warning "Padding" } + call bar + i = 42 + j = 43 + x = atan (1.0)*4.0 + y = x + call foo (x) +end + -- 2.30.2