diff options
author | Tobias Burnus <burnus@gcc.gnu.org> | 2011-01-26 11:12:47 +0100 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2011-01-26 11:12:47 +0100 |
commit | 19d361071b4e622adf624a8a446a18cef89d43a4 (patch) | |
tree | 722192447d3131faa8a3653d812ae2ca5689c8fe /gcc/fortran/symbol.c | |
parent | 52fe3d5beeb035fb4ae717f79f9825bf1898b67c (diff) | |
download | gcc-19d361071b4e622adf624a8a446a18cef89d43a4.zip gcc-19d361071b4e622adf624a8a446a18cef89d43a4.tar.gz gcc-19d361071b4e622adf624a8a446a18cef89d43a4.tar.bz2 |
re PR fortran/47339 (Fortran 2003/2008: Valid NAMELIST rejected; Fortran 95: Invalid namelist objects accepted)
2011-01-26 Tobias Burnus <burnus@net-b.de>
PR fortran/47339
PR fortran/43062
* match.c (gfc_match_namelist): Allow assumed-length characters.
* resolve.c (resolve_fl_namelist): Adapt and add error messages.
* symbol.c (check_conflict): Allow allocatables in NML for
* F2003.
* trans-io.c (nml_get_addr_expr,transfer_namelist_element):
Changes due to that change.
2011-01-26 Tobias Burnus <burnus@net-b.de>
PR fortran/47339
PR fortran/43062
* fortran.dg/namelist_69.f90: New test.
* fortran.dg/namelist_70.f90: New test.
* fortran.dg/namelist_assumed_char.f90: Modify dg-error, augment
* test.
* fortran.dg/namelist_3.f90: Adapt test.
* fortran.dg/namelist_34.f90: Ditto.
* fortran.dg/namelist_35.f90: Ditto.
* fortran.dg/namelist_5.f90: Ditto.
* fortran.dg/namelist_63.f90: Ditto.
* gfortran.dg/alloc_comp_constraint_1.f90: Ditto.
From-SVN: r169282
Diffstat (limited to 'gcc/fortran/symbol.c')
-rw-r--r-- | gcc/fortran/symbol.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/gcc/fortran/symbol.c b/gcc/fortran/symbol.c index cb5a08f..71aa518 100644 --- a/gcc/fortran/symbol.c +++ b/gcc/fortran/symbol.c @@ -390,6 +390,14 @@ check_conflict (symbol_attribute *attr, const char *name, locus *where) goto conflict_std; } + if (attr->in_namelist && (attr->allocatable || attr->pointer)) + { + a1 = in_namelist; + a2 = attr->allocatable ? allocatable : pointer; + standard = GFC_STD_F2003; + goto conflict_std; + } + /* Check for attributes not allowed in a BLOCK DATA. */ if (gfc_current_state () == COMP_BLOCK_DATA) { @@ -495,9 +503,6 @@ check_conflict (symbol_attribute *attr, const char *name, locus *where) conf (in_equivalence, allocatable); conf (in_equivalence, threadprivate); - conf (in_namelist, pointer); - conf (in_namelist, allocatable); - conf (entry, result); conf (function, subroutine); |