------- 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