aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-loop-ivopts.cc
diff options
context:
space:
mode:
authorThomas Schwinge <tschwinge@baylibre.com>2024-03-11 22:51:28 +0100
committerThomas Schwinge <tschwinge@baylibre.com>2024-03-11 22:51:28 +0100
commita95e21151a6366e7344d0f1983f99e318c5a7097 (patch)
tree11d987406d9ce8399ec1736477d971ef09344df2 /gcc/tree-ssa-loop-ivopts.cc
parent02d394b2736afa9a24ab3e1b8ad56fd6ac37e0f4 (diff)
parentaf4bb221153359f5948da917d5ef2df738bb1e61 (diff)
downloadgcc-a95e21151a6366e7344d0f1983f99e318c5a7097.zip
gcc-a95e21151a6366e7344d0f1983f99e318c5a7097.tar.gz
gcc-a95e21151a6366e7344d0f1983f99e318c5a7097.tar.bz2
Merge commit 'af4bb221153359f5948da917d5ef2df738bb1e61' into HEAD
Diffstat (limited to 'gcc/tree-ssa-loop-ivopts.cc')
-rw-r--r--gcc/tree-ssa-loop-ivopts.cc12
1 files changed, 9 insertions, 3 deletions
diff --git a/gcc/tree-ssa-loop-ivopts.cc b/gcc/tree-ssa-loop-ivopts.cc
index 3d3f28f..2c1f084 100644
--- a/gcc/tree-ssa-loop-ivopts.cc
+++ b/gcc/tree-ssa-loop-ivopts.cc
@@ -412,7 +412,7 @@ struct iv_use
tree *op_p; /* The place where it occurs. */
tree addr_base; /* Base address with const offset stripped. */
- poly_uint64_pod addr_offset;
+ poly_uint64 addr_offset;
/* Const offset stripped from base address. */
};
@@ -1036,10 +1036,12 @@ niter_for_exit (struct ivopts_data *data, edge exit)
names that appear in phi nodes on abnormal edges, so that we do not
create overlapping life ranges for them (PR 27283). */
desc = XNEW (class tree_niter_desc);
+ ::new (static_cast<void*> (desc)) tree_niter_desc ();
if (!number_of_iterations_exit (data->current_loop,
exit, desc, true)
|| contains_abnormal_ssa_name_p (desc->niter))
{
+ desc->~tree_niter_desc ();
XDELETE (desc);
desc = NULL;
}
@@ -2956,7 +2958,7 @@ strip_offset_1 (tree expr, bool inside_addr, bool top_compref,
/* Strips constant offsets from EXPR and stores them to OFFSET. */
static tree
-strip_offset (tree expr, poly_uint64_pod *offset)
+strip_offset (tree expr, poly_uint64 *offset)
{
poly_int64 off;
tree core = strip_offset_1 (expr, false, false, &off);
@@ -7894,7 +7896,11 @@ remove_unused_ivs (struct ivopts_data *data, bitmap toremove)
bool
free_tree_niter_desc (edge const &, tree_niter_desc *const &value, void *)
{
- free (value);
+ if (value)
+ {
+ value->~tree_niter_desc ();
+ free (value);
+ }
return true;
}