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

Reply via email to