This fixes the overlfow that might be introduced from
creater_add_on_incoming_edge. I have not found a testcase where this
shows up, there possibility could be.
gcc/ChangeLog:
* gimple-ssa-strength-reduction.cc (create_add_on_incoming_edge):
Rewrite
the new addition on the edge too.
Signed-off-by: Andrew Pinski <[email protected]>
---
gcc/gimple-ssa-strength-reduction.cc | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/gcc/gimple-ssa-strength-reduction.cc
b/gcc/gimple-ssa-strength-reduction.cc
index abfc8e00d81..990943c767c 100644
--- a/gcc/gimple-ssa-strength-reduction.cc
+++ b/gcc/gimple-ssa-strength-reduction.cc
@@ -2364,7 +2364,14 @@ create_add_on_incoming_edge (slsr_cand_t c, tree
basis_name,
}
gimple_set_location (new_stmt, loc);
- gsi_insert_on_edge (e, new_stmt);
+ if (gimple_needing_rewrite_undefined (new_stmt))
+ {
+ gimple_seq stmts;
+ stmts = rewrite_to_defined_unconditional (new_stmt);
+ gsi_insert_seq_on_edge (e, stmts);
+ }
+ else
+ gsi_insert_on_edge (e, new_stmt);
if (dump_file && (dump_flags & TDF_DETAILS))
{
--
2.43.0