diff options
author | Janus Weil <janus@gcc.gnu.org> | 2008-12-02 12:58:16 +0100 |
---|---|---|
committer | Janus Weil <janus@gcc.gnu.org> | 2008-12-02 12:58:16 +0100 |
commit | 726d8566c19edbbf347cac9dd93fd263a7fd8ce4 (patch) | |
tree | 1a8ed9bfe2933dce30e55e9615c3176bfb1bc126 /gcc/fortran/symbol.c | |
parent | b72bbbcb08f999e3216f1a9bf3f82d7e72eb7123 (diff) | |
download | gcc-726d8566c19edbbf347cac9dd93fd263a7fd8ce4.zip gcc-726d8566c19edbbf347cac9dd93fd263a7fd8ce4.tar.gz gcc-726d8566c19edbbf347cac9dd93fd263a7fd8ce4.tar.bz2 |
re PR fortran/36704 (Procedure pointer as function result)
2008-12-02 Janus Weil <janus@gcc.gnu.org>
PR fortran/36704
PR fortran/38290
* decl.c (match_result): Result may be a standard variable or a
procedure pointer.
* expr.c (gfc_check_pointer_assign): Additional checks for procedure
pointer assignments.
* primary.c (gfc_match_rvalue): Bugfix for procedure pointer
assignments.
* resolve.c (resolve_function): Check for attr.subroutine.
* symbol.c (check_conflict): Addtional checks for RESULT statements.
* trans-types.c (gfc_sym_type,gfc_get_function_type): Support procedure
pointers as function result.
2008-12-02 Janus Weil <janus@gcc.gnu.org>
PR fortran/36704
PR fortran/38290
* gfortran.dg/entry_7.f90: Modified.
* gfortran.dg/proc_ptr_2.f90: Extended.
* gfortran.dg/proc_ptr_3.f90: Modified.
* gfortran.dg/proc_ptr_11.f90: New.
* gfortran.dg/proc_ptr_12.f90: New.
* gfortran.dg/result_1.f90: New.
From-SVN: r142351
Diffstat (limited to 'gcc/fortran/symbol.c')
-rw-r--r-- | gcc/fortran/symbol.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/fortran/symbol.c b/gcc/fortran/symbol.c index 4e81b89..7c79ef8 100644 --- a/gcc/fortran/symbol.c +++ b/gcc/fortran/symbol.c @@ -618,7 +618,10 @@ check_conflict (symbol_attribute *attr, const char *name, locus *where) break; case FL_VARIABLE: + break; + case FL_NAMELIST: + conf2 (result); break; case FL_PROCEDURE: @@ -672,6 +675,7 @@ check_conflict (symbol_attribute *attr, const char *name, locus *where) conf2 (function); conf2 (subroutine); conf2 (threadprivate); + conf2 (result); if (attr->intent != INTENT_UNKNOWN) { @@ -698,6 +702,7 @@ check_conflict (symbol_attribute *attr, const char *name, locus *where) conf2 (threadprivate); conf2 (value); conf2 (is_bind_c); + conf2 (result); break; default: |