rtl-optimization/99054 - fix leak in fixup_partitions
authorRichard Biener <rguenther@suse.de>
Wed, 10 Feb 2021 09:17:15 +0000 (10:17 +0100)
committerRichard Biener <rguenther@suse.de>
Wed, 10 Feb 2021 10:31:13 +0000 (11:31 +0100)
This fixes a leak of the vector retured by find_partition_fixes
by turning it into an auto_vec.

2021-02-10  Richard Biener  <rguenther@suse.de>

PR rtl-optimization/99054
* cfgrtl.c (rtl-optimization/99054): Return an auto_vec.
(fixup_partitions): Adjust.
(rtl_verify_edges): Likewise.

gcc/cfgrtl.c

index 1d512128eeb098ed83bbb77968d82e80e43ff507..3f55a3265f2e44c882aa927e97d491a8fc1c2eea 100644 (file)
@@ -2381,11 +2381,11 @@ find_bbs_reachable_by_hot_paths (hash_set<basic_block> *set)
    cfg optimizations that may make hot blocks previously reached
    by both hot and cold blocks now only reachable along cold paths.  */
 
-static vec<basic_block>
+static auto_vec<basic_block>
 find_partition_fixes (bool flag_only)
 {
   basic_block bb;
-  vec<basic_block> bbs_to_fix = vNULL;
+  auto_vec<basic_block> bbs_to_fix;
   hash_set<basic_block> set;
 
   /* Callers check this.  */
@@ -2431,7 +2431,7 @@ fixup_partitions (void)
      a cold partition cannot dominate a basic block in a hot partition.
      Fixup any that now violate this requirement, as a result of edge
      forwarding and unreachable block deletion.  */
-  vec<basic_block> bbs_to_fix = find_partition_fixes (false);
+  auto_vec<basic_block> bbs_to_fix = find_partition_fixes (false);
 
   /* Do the partition fixup after all necessary blocks have been converted to
      cold, so that we only update the region crossings the minimum number of
@@ -2682,7 +2682,7 @@ rtl_verify_edges (void)
   if (crtl->has_bb_partition && !err
       && current_ir_type () == IR_RTL_CFGLAYOUT)
     {
-      vec<basic_block> bbs_to_fix = find_partition_fixes (true);
+      auto_vec<basic_block> bbs_to_fix = find_partition_fixes (true);
       err = !bbs_to_fix.is_empty ();
     }