New test from Craig.
authorDave Love <fx@gcc.gnu.org>
Wed, 1 Jul 1998 10:57:06 +0000 (10:57 +0000)
committerDave Love <fx@gcc.gnu.org>
Wed, 1 Jul 1998 10:57:06 +0000 (10:57 +0000)
From-SVN: r20873

gcc/testsuite/g77.f-torture/execute/980701-0.f [new file with mode: 0644]
gcc/testsuite/g77.f-torture/execute/980701-1.f [new file with mode: 0644]

diff --git a/gcc/testsuite/g77.f-torture/execute/980701-0.f b/gcc/testsuite/g77.f-torture/execute/980701-0.f
new file mode 100644 (file)
index 0000000..a3ddd55
--- /dev/null
@@ -0,0 +1,72 @@
+* g77 0.5.23 and previous had bugs involving too little space
+* allocated for EQUIVALENCE and COMMON areas needing initial
+* padding to meet alignment requirements of the system.
+
+      call subr
+      end
+
+      subroutine subr
+      implicit none
+
+      real r1(5), r2(5), r3(5)
+      real s1(2), s2(2), s3(2)
+      double precision d1, d2, d3
+      integer i1, i2, i3
+      equivalence (r1, s1(2))
+      equivalence (d1, r1(2))
+      equivalence (r2, s2(2))
+      equivalence (d2, r2(2))
+      equivalence (r3, s3(2))
+      equivalence (d3, r3(2))
+
+      s1(1) = 1.
+      r1(1) = 1.
+      d1 = 10.
+      r1(4) = 1.
+      r1(5) = 1.
+      i1 = 1
+      s2(1) = 2.
+      r2(1) = 2.
+      d2 = 20.
+      r2(4) = 2.
+      r2(5) = 2.
+      i2 = 2
+      s3(1) = 3.
+      r3(1) = 3.
+      d3 = 30.
+      r3(4) = 3.
+      r3(5) = 3.
+      i3 = 3
+
+      call x (s1, r1, d1, i1, s2, r2, d2, i2, s3, r3, d3, i3)
+
+      end
+
+      subroutine x (s1, r1, d1, i1, s2, r2, d2, i2, s3, r3, d3, i3)
+      implicit none
+
+      real r1(5), r2(5), r3(5)
+      real s1(2), s2(2), s3(2)
+      double precision d1, d2, d3
+      integer i1, i2, i3
+
+      if (s1(1) .ne. 1.) call abort
+      if (r1(1) .ne. 1.) call abort
+      if (d1 .ne. 10.) call abort
+      if (r1(4) .ne. 1.) call abort
+      if (r1(5) .ne. 1.) call abort
+      if (i1 .ne. 1) call abort
+      if (s2(1) .ne. 2.) call abort
+      if (r2(1) .ne. 2.) call abort
+      if (d2 .ne. 20.) call abort
+      if (r2(4) .ne. 2.) call abort
+      if (r2(5) .ne. 2.) call abort
+      if (i2 .ne. 2) call abort
+      if (s3(1) .ne. 3.) call abort
+      if (r3(1) .ne. 3.) call abort
+      if (d3 .ne. 30.) call abort
+      if (r3(4) .ne. 3.) call abort
+      if (r3(5) .ne. 3.) call abort
+      if (i3 .ne. 3) call abort
+
+      end
diff --git a/gcc/testsuite/g77.f-torture/execute/980701-1.f b/gcc/testsuite/g77.f-torture/execute/980701-1.f
new file mode 100644 (file)
index 0000000..fba7856
--- /dev/null
@@ -0,0 +1,72 @@
+* g77 0.5.23 and previous had bugs involving too little space
+* allocated for EQUIVALENCE and COMMON areas needing initial
+* padding to meet alignment requirements of the system.
+
+      call subr
+      end
+
+      subroutine subr
+      implicit none
+
+      real r1(5), r2(5), r3(5)
+      real s1(2), s2(2), s3(2)
+      double precision d1, d2, d3
+      integer i1, i2, i3
+      equivalence (d1, r1(2))
+      equivalence (r1, s1(2))
+      equivalence (d2, r2(2))
+      equivalence (r2, s2(2))
+      equivalence (d3, r3(2))
+      equivalence (r3, s3(2))
+
+      s1(1) = 1.
+      r1(1) = 1.
+      d1 = 10.
+      r1(4) = 1.
+      r1(5) = 1.
+      i1 = 1
+      s2(1) = 2.
+      r2(1) = 2.
+      d2 = 20.
+      r2(4) = 2.
+      r2(5) = 2.
+      i2 = 2
+      s3(1) = 3.
+      r3(1) = 3.
+      d3 = 30.
+      r3(4) = 3.
+      r3(5) = 3.
+      i3 = 3
+
+      call x (s1, r1, d1, i1, s2, r2, d2, i2, s3, r3, d3, i3)
+
+      end
+
+      subroutine x (s1, r1, d1, i1, s2, r2, d2, i2, s3, r3, d3, i3)
+      implicit none
+
+      real r1(5), r2(5), r3(5)
+      real s1(2), s2(2), s3(2)
+      double precision d1, d2, d3
+      integer i1, i2, i3
+
+      if (s1(1) .ne. 1.) call abort
+      if (r1(1) .ne. 1.) call abort
+      if (d1 .ne. 10.) call abort
+      if (r1(4) .ne. 1.) call abort
+      if (r1(5) .ne. 1.) call abort
+      if (i1 .ne. 1) call abort
+      if (s2(1) .ne. 2.) call abort
+      if (r2(1) .ne. 2.) call abort
+      if (d2 .ne. 20.) call abort
+      if (r2(4) .ne. 2.) call abort
+      if (r2(5) .ne. 2.) call abort
+      if (i2 .ne. 2) call abort
+      if (s3(1) .ne. 3.) call abort
+      if (r3(1) .ne. 3.) call abort
+      if (d3 .ne. 30.) call abort
+      if (r3(4) .ne. 3.) call abort
+      if (r3(5) .ne. 3.) call abort
+      if (i3 .ne. 3) call abort
+
+      end