aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cgraphunit.c1
-rw-r--r--gcc/ipa-modref.c1
-rw-r--r--gcc/tree-ssa-loop-niter.c1
-rw-r--r--gcc/tree-vect-data-refs.c37
-rw-r--r--gcc/tree-vect-loop.c1
-rw-r--r--gcc/tree-vect-slp.c2
6 files changed, 30 insertions, 13 deletions
diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c
index bedb6e2..19ae876 100644
--- a/gcc/cgraphunit.c
+++ b/gcc/cgraphunit.c
@@ -2494,6 +2494,7 @@ expand_all_functions (void)
delete ipa_saved_clone_sources;
ipa_saved_clone_sources = NULL;
free (order);
+ free (tp_first_run_order);
}
/* This is used to sort the node types by the cgraph order number. */
diff --git a/gcc/ipa-modref.c b/gcc/ipa-modref.c
index 5868aa9..c22c0d2 100644
--- a/gcc/ipa-modref.c
+++ b/gcc/ipa-modref.c
@@ -1748,6 +1748,7 @@ pass_ipa_modref::execute (function *)
}
((modref_summaries *)summaries)->ipa = false;
ipa_free_postorder_info ();
+ free (order);
return 0;
}
diff --git a/gcc/tree-ssa-loop-niter.c b/gcc/tree-ssa-loop-niter.c
index 45747e1..697d30f 100644
--- a/gcc/tree-ssa-loop-niter.c
+++ b/gcc/tree-ssa-loop-niter.c
@@ -4305,6 +4305,7 @@ estimate_numbers_of_iterations (class loop *loop)
if (flag_aggressive_loop_optimizations)
infer_loop_bounds_from_undefined (loop, body);
+ free (body);
discover_iteration_bound_by_body_walk (loop);
diff --git a/gcc/tree-vect-data-refs.c b/gcc/tree-vect-data-refs.c
index 5bf93e2..676182c 100644
--- a/gcc/tree-vect-data-refs.c
+++ b/gcc/tree-vect-data-refs.c
@@ -4045,29 +4045,42 @@ vect_find_stmt_data_reference (loop_p loop, gimple *stmt,
return opt_result::success ();
if (refs.length () > 1)
- return opt_result::failure_at (stmt,
- "not vectorized:"
- " more than one data ref in stmt: %G", stmt);
+ {
+ while (!refs.is_empty ())
+ free_data_ref (refs.pop ());
+ return opt_result::failure_at (stmt,
+ "not vectorized: more than one "
+ "data ref in stmt: %G", stmt);
+ }
+ data_reference_p dr = refs.pop ();
if (gcall *call = dyn_cast <gcall *> (stmt))
if (!gimple_call_internal_p (call)
|| (gimple_call_internal_fn (call) != IFN_MASK_LOAD
&& gimple_call_internal_fn (call) != IFN_MASK_STORE))
- return opt_result::failure_at (stmt,
- "not vectorized: dr in a call %G", stmt);
+ {
+ free_data_ref (dr);
+ return opt_result::failure_at (stmt,
+ "not vectorized: dr in a call %G", stmt);
+ }
- data_reference_p dr = refs.pop ();
if (TREE_CODE (DR_REF (dr)) == COMPONENT_REF
&& DECL_BIT_FIELD (TREE_OPERAND (DR_REF (dr), 1)))
- return opt_result::failure_at (stmt,
- "not vectorized:"
- " statement is bitfield access %G", stmt);
+ {
+ free_data_ref (dr);
+ return opt_result::failure_at (stmt,
+ "not vectorized:"
+ " statement is bitfield access %G", stmt);
+ }
if (DR_BASE_ADDRESS (dr)
&& TREE_CODE (DR_BASE_ADDRESS (dr)) == INTEGER_CST)
- return opt_result::failure_at (stmt,
- "not vectorized:"
- " base addr of dr is a constant\n");
+ {
+ free_data_ref (dr);
+ return opt_result::failure_at (stmt,
+ "not vectorized:"
+ " base addr of dr is a constant\n");
+ }
/* Check whether this may be a SIMD lane access and adjust the
DR to make it easier for us to handle it. */
diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c
index ce5d95d..0a315e2 100644
--- a/gcc/tree-vect-loop.c
+++ b/gcc/tree-vect-loop.c
@@ -8817,6 +8817,7 @@ update_epilogue_loop_vinfo (class loop *epilogue, tree advance)
basic_block *epilogue_bbs = get_loop_body (epilogue);
unsigned i;
+ free (LOOP_VINFO_BBS (epilogue_vinfo));
LOOP_VINFO_BBS (epilogue_vinfo) = epilogue_bbs;
/* Advance data_reference's with the number of iterations of the previous
diff --git a/gcc/tree-vect-slp.c b/gcc/tree-vect-slp.c
index dbe76ac..77ea4d0 100644
--- a/gcc/tree-vect-slp.c
+++ b/gcc/tree-vect-slp.c
@@ -3783,7 +3783,7 @@ static bool
vect_slp_bbs (vec<basic_block> bbs)
{
vec<data_reference_p> datarefs = vNULL;
- vec<int> dataref_groups = vNULL;
+ auto_vec<int> dataref_groups;
int insns = 0;
int current_group = 0;