diff options
author | Richard Biener <rguenther@suse.de> | 2021-02-02 19:21:02 +0100 |
---|---|---|
committer | Richard Biener <rguenther@suse.de> | 2021-02-02 20:07:30 +0100 |
commit | 5d5130ad5c396bd2dcde766c0c994855b815355b (patch) | |
tree | 80e81b1783760c0d87e5b57cd9b2489d99b12728 /gcc/gimple-loop-interchange.cc | |
parent | db53dd4f784d5d36c2119dd66a22ad40b5020b1c (diff) | |
download | gcc-5d5130ad5c396bd2dcde766c0c994855b815355b.zip gcc-5d5130ad5c396bd2dcde766c0c994855b815355b.tar.gz gcc-5d5130ad5c396bd2dcde766c0c994855b815355b.tar.bz2 |
fix memory leaks
This fixes various vec<> memory leaks as discovered compiling 521.wrf_r.
2021-02-02 Richard Biener <rguenther@suse.de>
* gimple-loop-interchange.cc (prepare_data_references):
Release vectors.
* gimple-loop-jam.c (tree_loop_unroll_and_jam): Likewise.
* tree-ssa-loop-im.c (hoist_memory_references): Likewise.
* tree-vect-stmts.c (vectorizable_condition): Do not
allocate vectors.
(vectorizable_comparison): Likewise.
Diffstat (limited to 'gcc/gimple-loop-interchange.cc')
-rw-r--r-- | gcc/gimple-loop-interchange.cc | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/gcc/gimple-loop-interchange.cc b/gcc/gimple-loop-interchange.cc index a1dadd8..f45b936 100644 --- a/gcc/gimple-loop-interchange.cc +++ b/gcc/gimple-loop-interchange.cc @@ -1940,7 +1940,10 @@ prepare_data_references (class loop *loop, vec<data_reference_p> *datarefs) delete bb_refs; } else if (bb_refs->is_empty ()) - delete bb_refs; + { + bb_refs->release (); + delete bb_refs; + } else bb->aux = bb_refs; } @@ -1954,7 +1957,10 @@ prepare_data_references (class loop *loop, vec<data_reference_p> *datarefs) bb_refs = (vec<data_reference_p> *) bb->aux; if (loop_nest && flow_bb_inside_loop_p (loop_nest, bb)) - datarefs->safe_splice (*bb_refs); + { + datarefs->safe_splice (*bb_refs); + bb_refs->release (); + } else free_data_refs (*bb_refs); |