aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-phiopt.c
diff options
context:
space:
mode:
authorMarek Polacek <polacek@redhat.com>2015-10-01 14:25:42 +0000
committerMarek Polacek <mpolacek@gcc.gnu.org>2015-10-01 14:25:42 +0000
commit9edaabf3d2cee4597f83227656ac50ed03bc669a (patch)
treeaeb94e35ac8ce6eebd1e518e38c367d5b700aeb3 /gcc/tree-ssa-phiopt.c
parent481261380243a1a01b85247285d0cc03a8090540 (diff)
downloadgcc-9edaabf3d2cee4597f83227656ac50ed03bc669a.zip
gcc-9edaabf3d2cee4597f83227656ac50ed03bc669a.tar.gz
gcc-9edaabf3d2cee4597f83227656ac50ed03bc669a.tar.bz2
re PR tree-optimization/67769 (VRP pass does wrong optimization)
PR tree-optimization/67769 * tree-ssa-phiopt.c (conditional_replacement): Call reset_flow_sensitive_info_in_bb. (minmax_replacement): Likewise. (abs_replacement): Likewise. * gcc.dg/torture/pr67769.c: New test. From-SVN: r228341
Diffstat (limited to 'gcc/tree-ssa-phiopt.c')
-rw-r--r--gcc/tree-ssa-phiopt.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/tree-ssa-phiopt.c b/gcc/tree-ssa-phiopt.c
index 37fdf28..697836a 100644
--- a/gcc/tree-ssa-phiopt.c
+++ b/gcc/tree-ssa-phiopt.c
@@ -646,6 +646,7 @@ conditional_replacement (basic_block cond_bb, basic_block middle_bb,
}
replace_phi_edge_with_variable (cond_bb, e1, phi, new_var);
+ reset_flow_sensitive_info_in_bb (cond_bb);
/* Note that we optimized this PHI. */
return true;
@@ -1284,6 +1285,8 @@ minmax_replacement (basic_block cond_bb, basic_block middle_bb,
gsi_insert_before (&gsi, new_stmt, GSI_NEW_STMT);
replace_phi_edge_with_variable (cond_bb, e1, phi, result);
+ reset_flow_sensitive_info_in_bb (cond_bb);
+
return true;
}
@@ -1402,6 +1405,7 @@ abs_replacement (basic_block cond_bb, basic_block middle_bb,
}
replace_phi_edge_with_variable (cond_bb, e1, phi, result);
+ reset_flow_sensitive_info_in_bb (cond_bb);
/* Note that we optimized this PHI. */
return true;