summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2010-05-17 17:19:46 +0000
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2010-05-17 17:19:46 +0000
commitfebcf1b8e1ae674ed82a1586b4a9b41a962b76d3 (patch)
treef89cca49d50e0a51d31da3cd6577dce11dce4f37 /gcc
parent625a1adcc39420baf5a82973b10d59bb8da125aa (diff)
downloadgcc-febcf1b8e1ae674ed82a1586b4a9b41a962b76d3.tar.gz
PR bootstrap/42347
* cfglayout.c (fixup_reorder_chain): Allow returnjump_p to have no fallthru edge. * gcc.c-torture/compile/pr42347.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@159496 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/cfglayout.c3
-rw-r--r--gcc/testsuite/ChangeLog3
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr42347.c16
4 files changed, 25 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index eeb5110118a..87f27e7246b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,9 @@
2010-05-17 Jakub Jelinek <jakub@redhat.com>
+ PR bootstrap/42347
+ * cfglayout.c (fixup_reorder_chain): Allow returnjump_p
+ to have no fallthru edge.
+
PR middle-end/44102
* cfgcleanup.c (try_optimize_cfg): When removing trivially empty
bb with no successors, move footer whenever in IR_RTL_CFGLAYOUT
diff --git a/gcc/cfglayout.c b/gcc/cfglayout.c
index 7ba289f1a58..5e120570b9a 100644
--- a/gcc/cfglayout.c
+++ b/gcc/cfglayout.c
@@ -793,7 +793,8 @@ fixup_reorder_chain (void)
to prevent rtl_verify_flow_info from complaining. */
if (!e_fall)
{
- gcc_assert (!onlyjump_p (bb_end_insn));
+ gcc_assert (!onlyjump_p (bb_end_insn)
+ || returnjump_p (bb_end_insn));
bb->il.rtl->footer = emit_barrier_after (bb_end_insn);
continue;
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index dfe8de74e4d..fcc6968b19d 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,8 @@
2010-05-17 Jakub Jelinek <jakub@redhat.com>
+ PR bootstrap/42347
+ * gcc.c-torture/compile/pr42347.c: New test.
+
PR middle-end/44102
* g++.dg/ext/asmgoto1.C: New test.
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr42347.c b/gcc/testsuite/gcc.c-torture/compile/pr42347.c
new file mode 100644
index 00000000000..e98b8698480
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr42347.c
@@ -0,0 +1,16 @@
+/* PR bootstrap/42347 */
+
+long
+foo (long x, long y)
+{
+ x = x & y;
+ switch (y)
+ {
+ case 63L: x >>= 0; break;
+ case 4032L: x >>= 6; break;
+ case 258048L: x >>= 12; break;
+ case 16515072L: x >>= 18; break;
+ default: __builtin_unreachable ();
+ }
+ return x;
+}