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
This commit is contained in:
parent
40a777e840
commit
b8dd4aa14d
2 changed files with 20 additions and 7 deletions
|
@ -1,3 +1,9 @@
|
|||
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>
|
||||
|
||||
* decl.c (match_byte_typespec): New function. Match BYTE type-spec.
|
||||
|
|
|
@ -1904,13 +1904,20 @@ gfc_get_symbol_decl (gfc_symbol * sym)
|
|||
if (sym->attr.associate_var)
|
||||
GFC_DECL_ASSOCIATE_VAR_P (decl) = 1;
|
||||
|
||||
/* We no longer mark __def_init as read-only so it does not take up
|
||||
space in the read-only section and dan go into the BSS instead,
|
||||
see PR 84487. Marking this as artificial means that OpenMP will
|
||||
treat this as predetermined shared. */
|
||||
if (sym->attr.vtab
|
||||
|| (sym->name[0] == '_' && gfc_str_startswith (sym->name, "__def_init")))
|
||||
DECL_ARTIFICIAL (decl) = 1;
|
||||
/* We only longer mark __def_init as read-only if it actually has an
|
||||
initializer, it does not needlessly take up space in the
|
||||
read-only section and can go into the BSS instead, see PR 84487.
|
||||
Marking this as artificial means that OpenMP will treat this as
|
||||
predetermined shared. */
|
||||
|
||||
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;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue