diff options
author | Jakub Jelinek <jakub@redhat.com> | 2010-05-17 19:19:46 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2010-05-17 19:19:46 +0200 |
commit | f145213fcc63518e181ae5b74a38f75555f6a741 (patch) | |
tree | f89cca49d50e0a51d31da3cd6577dce11dce4f37 | |
parent | f1de5107b0c0240cff8df7d678ad78847bdff6b0 (diff) | |
download | gcc-f145213fcc63518e181ae5b74a38f75555f6a741.zip gcc-f145213fcc63518e181ae5b74a38f75555f6a741.tar.gz gcc-f145213fcc63518e181ae5b74a38f75555f6a741.tar.bz2 |
re PR bootstrap/42347 (sched-deps.c:3840:1: internal compiler error: in fixup_reorder_chain, at cfglayout.c:796)
PR bootstrap/42347
* cfglayout.c (fixup_reorder_chain): Allow returnjump_p
to have no fallthru edge.
* gcc.c-torture/compile/pr42347.c: New test.
From-SVN: r159496
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/cfglayout.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/pr42347.c | 16 |
4 files changed, 25 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index eeb5110..87f27e7 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 7ba289f..5e12057 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 dfe8de7..fcc6968 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 0000000..e98b869 --- /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; +} |