aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJerry DeLisle <jvdelisle@gcc.gnu.org>2007-05-04 11:10:06 +0000
committerFrançois-Xavier Coudert <fxcoudert@gcc.gnu.org>2007-05-04 11:10:06 +0000
commit26fbc975c83a59ba27e067207c21f083b42b0aba (patch)
tree0b082da33a4c9d599e402f3745a4a508695405b7 /gcc
parente4fae5f757ec925170556bd2f51cf2dc1cc43523 (diff)
downloadgcc-26fbc975c83a59ba27e067207c21f083b42b0aba.zip
gcc-26fbc975c83a59ba27e067207c21f083b42b0aba.tar.gz
gcc-26fbc975c83a59ba27e067207c21f083b42b0aba.tar.bz2
re PR fortran/31251 (Non-integer character length leads to segfault)
PR fortran/31251 * simplify.c (gfc_simplify_len): Only simplify integer lengths. From-SVN: r124415
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog5
-rw-r--r--gcc/fortran/simplify.c5
2 files changed, 8 insertions, 2 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index ee99186..71ec57e 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,8 @@
+2007-05-04 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR fortran/31251
+ * simplify.c (gfc_simplify_len): Only simplify integer lengths.
+
2007-05-04 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
PR fortran/31781
diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c
index 3065c02..9df2e81 100644
--- a/gcc/fortran/simplify.c
+++ b/gcc/fortran/simplify.c
@@ -2136,14 +2136,15 @@ gfc_simplify_len (gfc_expr *e)
}
if (e->ts.cl != NULL && e->ts.cl->length != NULL
- && e->ts.cl->length->expr_type == EXPR_CONSTANT)
+ && e->ts.cl->length->expr_type == EXPR_CONSTANT
+ && e->ts.cl->length->ts.type == BT_INTEGER)
{
result = gfc_constant_result (BT_INTEGER, gfc_default_integer_kind,
&e->where);
mpz_set (result->value.integer, e->ts.cl->length->value.integer);
return range_check (result, "LEN");
}
-
+
return NULL;
}