aboutsummaryrefslogtreecommitdiff
path: root/gcc/cfgrtl.c
diff options
context:
space:
mode:
authorIlya Enkovich <ilya.enkovich@intel.com>2016-05-11 09:33:13 +0000
committerIlya Enkovich <ienkovich@gcc.gnu.org>2016-05-11 09:33:13 +0000
commit98ccd1d7ab1d9a0c99cce0d1c05ddcda3659dd26 (patch)
tree657c8e39976aa859a7d94e2cef8b61ccbd529176 /gcc/cfgrtl.c
parented29e24b8bae184e7f3f3e92afb57aa8767659be (diff)
downloadgcc-98ccd1d7ab1d9a0c99cce0d1c05ddcda3659dd26.zip
gcc-98ccd1d7ab1d9a0c99cce0d1c05ddcda3659dd26.tar.gz
gcc-98ccd1d7ab1d9a0c99cce0d1c05ddcda3659dd26.tar.bz2
re PR middle-end/70807 (fwprop pass ICE with incoming CDI_DOMINATORS)
gcc/ PR middle-end/70807 * cfgrtl.h (delete_insn_and_edges): Now return bool. * cfgrtl.c (delete_insn_and_edges): Likewise. * config/i386/i386.c (convert_scalars_to_vector): Remove redundant code. * cse.c (cse_insn): Compute cse_cfg_altered. (delete_trivially_dead_insns): Likewise. (cse_cc_succs): Likewise. (rest_of_handle_cse): Free dominance info if required. (rest_of_handle_cse2): Likewise. (rest_of_handle_cse_after_global_opts): Likewise. gcc/testsuite/ PR middle-end/70807 * gcc.dg/pr70807.c: New test. From-SVN: r236114
Diffstat (limited to 'gcc/cfgrtl.c')
-rw-r--r--gcc/cfgrtl.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c
index 62b0596..3d8ed60 100644
--- a/gcc/cfgrtl.c
+++ b/gcc/cfgrtl.c
@@ -215,9 +215,10 @@ delete_insn (rtx uncast_insn)
}
}
-/* Like delete_insn but also purge dead edges from BB. */
+/* Like delete_insn but also purge dead edges from BB.
+ Return true if any edges are eliminated. */
-void
+bool
delete_insn_and_edges (rtx_insn *insn)
{
bool purge = false;
@@ -228,7 +229,8 @@ delete_insn_and_edges (rtx_insn *insn)
purge = true;
delete_insn (insn);
if (purge)
- purge_dead_edges (BLOCK_FOR_INSN (insn));
+ return purge_dead_edges (BLOCK_FOR_INSN (insn));
+ return false;
}
/* Unlink a chain of insns between START and FINISH, leaving notes