diff options
author | Janus Weil <janus@gcc.gnu.org> | 2009-04-07 09:24:37 +0200 |
---|---|---|
committer | Janus Weil <janus@gcc.gnu.org> | 2009-04-07 09:24:37 +0200 |
commit | 3afadac3ca557d83ad115178a631aeb60659b0c5 (patch) | |
tree | b6a3794c0ef4b9169b679011d0325bd1a347a4f6 /gcc/fortran/expr.c | |
parent | 445099463a83367ddabb201e9e29e5a741cce034 (diff) | |
download | gcc-3afadac3ca557d83ad115178a631aeb60659b0c5.zip gcc-3afadac3ca557d83ad115178a631aeb60659b0c5.tar.gz gcc-3afadac3ca557d83ad115178a631aeb60659b0c5.tar.bz2 |
re PR other/38920 (dw2 exceptions don't work.)
2009-04-07 Janus Weil <janus@gcc.gnu.org>
PR fortran/38920
* expr.c (gfc_check_pointer_assign): Enable interface check for
procedure pointers.
* gfortran.h: Add copy_formal_args_intr.
* interface.c (gfc_compare_interfaces): Call gfc_compare_intr_interfaces
if second argument is an intrinsic.
(compare_intr_interfaces): Correctly set attr.function, attr.subroutine
and ts.
(compare_parameter): Call gfc_compare_interfaces also for intrinsics.
* resolve.c (resolve_specific_f0,resolve_specific_s0): Don't resolve
intrinsic interfaces here. Must happen earlier.
(resolve_symbol): Resolution of intrinsic interfaces moved here from
resolve_specific_..., and formal args are now copied from intrinsic
interfaces.
* symbol.c (copy_formal_args_intr): New function to copy the formal
arguments from an intinsic procedure.
2009-04-07 Janus Weil <janus@gcc.gnu.org>
PR fortran/38920
* gfortran.dg/proc_decl_1.f90: Modified.
* gfortran.dg/proc_ptr_11.f90: Extended.
* gfortran.dg/proc_ptr_13.f90: Modified.
From-SVN: r145651
Diffstat (limited to 'gcc/fortran/expr.c')
-rw-r--r-- | gcc/fortran/expr.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/gcc/fortran/expr.c b/gcc/fortran/expr.c index 233516e..94b8e0e 100644 --- a/gcc/fortran/expr.c +++ b/gcc/fortran/expr.c @@ -3142,7 +3142,6 @@ gfc_check_pointer_assign (gfc_expr *lvalue, gfc_expr *rvalue) "in procedure pointer assignment at %L", rvalue->symtree->name, &rvalue->where); } - /* TODO. See PR 38290. if (rvalue->expr_type == EXPR_VARIABLE && lvalue->symtree->n.sym->attr.if_source != IFSRC_UNKNOWN && !gfc_compare_interfaces (lvalue->symtree->n.sym, @@ -3151,7 +3150,7 @@ gfc_check_pointer_assign (gfc_expr *lvalue, gfc_expr *rvalue) gfc_error ("Interfaces don't match " "in procedure pointer assignment at %L", &rvalue->where); return FAILURE; - }*/ + } return SUCCESS; } |