[gfortran,committed] Fix half or PR31251: segfault in real charlen

François-Xavier Coudert fxcoudert@gmail.com
Fri May 4 11:10:00 GMT 2007


Committed as obvious after regtesting on i686-linux, since the ICE
doesn't appear on Jerry's system. The other half of the PR (we're
emitting two identical error messages) still needs fixing.


2007-05-04  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

        PR fortran/31251
        * simplify.c (gfc_simplify_len): Only simplify integer lengths.


Index: simplify.c
===================================================================
--- simplify.c  (revision 124412)
+++ simplify.c  (working copy)
@@ -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;
 }



More information about the Fortran mailing list