------- Comment #26 from jvdelisle at gcc dot gnu dot org  2009-11-26 02:12 
-------
This is better, set the expr to a valid constant 0 before converting to a tree.

Index: trans-const.c
===================================================================
--- trans-const.c       (revision 154660)
+++ trans-const.c       (working copy)
@@ -336,7 +336,7 @@ void
 gfc_conv_constant (gfc_se * se, gfc_expr * expr)
 {
   /* We may be receiving an expression for C_NULL_PTR or C_NULL_FUNPTR.  If
-     so, they expr_type will not yet be an EXPR_CONSTANT.  We need to make
+     so, the expr_type will not yet be an EXPR_CONSTANT.  We need to make
      it so here.  */
   if (expr->ts.type == BT_DERIVED && expr->ts.derived
       && expr->ts.derived->attr.is_iso_c)
@@ -349,7 +349,12 @@ gfc_conv_constant (gfc_se * se, gfc_expr * expr)
         }
     }

-  gcc_assert (expr->expr_type == EXPR_CONSTANT);
+  if (expr->expr_type != EXPR_CONSTANT)
+    {
+      gfc_error ("non-constant initialization expression at %L",
&expr->where);
+      se->expr = gfc_conv_constant_to_tree (gfc_int_expr (0));
+      return;
+    }

   if (se->ss != NULL)
     {


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41807

Reply via email to