diff options
author | Marek Polacek <polacek@redhat.com> | 2015-10-01 14:25:42 +0000 |
---|---|---|
committer | Marek Polacek <mpolacek@gcc.gnu.org> | 2015-10-01 14:25:42 +0000 |
commit | 9edaabf3d2cee4597f83227656ac50ed03bc669a (patch) | |
tree | aeb94e35ac8ce6eebd1e518e38c367d5b700aeb3 /gcc/tree-ssa-phiopt.c | |
parent | 481261380243a1a01b85247285d0cc03a8090540 (diff) | |
download | gcc-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.c | 4 |
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; |