summaryrefslogtreecommitdiff
path: root/gcc/fortran/expr.c
diff options
context:
space:
mode:
authorjanus <janus@138bc75d-0d04-0410-961f-82ee72b054a4>2009-04-07 07:24:37 +0000
committerjanus <janus@138bc75d-0d04-0410-961f-82ee72b054a4>2009-04-07 07:24:37 +0000
commit4f197fcede23d0e80a5de22ed7ad9a61b7301408 (patch)
treeb6a3794c0ef4b9169b679011d0325bd1a347a4f6 /gcc/fortran/expr.c
parentfa22494cdf3dce831ff9da0de8cfd392bbe47937 (diff)
downloadgcc-4f197fcede23d0e80a5de22ed7ad9a61b7301408.tar.gz
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@145651 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/fortran/expr.c')
-rw-r--r--gcc/fortran/expr.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/gcc/fortran/expr.c b/gcc/fortran/expr.c
index 233516ec51c..94b8e0ea32a 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;
}