re PR fortran/31251 (Non-integer character length leads to segfault)
authorJerry DeLisle <jvdelisle@gcc.gnu.org>
Fri, 4 May 2007 11:10:06 +0000 (11:10 +0000)
committerFrançois-Xavier Coudert <fxcoudert@gcc.gnu.org>
Fri, 4 May 2007 11:10:06 +0000 (11:10 +0000)
PR fortran/31251
* simplify.c (gfc_simplify_len): Only simplify integer lengths.

From-SVN: r124415

gcc/fortran/ChangeLog
gcc/fortran/simplify.c

index ee9918692728def8dd3bc7794a805430646ad4df..71ec57ee17114a817f6245835458bb77d6404c04 100644 (file)
@@ -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
index 3065c02870518106ed6fca60a6c0eca004c4425d..9df2e812c1d945d936f053a2676747569410fd59 100644 (file)
@@ -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;
 }