fortran: Inline variable definition

The variable has_finalizer is only used in one place, inline its
definition there.

gcc/fortran/ChangeLog:

	* trans.cc (gfc_add_finalizer_call): Inline definition of
	variable has_finalizer.  Merge nested conditions.
This commit is contained in:
Mikael Morin 2023-07-17 14:13:58 +02:00
parent ba5e2df515
commit 268fda4b42

View file

@ -1320,7 +1320,6 @@ gfc_add_finalizer_call (stmtblock_t *block, gfc_expr *expr2)
tree tmp;
gfc_ref *ref;
gfc_expr *expr;
bool has_finalizer = false;
if (!expr2 || (expr2->ts.type != BT_DERIVED && expr2->ts.type != BT_CLASS))
return false;
@ -1360,13 +1359,11 @@ gfc_add_finalizer_call (stmtblock_t *block, gfc_expr *expr2)
ref->next = NULL;
}
if (expr->ts.type == BT_CLASS)
{
has_finalizer = gfc_is_finalizable (expr->ts.u.derived, NULL);
if (!expr2->rank && !expr2->ref && CLASS_DATA (expr2->symtree->n.sym)->as)
expr->rank = CLASS_DATA (expr2->symtree->n.sym)->as->rank;
}
if (expr->ts.type == BT_CLASS
&& !expr2->rank
&& !expr2->ref
&& CLASS_DATA (expr2->symtree->n.sym)->as)
expr->rank = CLASS_DATA (expr2->symtree->n.sym)->as->rank;
stmtblock_t tmp_block;
gfc_start_block (&tmp_block);
@ -1397,7 +1394,8 @@ gfc_add_finalizer_call (stmtblock_t *block, gfc_expr *expr2)
tmp = gfc_finish_block (&tmp_block);
if (expr->ts.type == BT_CLASS && !has_finalizer)
if (expr->ts.type == BT_CLASS
&& !gfc_is_finalizable (expr->ts.u.derived, NULL))
{
tree cond;
gfc_se se;