aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimple-ssa-isolate-paths.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/gimple-ssa-isolate-paths.cc')
-rw-r--r--gcc/gimple-ssa-isolate-paths.cc6
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/gimple-ssa-isolate-paths.cc b/gcc/gimple-ssa-isolate-paths.cc
index 87ecd19..e4a4e08 100644
--- a/gcc/gimple-ssa-isolate-paths.cc
+++ b/gcc/gimple-ssa-isolate-paths.cc
@@ -647,7 +647,8 @@ handle_return_addr_local_phi_arg (basic_block bb, basic_block duplicate,
if (!maybe
&& (flag_isolate_erroneous_paths_dereference
|| flag_isolate_erroneous_paths_attribute)
- && gimple_bb (use_stmt) == bb)
+ && gimple_bb (use_stmt) == bb
+ && (duplicate || can_duplicate_block_p (bb)))
{
duplicate = isolate_path (bb, duplicate, e,
use_stmt, lhs, true);
@@ -765,7 +766,8 @@ find_implicit_erroneous_behavior (void)
? gimple_location (use_stmt)
: phi_arg_loc;
- if (stmt_uses_name_in_undefined_way (use_stmt, lhs, loc))
+ if (stmt_uses_name_in_undefined_way (use_stmt, lhs, loc)
+ && (duplicate || can_duplicate_block_p (bb)))
{
duplicate = isolate_path (bb, duplicate, e,
use_stmt, lhs, false);