aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Love <fx@gcc.gnu.org>1998-07-01 10:57:06 +0000
committerDave Love <fx@gcc.gnu.org>1998-07-01 10:57:06 +0000
commit28e59669c0f382b8dc21ea17dd54cdfa7c2d80aa (patch)
tree7feaff245f0130fb095836a7e5b81f367eb09224
parenta752ed65103481729e9072869942458f487199b2 (diff)
downloadgcc-28e59669c0f382b8dc21ea17dd54cdfa7c2d80aa.zip
gcc-28e59669c0f382b8dc21ea17dd54cdfa7c2d80aa.tar.gz
gcc-28e59669c0f382b8dc21ea17dd54cdfa7c2d80aa.tar.bz2
New test from Craig.
From-SVN: r20873
-rw-r--r--gcc/testsuite/g77.f-torture/execute/980701-0.f72
-rw-r--r--gcc/testsuite/g77.f-torture/execute/980701-1.f72
2 files changed, 144 insertions, 0 deletions
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
index 0000000..a3ddd55
--- /dev/null
+++ b/gcc/testsuite/g77.f-torture/execute/980701-0.f
@@ -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
index 0000000..fba7856
--- /dev/null
+++ b/gcc/testsuite/g77.f-torture/execute/980701-1.f
@@ -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