diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2018-09-15 09:21:09 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2018-09-15 09:21:09 +0000 |
commit | ae486e6281fb11a3ae37ccaecc840bb4c8c2551f (patch) | |
tree | 2c072044756f9c2f08347fd875bcf805f39969f5 /gcc | |
parent | 19d6277cdf311f3e8dde6cbcdc72503c41cd9b4f (diff) | |
download | gcc-ae486e6281fb11a3ae37ccaecc840bb4c8c2551f.zip gcc-ae486e6281fb11a3ae37ccaecc840bb4c8c2551f.tar.gz gcc-ae486e6281fb11a3ae37ccaecc840bb4c8c2551f.tar.bz2 |
re PR middle-end/86864 (ICE in commit_one_edge_insertion on switch construct)
PR middle-end/86864
* cfgexpand.c (expand_gimple_basic_block): Be prepared for a BARRIER
before and after a JUMP_TABLE_DATA.
From-SVN: r264342
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cfgexpand.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/20180915-1.c | 27 |
4 files changed, 39 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8fda90a..9f6b4b5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2018-09-15 Eric Botcazou <ebotcazou@adacore.com> + + PR middle-end/86864 + * cfgexpand.c (expand_gimple_basic_block): Be prepared for a BARRIER + before and after a JUMP_TABLE_DATA. + 2018-09-14 John David Anglin <danglin@gcc.gnu.org> PR middle-end/87188 diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c index 697b238..c8d7805 100644 --- a/gcc/cfgexpand.c +++ b/gcc/cfgexpand.c @@ -5817,6 +5817,8 @@ expand_gimple_basic_block (basic_block bb, bool disable_tail_calls) last = PREV_INSN (last); if (JUMP_TABLE_DATA_P (last)) last = PREV_INSN (PREV_INSN (last)); + if (BARRIER_P (last)) + last = PREV_INSN (last); BB_END (bb) = last; update_bb_for_insn (bb); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 25c253f..847f57b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2018-09-15 Eric Botcazou <ebotcazou@adacore.com> + + * gcc.c-torture/compile/20180915-1.c: New test. + 2018-09-14 David Malcolm <dmalcolm@redhat.com> PR c/82967 diff --git a/gcc/testsuite/gcc.c-torture/compile/20180915-1.c b/gcc/testsuite/gcc.c-torture/compile/20180915-1.c new file mode 100644 index 0000000..be5c4f0 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/20180915-1.c @@ -0,0 +1,27 @@ +/* PR middle-end/86864 */ +/* Testcase by Serge Belyshev <belyshev@depni.sinp.msu.ru> */ + +long a; +void f (); +void g (int b, int c, int d) +{ + switch (b) + { + case 42: + case 29: + case 48: + case 40: + case 32: + c = 2; + break; + case 0: + c = 1; + break; + default: + __builtin_unreachable (); + } + if (d || a) + f (); + if (c == 1) + f (); +} |