[Bug fortran/88228] ICE in check_null, at fortran/expr.c:2691

kargl at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Sun Dec 2 19:19:00 GMT 2018


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88228

kargl at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |kargl at gcc dot gnu.org

--- Comment #3 from kargl at gcc dot gnu.org ---
(In reply to kargl from comment #2)
> Index: gcc/fortran/expr.c
> ===================================================================
> --- gcc/fortran/expr.c	(revision 266386)
> +++ gcc/fortran/expr.c	(working copy)
> @@ -2688,6 +2688,9 @@ check_transformational (gfc_expr *e)
>  static match
>  check_null (gfc_expr *e)
>  {
> +  if (e->expr_type == EXPR_CONSTANT)
> +   return MATCH_NO;
> +
>    if (strcmp ("null", e->symtree->n.sym->name) != 0)
>      return MATCH_NO;
>  
> @@ -2793,10 +2796,15 @@ gfc_check_init_expr (gfc_expr *e)
>  	    && (m = check_transformational (e)) == MATCH_NO
>  	    && (m = check_elemental (e)) == MATCH_NO)
>  	  {
> -	    gfc_error ("Intrinsic function %qs at %L is not permitted "
> -		       "in an initialization expression",
> -		       e->symtree->n.sym->name, &e->where);
> -	    m = MATCH_ERROR;
> +	    if (e->expr_type == EXPR_CONSTANT)
> +	      return true;
> +	    else
> +	      {
> +		gfc_error ("Intrinsic function %qs at %L is not permitted "
> +			   "in an initialization expression",
> +			   e->symtree->n.sym->name, &e->where);
> +		m = MATCH_ERROR;
> +	      }
>  	  }
>  
>  	if (m == MATCH_ERROR)

Patch is insufficient new patch is sitting my tree.


More information about the Gcc-bugs mailing list