aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/symbol.c
diff options
context:
space:
mode:
authorTobias Burnus <burnus@net-b.de>2011-11-28 15:21:33 +0100
committerTobias Burnus <burnus@gcc.gnu.org>2011-11-28 15:21:33 +0100
commitfc2a6c89825977ce23e606de67c95d11afa61d5c (patch)
tree1beb6b16b624edf198b324e3cc351236a09f1755 /gcc/fortran/symbol.c
parent1a30353af83ec6fd6b8e7862511bec5c897e0790 (diff)
downloadgcc-fc2a6c89825977ce23e606de67c95d11afa61d5c.zip
gcc-fc2a6c89825977ce23e606de67c95d11afa61d5c.tar.gz
gcc-fc2a6c89825977ce23e606de67c95d11afa61d5c.tar.bz2
re PR fortran/51308 (PARAMETER attribute conflicts with SAVE attribute)
2011-11-28 Tobias Burnus <burnus@net-b.de> Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/51308 * symbol.c (check_conflict): Ignore BIND(C) + PARAMETER conflicts for ISO_C_BINDING variables. (gen_special_c_interop_ptr): Don't mark c_ptr_null/c_funptr_null as SAVE. 2011-11-28 Tobias Burnus <burnus@net-b.de> PR fortran/51308 * gfortran.dg/iso_c_binding_compiler_4.f90: New. Co-Authored-By: Steven G. Kargl <kargl@gcc.gnu.org> From-SVN: r181778
Diffstat (limited to 'gcc/fortran/symbol.c')
-rw-r--r--gcc/fortran/symbol.c10
1 files changed, 3 insertions, 7 deletions
diff --git a/gcc/fortran/symbol.c b/gcc/fortran/symbol.c
index 9bd6ed4..de42297 100644
--- a/gcc/fortran/symbol.c
+++ b/gcc/fortran/symbol.c
@@ -742,9 +742,10 @@ check_conflict (symbol_attribute *attr, const char *name, locus *where)
conf2 (asynchronous);
conf2 (threadprivate);
conf2 (value);
- conf2 (is_bind_c);
conf2 (codimension);
conf2 (result);
+ if (!attr->is_iso_c)
+ conf2 (is_bind_c);
break;
default:
@@ -3763,13 +3764,11 @@ gen_special_c_interop_ptr (int ptr_id, const char *ptr_name,
"create symbol for %s", ptr_name);
}
- /* Set up the symbol's important fields. Save attr required so we can
- initialize the ptr to NULL. */
- tmp_sym->attr.save = SAVE_EXPLICIT;
tmp_sym->ts.is_c_interop = 1;
tmp_sym->attr.is_c_interop = 1;
tmp_sym->ts.is_iso_c = 1;
tmp_sym->ts.type = BT_DERIVED;
+ tmp_sym->attr.flavor = FL_PARAMETER;
/* The c_ptr and c_funptr derived types will provide the
definition for c_null_ptr and c_null_funptr, respectively. */
@@ -3817,9 +3816,6 @@ gen_special_c_interop_ptr (int ptr_id, const char *ptr_name,
c->expr = gfc_get_expr ();
c->expr->expr_type = EXPR_NULL;
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;
return SUCCESS;
}