Hi, This is v2 of the patch.
Changes since v1: Fix indentation after removal of the conditional statements, as suggested in review. This patch removes redundant caller-side HAS_ROWS checks before calls to a68_low_dup. a68_low_dup originally always performed a deep copy, so callers avoided invoking it for values without rows by checking HAS_ROWS beforehand. a68_low_dup now performs its own HAS_ROWS check and returns the original expression unchanged when a deep copy is not required. Remove the remaining caller-side HAS_ROWS checks, as they are redundant. Thanks, Kanishka Solanki
From f563e7b87f276d2e78adc6fbe07c0a28482ed5a9 Mon Sep 17 00:00:00 2001 From: Kanishka Solanki <[email protected]> Date: Mon, 15 Jun 2026 20:54:06 +0530 Subject: [PATCH] remove redundant HAS_ROWS check from caller side of a68_low_dup a68_low_dup originally always performed a deep copy, so callers avoided invoking it for values without rows by checking HAS_ROWS beforehand. a68_low_dup now performs its own HAS_ROWS check and returns the original expression unchanged when a deep copy is not required. Remove the remaining caller-side HAS_ROWS checks, as they are redundant. gcc/algol68/ChangeLog * a68-low-clauses.cc (a68_lower_collateral_clause): Do not check for rows before calling a68_low_dup. * a68-low-units.cc (collect_call_arguments): Likewise. Signed-off-by: Kanishka Solanki <[email protected]> --- gcc/algol68/a68-low-clauses.cc | 3 +-- gcc/algol68/a68-low-units.cc | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/gcc/algol68/a68-low-clauses.cc b/gcc/algol68/a68-low-clauses.cc index 9fca4b872bc..415a8f72904 100644 --- a/gcc/algol68/a68-low-clauses.cc +++ b/gcc/algol68/a68-low-clauses.cc @@ -1132,8 +1132,7 @@ a68_lower_collateral_clause (NODE_T *p ATTRIBUTE_UNUSED, for (tree_stmt_iterator si = tsi_start (units); !tsi_end_p (si); tsi_next (&si)) { tree unit = tsi_stmt (si); - if (A68_TYPE_HAS_ROWS_P (TREE_TYPE (unit))) - unit = a68_low_dup (unit); + unit = a68_low_dup (unit); CONSTRUCTOR_APPEND_ELT (ve, size_int (num_units), unit); num_units += 1; } diff --git a/gcc/algol68/a68-low-units.cc b/gcc/algol68/a68-low-units.cc index f7bfe6f822f..e3650aea952 100644 --- a/gcc/algol68/a68-low-units.cc +++ b/gcc/algol68/a68-low-units.cc @@ -1133,8 +1133,7 @@ collect_call_arguments (NODE_T *p, vec<tree, va_gc> *args, LOW_CTX_T ctx) /* In Algol 68 parameters are passed via an identity declaration, so this must implement same semantics. */ tree arg = a68_lower_tree (p, ctx); - if (HAS_ROWS (MOID (p))) - arg = a68_low_dup (arg); + arg = a68_low_dup (arg); arg = a68_consolidate_ref (MOID (p), arg); args->quick_push (arg); } -- 2.43.0
