https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66089
Thomas Koenig <tkoenig at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |pault at gcc dot gnu.org --- Comment #34 from Thomas Koenig <tkoenig at gcc dot gnu.org> --- This Index: trans-expr.c =================================================================== --- trans-expr.c (Revision 269260) +++ trans-expr.c (Arbeitskopie) @@ -10510,6 +10510,9 @@ if (is_poly_assign && expr2->rank == 0 && !UNLIMITED_POLY (expr2)) rss->info->type = GFC_SS_REFERENCE; + gfc_fix_class_refs (rss->info->expr); + gfc_fix_class_refs (lss->info->expr); + rss->no_bounds_check = expr2->no_bounds_check; /* Associate the SS with the loop. */ gfc_add_ss_to_loop (&loop, lss); Index: trans-array.c =================================================================== --- trans-array.c (Revision 269260) +++ trans-array.c (Arbeitskopie) @@ -2699,6 +2699,8 @@ if (ss_info->type != GFC_SS_REFERENCE) return false; + return false; + /* If the actual argument can be absent (in other words, it can be a NULL reference), don't try to evaluate it; pass instead the reference directly. */ "fixes" the test case from comment#32, but, as expected, causes no few regressions. Paul, if you happen to have an idea...