From: Richard Biener Date: Thu, 23 Feb 2023 10:05:47 +0000 (+0100) Subject: Fix memory leak in if-conversion X-Git-Tag: basepoints/gcc-14~910 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=af46073dbe83d88e2d93d967da447346b22c70bb;p=thirdparty%2Fgcc.git Fix memory leak in if-conversion The following fixes if-conversion failing to release data-references and the data-reference vector. * tree-if-conv.cc (tree_if_conversion): Properly manage memory of refs and the contained data references. --- diff --git a/gcc/tree-if-conv.cc b/gcc/tree-if-conv.cc index 0e384e363944..f133102ad335 100644 --- a/gcc/tree-if-conv.cc +++ b/gcc/tree-if-conv.cc @@ -3534,7 +3534,7 @@ tree_if_conversion (class loop *loop, vec *preds) auto_vec writes_to_lower; bitmap exit_bbs; edge pe; - vec refs; + auto_vec refs; again: rloop = NULL; @@ -3544,7 +3544,6 @@ tree_if_conversion (class loop *loop, vec *preds) need_to_predicate = false; need_to_rewrite_undefined = false; any_complicated_phi = false; - refs.create (5); /* Apply more aggressive if-conversion when loop or its outer loop were marked with simd pragma. When that's the case, we try to if-convert @@ -3701,8 +3700,10 @@ tree_if_conversion (class loop *loop, vec *preds) data_reference_p dr; unsigned int i; for (i = 0; refs.iterate (i, &dr); i++) - free (dr->aux); - + { + free (dr->aux); + free_data_ref (dr); + } refs.truncate (0); if (ifc_bbs)