aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorSteven G. Kargl <kargl@gcc.gnu.org>2015-06-02 22:08:14 +0000
committerSteven G. Kargl <kargl@gcc.gnu.org>2015-06-02 22:08:14 +0000
commitb4cb2a41df2b4871e6c0596b2b6683788cda6e04 (patch)
tree4add5cb79f0b8c32f9a391cbfb358d7de3cd7f5a /gcc
parent6712d6fd3087953b89ff78e2e6a58b39eb90a6a0 (diff)
downloadgcc-b4cb2a41df2b4871e6c0596b2b6683788cda6e04.zip
gcc-b4cb2a41df2b4871e6c0596b2b6683788cda6e04.tar.gz
gcc-b4cb2a41df2b4871e6c0596b2b6683788cda6e04.tar.bz2
simplify.c (gfc_simplify_reshape): Convert assert into returning NULL, which triggers an error condition.
2015-06-02 Steven G. Kargl <kargl@gcc.gnu.org> * simplify.c (gfc_simplify_reshape): Convert assert into returning NULL, which triggers an error condition. 2015-06-02 Steven G. Kargl <kargl@gcc.gnu.org> * gfortran.dg/reshape_7.f90: New test. From-SVN: r224043
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog5
-rw-r--r--gcc/fortran/simplify.c7
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gfortran.dg/reshape_7.f9017
4 files changed, 31 insertions, 2 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 6be535f..944139e 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,8 @@
+2015-06-02 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ * simplify.c (gfc_simplify_reshape): Convert assert into returning
+ NULL, which triggers an error condition.
+
2015-05-27 Andre Vehreschild <vehre@gmx.de>
PR fortran/65548
diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c
index f49c6c0..2f3e247 100644
--- a/gcc/fortran/simplify.c
+++ b/gcc/fortran/simplify.c
@@ -5188,8 +5188,11 @@ gfc_simplify_reshape (gfc_expr *source, gfc_expr *shape_exp,
e = gfc_constructor_lookup_expr (source->value.constructor, j);
else
{
- gcc_assert (npad > 0);
-
+ if (npad <= 0)
+ {
+ mpz_clear (index);
+ return NULL;
+ }
j = j - nsource;
j = j % npad;
e = gfc_constructor_lookup_expr (pad->value.constructor, j);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 70a05da..a86359d 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2015-06-02 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ * gfortran.dg/reshape_7.f90: New test.
+
2015-06-02 David Malcolm <dmalcolm@redhat.com>
PR c/66220:
diff --git a/gcc/testsuite/gfortran.dg/reshape_7.f90 b/gcc/testsuite/gfortran.dg/reshape_7.f90
new file mode 100644
index 0000000..6e17f19
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/reshape_7.f90
@@ -0,0 +1,17 @@
+! { dg-do compile }
+! PR fortran/66380
+!
+subroutine p0
+ integer, parameter :: sh(2) = [2, 3]
+ integer, parameter :: &
+ & a(2,2) = reshape([1, 2, 3, 4], sh) ! { dg-error "Different shape" }
+ if (a(1,1) /= 0) call abort
+end subroutine p0
+
+
+subroutine p1
+ integer, parameter :: sh(2) = [2, 1]
+ integer, parameter :: &
+ & a(2,2) = reshape([1, 2, 3, 4], sh) ! { dg-error "Different shape" }
+ if (a(1,1) /= 0) call abort
+end subroutine p1