[Bug fortran/99349] ICE in match_data_constant, at fortran/decl.c:426
sgk at troutmask dot apl.washington.edu
gcc-bugzilla@gcc.gnu.org
Thu Sep 1 22:44:55 GMT 2022
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99349
--- Comment #7 from Steve Kargl <sgk at troutmask dot apl.washington.edu> ---
On Thu, Sep 01, 2022 at 06:45:25PM +0000, anlauf at gcc dot gnu.org wrote:
>
> Alternatively, simply catching the NULL pointer dereference by
>
> diff --git a/gcc/fortran/decl.cc b/gcc/fortran/decl.cc
> index b6400514731..0f9b2ced4c2 100644
> --- a/gcc/fortran/decl.cc
> +++ b/gcc/fortran/decl.cc
> @@ -423,7 +423,8 @@ match_data_constant (gfc_expr **result)
> data-pointer-initialization compatible (7.5.4.6) with the initial
> data target; the data statement object is initially associated
> with the target. */
> - if ((*result)->symtree->n.sym->attr.save
> + if ((*result)->symtree
> + && (*result)->symtree->n.sym->attr.save
> && (*result)->symtree->n.sym->attr.target)
> return m;
> gfc_free_expr (*result);
>
> also fixes the ICE. It's basically that the error message generated differs
> from the one I get with your patch.
>
> Do you have additional thoughts?
>
Now, that I've looked at the two patches again. I think I prefer
yours or mine. A simple NULL pointer dereference can be committed
under the "Obviously correct" rule.
More information about the Gcc-bugs
mailing list