[Bug fortran/51308] PARAMETER attribute conflicts with SAVE attribute
burnus at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Nov 28 09:35:00 GMT 2011
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51308
--- Comment #3 from Tobias Burnus <burnus at gcc dot gnu.org> 2011-11-28 07:51:02 UTC ---
(In reply to comment #2)
> - conf2 (is_bind_c);
> + if (!(name && (strcmp(name, "c_null_ptr") == 0 || strcmp(name,
> "c_null_funptr") == 0)))
> + conf2 (is_bind_c);
I think one should use "if (!is_iso_c)". And why do you keep the save
attribute? I think the following should work as well.
(Actually, reading it again, the "Set up the symbol's important fields." is not
really a useful comment - and could thus go.)
--- a/gcc/fortran/symbol.c
+++ b/gcc/fortran/symbol.c
@@ -744,5 +744,6 @@ check_conflict (symbol_attribute *attr, const char *name,
locus *where)
conf2 (value);
- conf2 (is_bind_c);
conf2 (codimension);
conf2 (result);
+ if (!attr->is_iso_c)
+ conf2 (is_bind_c);
break;
@@ -3765,5 +3766,3 @@ gen_special_c_interop_ptr (int ptr_id, const char
- /* Set up the symbol's important fields. Save attr required so we can
- initialize the ptr to NULL. */
- tmp_sym->attr.save = SAVE_EXPLICIT;
+ /* Set up the symbol's important fields. */
tmp_sym->ts.is_c_interop = 1;
@@ -3772,2 +3771,3 @@ gen_special_c_interop_ptr (int ptr_id, const char
tmp_sym->ts.type = BT_DERIVED;
+ tmp_sym->attr.flavor = FL_PARAMETER;
@@ -3819,5 +3819,2 @@ gen_special_c_interop_ptr (int ptr_id, const char
c->expr->ts.is_iso_c = 1;
- /* Must declare c_null_ptr and c_null_funptr as having the
- PARAMETER attribute so they can be used in init expressions. */
- tmp_sym->attr.flavor = FL_PARAMETER;
More information about the Gcc-bugs
mailing list