This is the mail archive of the fortran@gcc.gnu.org mailing list for the GNU Fortran project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Patch, fortran] PR37614 - Change position of padding for aligned COMMONs


Dear All,

Before I post this patch for real, I would like to know what you would
like to see by way of an option, if any, to recover the present (and
g77's) behaviour?  Maybe this is not needed?

The patch below bootstraps and regtests on FC9/x86_64.

Cheers

Paul

Index: gcc/fortran/trans-common.c
===================================================================
--- gcc/fortran/trans-common.c	(revision 143461)
+++ gcc/fortran/trans-common.c	(working copy)
@@ -1124,11 +1124,6 @@
 				 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: gcc/testsuite/gfortran.dg/common_align_2.f90
===================================================================
--- gcc/testsuite/gfortran.dg/common_align_2.f90	(revision 0)
+++ gcc/testsuite/gfortran.dg/common_align_2.f90	(revision 0)
@@ -0,0 +1,30 @@
+! { dg-do run }
+! Tests the fix for PR37614, in which the alignment 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
+


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]