https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69604
--- Comment #7 from Harald Anlauf <anlauf at gmx dot de> --- (In reply to Harald Anlauf from comment #6) All crashes for case 4 go away after the following change: Index: gcc/fortran/trans-expr.c =================================================================== --- gcc/fortran/trans-expr.c (revision 234170) +++ gcc/fortran/trans-expr.c (working copy) @@ -8275,7 +8275,7 @@ gfc_add_expr_to_block (&block, tmp); } } - else if (ts.type == BT_DERIVED || ts.type == BT_CLASS) + else if (ts.type == BT_DERIVED || ts.type == BT_CLASS || ts.type == BT_COMPLEX) { gfc_add_block_to_block (&block, &lse->pre); gfc_add_block_to_block (&block, &rse->pre); Could somebody please check whether this makes sense?