Hi Richard, > It was rewrite_to_non_trapping_overflow available in tree.h. Thus > final value replacement > could use that before gimplifying instead of using rewrite_to_defined_overflow Thanks.
Is the attached patch OK? I am testing this on x86_64-linux-gnu and if there is no new regressions. Thanks, Kugan gcc/ChangeLog: 2018-07-06 Kugan Vivekanandarajah <kug...@linaro.org> * tree-scalar-evolution.c (final_value_replacement_loop): Use rewrite_to_non_trapping_overflow instead of rewrite_to_defined_overflow.
From 68a4f232f6cde68751f6785059121fe116363886 Mon Sep 17 00:00:00 2001 From: Kugan Vivekanandarajah <kugan.vivekanandara...@linaro.org> Date: Fri, 6 Jul 2018 13:34:41 +1000 Subject: [PATCH] rewrite with rewrite_to_non_trapping_overflow Change-Id: Ica4407eab1c2b6f4190d8c0df6308154ffad2c1f --- gcc/tree-scalar-evolution.c | 20 +++----------------- 1 file changed, 3 insertions(+), 17 deletions(-) diff --git a/gcc/tree-scalar-evolution.c b/gcc/tree-scalar-evolution.c index 4b0ec02..3b4f0aa 100644 --- a/gcc/tree-scalar-evolution.c +++ b/gcc/tree-scalar-evolution.c @@ -267,6 +267,7 @@ along with GCC; see the file COPYING3. If not see #include "gimple-iterator.h" #include "gimplify-me.h" #include "tree-cfg.h" +#include "tree-eh.h" #include "tree-ssa-loop-ivopts.h" #include "tree-ssa-loop-manip.h" #include "tree-ssa-loop-niter.h" @@ -3616,24 +3617,9 @@ final_value_replacement_loop (struct loop *loop) && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (def))) { gimple_seq stmts; - gimple_stmt_iterator gsi2; + def = rewrite_to_non_trapping_overflow (def); def = force_gimple_operand (def, &stmts, true, NULL_TREE); - gsi2 = gsi_start (stmts); - while (!gsi_end_p (gsi2)) - { - gimple *stmt = gsi_stmt (gsi2); - gimple_stmt_iterator gsi3 = gsi2; - gsi_next (&gsi2); - gsi_remove (&gsi3, false); - if (is_gimple_assign (stmt) - && arith_code_with_undefined_signed_overflow - (gimple_assign_rhs_code (stmt))) - gsi_insert_seq_before (&gsi, - rewrite_to_defined_overflow (stmt), - GSI_SAME_STMT); - else - gsi_insert_before (&gsi, stmt, GSI_SAME_STMT); - } + gsi_insert_seq_before (&gsi, stmts, GSI_SAME_STMT); } else def = force_gimple_operand_gsi (&gsi, def, false, NULL_TREE, -- 2.7.4