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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@145541
138bc75d-0d04-0410-961f-
82ee72b054a4
+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
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);
+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
--- /dev/null
+! { 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
+