[Bug fortran/38665] [4.4 Regression] ICE in check_host_association

mikael at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Mon Dec 29 23:38:00 GMT 2008



------- Comment #3 from mikael at gcc dot gnu dot org  2008-12-29 23:13 -------
failing assert line 4338:
 4334           gfc_match_rvalue (&expr);
 4335           gfc_clear_error ();
 4336           gfc_buffer_error (0);
 4337 
 4338           gcc_assert (expr && sym == expr->symtree->n.sym);
 4339 
 4340           *e = *expr;
 4341           gfc_free (expr);
 4342           sym->refs++;

sym->name = "mult"
expr->expr_type = EXPR_VARIABLE
expr->symtree->name = "p1"

if we change the gfc_match_rvalue to a gfc_match_expr, we get a segfault at the
same place because expr->symtree = NULL, and even if we remove the gcc_assert,
we report an error because the function call has been changed into a
multiplication of non-intrinsic types.

Now the solutions:
 (1) Add some conditions to the if before to prevent executing this.
 (2) Remove the gfc_match_whatever that has nothing to do in resolve.c and find
a better way (yes, I prefer (2), how did you guess?). 

Hum, maybe (1) is better for 4.4.0 


-- 

mikael at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P4                          |P3


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38665



More information about the Gcc-bugs mailing list