Commit b8dd4aa1 by Thomas Koenig

re PR fortran/92113 (r276673 causes segfault in gfortran.dg/pr51434.f90)

2019-11-03  Thomas Koenig  <tkoenig@gcc.gnu.org>

    PR fortran/92133
    * trans-decl.c (gfc_get_symbol_decl): If __def_init actually
    contains a value, put it into  the read-only section.

From-SVN: r277760
parent 40a777e8
2019-11-03 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/92133
* trans-decl.c (gfc_get_symbol_decl): If __def_init actually
contains a value, put it into the read-only section.
2019-11-01 Steven G. Kargl <kargl@gcc.gnu.org> 2019-11-01 Steven G. Kargl <kargl@gcc.gnu.org>
* decl.c (match_byte_typespec): New function. Match BYTE type-spec. * decl.c (match_byte_typespec): New function. Match BYTE type-spec.
......
...@@ -1904,13 +1904,20 @@ gfc_get_symbol_decl (gfc_symbol * sym) ...@@ -1904,13 +1904,20 @@ gfc_get_symbol_decl (gfc_symbol * sym)
if (sym->attr.associate_var) if (sym->attr.associate_var)
GFC_DECL_ASSOCIATE_VAR_P (decl) = 1; GFC_DECL_ASSOCIATE_VAR_P (decl) = 1;
/* We no longer mark __def_init as read-only so it does not take up /* We only longer mark __def_init as read-only if it actually has an
space in the read-only section and dan go into the BSS instead, initializer, it does not needlessly take up space in the
see PR 84487. Marking this as artificial means that OpenMP will read-only section and can go into the BSS instead, see PR 84487.
treat this as predetermined shared. */ Marking this as artificial means that OpenMP will treat this as
if (sym->attr.vtab predetermined shared. */
|| (sym->name[0] == '_' && gfc_str_startswith (sym->name, "__def_init")))
DECL_ARTIFICIAL (decl) = 1; bool def_init = gfc_str_startswith (sym->name, "__def_init");
if (sym->attr.vtab || def_init)
{
DECL_ARTIFICIAL (decl) = 1;
if (def_init && sym->value)
TREE_READONLY (decl) = 1;
}
return decl; return decl;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment