aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/resolve.c5
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/real_dimension_1.f7
4 files changed, 22 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index ac72fb2..cf54102 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2007-12-16 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/34305
+ * resolve.c (compare_bound): If either of the types of
+ the arguments isn't INTEGER, return CMP_UNKNOWN.
+
2007-12-16 Tobias Burnus <burnus@net-b.de>
PR fortran/34246
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
index 0df0aa7..57c17dc 100644
--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -3149,8 +3149,11 @@ compare_bound (gfc_expr *a, gfc_expr *b)
|| b == NULL || b->expr_type != EXPR_CONSTANT)
return CMP_UNKNOWN;
+ /* If either of the types isn't INTEGER, we must have
+ raised an error earlier. */
+
if (a->ts.type != BT_INTEGER || b->ts.type != BT_INTEGER)
- gfc_internal_error ("compare_bound(): Bad expression");
+ return CMP_UNKNOWN;
i = mpz_cmp (a->value.integer, b->value.integer);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index f25a036..82411bd 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2007-12-16 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/34305
+ * gfortran.dg/real_dimension_1.f: New test case.
+
2007-12-16 Rask Ingemann Lambertsen <rask@sygehus.dk>
* gcc.dg/torture/pr24257.c: Remove -O from options.
diff --git a/gcc/testsuite/gfortran.dg/real_dimension_1.f b/gcc/testsuite/gfortran.dg/real_dimension_1.f
new file mode 100644
index 0000000..73e9131
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/real_dimension_1.f
@@ -0,0 +1,7 @@
+! { dg-do compile }
+! PR 34305 - make sure there's an error message for specifying a
+ program test
+ parameter (datasize = 1000)
+ dimension idata (datasize) ! { dg-error "must be of INTEGER type|must have constant shape" }
+ idata (1) = -1
+ end