]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR fortran/37614 (Change position of padding for aligned COMMONs)
authorPaul Thomas <pault@gcc.gnu.org>
Sat, 4 Apr 2009 16:41:30 +0000 (16:41 +0000)
committerPaul Thomas <pault@gcc.gnu.org>
Sat, 4 Apr 2009 16:41:30 +0000 (16:41 +0000)
2009-04-04  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/37614
* trans-common.c (translate_common): Do not offset the whole
coomon block.

2009-04-04  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/37614
* gfortran.dg/common_align_2.f90: New test.

From-SVN: r145541

gcc/fortran/ChangeLog
gcc/fortran/trans-common.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/common_align_2.f90 [new file with mode: 0644]

index f629bf214865c76cf9e1653f46bdfcafa968fce8..2f611ff6d5f1cc2fc700b1c2d24ce8712e2b0a37 100644 (file)
@@ -1,3 +1,9 @@
+2009-04-04  Paul Thomas  <pault@gcc.gnu.org>
+
+       PR fortran/37614
+       * trans-common.c (translate_common): Do not offset the whole
+       coomon block.
+
 2009-04-03  Tobias Burnus  <burnus@net-b.de>
 
        PR fortran/39594
index 92edd208daefbd16ab1319ada8fcc8c88560ea7c..6cf9d5b0979340f7f286cbad1d209fb6e9c924e1 100644 (file)
@@ -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);
index 82894528ca54689e2823d937d261a227c8e7a536..be66288f75f62560a410f2f9f9545d962d7f3d8b 100644 (file)
@@ -1,3 +1,8 @@
+2009-04-04  Paul Thomas  <pault@gcc.gnu.org>
+
+       PR fortran/37614
+       * gfortran.dg/common_align_2.f90: New test.
+
 2009-04-04  Richard Guenther  <rguenther@suse.de>
 
        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 (file)
index 0000000..e3b70d7
--- /dev/null
@@ -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  <burnus@gcc.gnu.org>
+!
+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
+