Dear all,

I pushed the attached obvious patch to plug minor frontend memleaks
with GMP variables introduced at r16-8564 and found with valgrind
as r17-3302-g038a334a1f5d28.

Thanks,
Harald

From 038a334a1f5d28163393c15c842b4db729028a31 Mon Sep 17 00:00:00 2001
From: Harald Anlauf <[email protected]>
Date: Fri, 14 Aug 2026 21:32:05 +0200
Subject: [PATCH] fortran: Fix minor memleak with GMP variables

Commit r16-8564 introduced code that does not clear used GMP variables.
Fix this.

gcc/fortran/ChangeLog:

	* frontend-passes.cc (inner_loop_may_be_skipped): Clear GMP variables.
---
 gcc/fortran/frontend-passes.cc | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/gcc/fortran/frontend-passes.cc b/gcc/fortran/frontend-passes.cc
index f32d055c061..85cf7ff1394 100644
--- a/gcc/fortran/frontend-passes.cc
+++ b/gcc/fortran/frontend-passes.cc
@@ -2791,13 +2791,21 @@ inner_loop_may_be_skipped (int loop_index, gfc_symbol *outer_sym, mpz_t outer_va
 	  return true;
 	}
 
-      if (!evaluate_loop_bound (loop->ext.iterator->start, outer_sym, outer_val, do_start)
-	  || !evaluate_loop_bound (loop->ext.iterator->end, outer_sym, outer_val, do_end))
+      if (!evaluate_loop_bound (loop->ext.iterator->start, outer_sym, outer_val,
+				do_start))
 	{
 	  mpz_clear (do_step);
 	  return true;
 	}
 
+      if (!evaluate_loop_bound (loop->ext.iterator->end, outer_sym, outer_val,
+				do_end))
+	{
+	  mpz_clear (do_start);
+	  mpz_clear (do_step);
+	  return true;
+	}
+
       cmp = mpz_cmp (do_end, do_start);
       mpz_clear (do_start);
       mpz_clear (do_end);
-- 
2.51.0

Reply via email to