aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorThomas Koenig <tkoenig@gcc.gnu.org>2008-05-04 08:06:02 +0000
committerThomas Koenig <tkoenig@gcc.gnu.org>2008-05-04 08:06:02 +0000
commit7ad99d60f442253354e6a7b1be56748f6e627246 (patch)
tree8b1112ef5b4bc21bef6fd7da4fef8fc861f0618b /gcc
parent3e438e2b76a87fd492bee3af425a450077fa4ef5 (diff)
downloadgcc-7ad99d60f442253354e6a7b1be56748f6e627246.zip
gcc-7ad99d60f442253354e6a7b1be56748f6e627246.tar.gz
gcc-7ad99d60f442253354e6a7b1be56748f6e627246.tar.bz2
re PR fortran/35990 (run-time abort for PACK of run-time zero sized array)
2008-05-04 Thomas Koenig <tkoenig@gcc.gnu.org> PR libfortran/35990 * intrinsics/pack_generic.c: If an extent of the source array is less then zero, set it to zero. Set the source pointer to NULL if the source size is zero. Set the total number of elements to zero if the vector has an extent less or equal to zero. * m4/pack.m4: Set the source pointer to NULL if the source array is zero-sized. Set the total number of elemements to zero if the vector has an extent less or equal to zero. * generated/pack_i1.c: Regenerated. * generated/pack_i2.c: Regenerated. * generated/pack_i4.c: Regenerated. * generated/pack_i8.c: Regenerated. * generated/pack_i16.c: Regenerated. * generated/pack_r4.c: Regenerated. * generated/pack_r8.c: Regenerated. * generated/pack_r10.c: Regenerated. * generated/pack_r16.c: Regenerated. * generated/pack_c4.c: Regenerated. * generated/pack_c8.c: Regenerated. * generated/pack_c10.c: Regenerated. * generated/pack_c16.c: Regenerated. 2008-05-04 Thomas Koenig <tkoenig@gcc.gnu.org> PR libfortran/35990 * gfortran.dg/intrinsic_pack_4.f90: New test case. From-SVN: r134927
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/intrinsic_pack_4.f9072
2 files changed, 77 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index a8880ad..ef2a4be 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2008-05-04 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR libfortran/35990
+ * gfortran.dg/intrinsic_pack_4.f90: New test case.
+
2008-05-03 Eric Botcazou <ebotcazou@adacore.com>
* gnat.dg/discr6_pkg.ads: New helper.
diff --git a/gcc/testsuite/gfortran.dg/intrinsic_pack_4.f90 b/gcc/testsuite/gfortran.dg/intrinsic_pack_4.f90
new file mode 100644
index 0000000..6910368
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/intrinsic_pack_4.f90
@@ -0,0 +1,72 @@
+! { dg-do run }
+! PR 35990 - some empty array sections caused pack to crash.
+! Test case contributed by Dick Hendrickson, adjusted and
+! extended by Thomas Koenig.
+ program try_gf1048
+
+ call gf1048a( 10, 8, 7, 1, 0, .true.)
+ call gf1048b( 10, 8, 7, 1, 0, .true.)
+ call gf1048c( 10, 8, 7, 1, 0, .true.)
+ call gf1048d( 10, 8, 7, 1, 0, .true.)
+ call P_inta ( 10, 8, 7, 1, 0, .true.)
+ call P_intb ( 10, 8, 7, 1, 0, .true.)
+ call P_intc ( 10, 8, 7, 1, 0, .true.)
+ call P_intd ( 10, 8, 7, 1, 0, .true.)
+ end program
+
+ SUBROUTINE GF1048a(nf10,nf8,nf7,nf1,nf0,nf_true)
+ logical nf_true
+ CHARACTER(9) BDA(10)
+ CHARACTER(9) BDA1(10)
+ BDA( 8:7) = PACK(BDA1( 10: 1), NF_TRUE)
+ END SUBROUTINE
+
+ SUBROUTINE GF1048b(nf10,nf8,nf7,nf1,nf0,nf_true)
+ logical nf_true
+ CHARACTER(9) BDA(10)
+ CHARACTER(9) BDA1(nf10)
+ BDA(NF8:NF7) = PACK(BDA1(NF8:NF7), NF_TRUE)
+ END SUBROUTINE
+
+ SUBROUTINE GF1048c(nf10,nf8,nf7,nf1,nf0,nf_true)
+ logical nf_true
+ CHARACTER(9) BDA(10)
+ CHARACTER(9) BDA1(10)
+ BDA(NF8:NF7) = PACK(BDA1(NF10:NF1), NF_TRUE)
+ END SUBROUTINE
+
+ SUBROUTINE GF1048d(nf10,nf8,nf7,nf1,nf0,nf_true)
+ logical nf_true
+ CHARACTER(9) BDA(10)
+ CHARACTER(9) BDA1(nf10)
+ BDA(NF8:NF7) = PACK(BDA1(NF10:NF1), NF_TRUE)
+ END SUBROUTINE
+
+ SUBROUTINE P_INTa(nf10,nf8,nf7,nf1,nf0,nf_true)
+ logical nf_true
+ INTEGER BDA(10)
+ INTEGER BDA1(10)
+ BDA( 8:7) = PACK(BDA1( 10: 1), NF_TRUE)
+ END SUBROUTINE
+
+ SUBROUTINE P_INTb(nf10,nf8,nf7,nf1,nf0,nf_true)
+ logical nf_true
+ INTEGER BDA(10)
+ INTEGER BDA1(nf10)
+ BDA(NF8:NF7) = PACK(BDA1(NF8:NF7), NF_TRUE)
+ END SUBROUTINE
+
+ SUBROUTINE P_INTc(nf10,nf8,nf7,nf1,nf0,nf_true)
+ logical nf_true
+ INTEGER BDA(10)
+ INTEGER BDA1(10)
+ BDA(NF8:NF7) = PACK(BDA1(NF10:NF1), NF_TRUE)
+ END SUBROUTINE
+
+ SUBROUTINE P_INTd(nf10,nf8,nf7,nf1,nf0,nf_true)
+ logical nf_true
+ INTEGER BDA(10)
+ INTEGER BDA1(nf10)
+ BDA(NF8:NF7) = PACK(BDA1(NF10:NF1), NF_TRUE)
+ END SUBROUTINE
+