[Bug fortran/55692] ICE on incorrect use of ASSOCIATED function
janus at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Dec 14 18:57:00 GMT 2012
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55692
janus at gcc dot gnu.org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |janus at gcc dot gnu.org
--- Comment #2 from janus at gcc dot gnu.org 2012-12-14 18:57:09 UTC ---
(In reply to comment #1)
> Confirmed on 4.4.6, 4.5.3, 4.6.3, 4.7.2, and trunk.
I see it also with 4.3.4.
Here is a preliminary patch which fixes it on trunk:
Index: gcc/fortran/check.c
===================================================================
--- gcc/fortran/check.c (revision 194387)
+++ gcc/fortran/check.c (working copy)
@@ -895,13 +895,11 @@ gfc_check_associated (gfc_expr *pointer, gfc_expr
where = &pointer->where;
- if (pointer->expr_type == EXPR_VARIABLE || pointer->expr_type ==
EXPR_FUNCTION)
- attr1 = gfc_expr_attr (pointer);
- else if (pointer->expr_type == EXPR_NULL)
+ if (pointer->expr_type == EXPR_NULL)
goto null_arg;
- else
- gcc_assert (0); /* Pointer must be a variable or a function. */
+ attr1 = gfc_expr_attr (pointer);
+
if (!attr1.pointer && !attr1.proc_pointer)
{
gfc_error ("'%s' argument of '%s' intrinsic at %L must be a POINTER",
With this I get:
L = ASSOCIATED([P1,P2]) ! Error: intrinsic function ASSOCIATED is not ELEMENTAL
1
Error: 'pointer' argument of 'associated' intrinsic at (1) must be a POINTER
... which, I think, is the proper way to reject the test case (and certainly
more polite than an ICE ;)
More information about the Gcc-bugs
mailing list