From f145213fcc63518e181ae5b74a38f75555f6a741 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Mon, 17 May 2010 19:19:46 +0200 Subject: [PATCH] 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 --- gcc/ChangeLog | 4 ++++ gcc/cfglayout.c | 3 ++- gcc/testsuite/ChangeLog | 3 +++ gcc/testsuite/gcc.c-torture/compile/pr42347.c | 16 ++++++++++++++++ 4 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.c-torture/compile/pr42347.c 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 + 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 + 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; +} -- 2.30.2