From 783f5cb4ca9520a7be62c4cfd6860534bb00e068 Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Tue, 8 Aug 2017 13:21:12 +0000 Subject: [PATCH] re PR target/81766 (ICE in maybe_add_or_update_dep_1, at sched-deps.c:924 caused by r250815) 2017-08-08 Richard Biener PR middle-end/81766 * function.c (thread_prologue_and_epilogue_insns): Restore behavior of always calling find_many_sub_basic_blocks on the inserted prologue. * gcc.target/i386/pr81766.c: New testcase. From-SVN: r250958 --- gcc/ChangeLog | 7 +++++++ gcc/function.c | 21 ++++++++++----------- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.target/i386/pr81766.c | 5 +++++ 4 files changed, 27 insertions(+), 11 deletions(-) create mode 100644 gcc/testsuite/gcc.target/i386/pr81766.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 83797525fb4..5de30728f8b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2017-08-08 Richard Biener + + PR middle-end/81766 + * function.c (thread_prologue_and_epilogue_insns): Restore + behavior of always calling find_many_sub_basic_blocks on + the inserted prologue. + 2017-08-02 Jakub Jelinek PR middle-end/79499 diff --git a/gcc/function.c b/gcc/function.c index b3de845af8a..21eb586a8f7 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -6082,17 +6082,16 @@ thread_prologue_and_epilogue_insns (void) if (prologue_insn && BLOCK_FOR_INSN (prologue_insn) == NULL) prologue_insn = NULL; - if (split_prologue_insn || prologue_insn) - { - auto_sbitmap blocks (last_basic_block_for_fn (cfun)); - bitmap_clear (blocks); - if (split_prologue_insn) - bitmap_set_bit (blocks, - BLOCK_FOR_INSN (split_prologue_insn)->index); - if (prologue_insn) - bitmap_set_bit (blocks, BLOCK_FOR_INSN (prologue_insn)->index); - find_many_sub_basic_blocks (blocks); - } + auto_sbitmap blocks (last_basic_block_for_fn (cfun)); + bitmap_clear (blocks); + if (split_prologue_insn) + bitmap_set_bit (blocks, + BLOCK_FOR_INSN (split_prologue_insn)->index); + if (prologue_insn) + bitmap_set_bit (blocks, BLOCK_FOR_INSN (prologue_insn)->index); + bitmap_set_bit (blocks, entry_edge->dest->index); + bitmap_set_bit (blocks, orig_entry_edge->dest->index); + find_many_sub_basic_blocks (blocks); } default_rtl_profile (); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e7dad4d1372..e42d1c21048 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2017-08-08 Richard Biener + + PR middle-end/81766 + * gcc.target/i386/pr81766.c: New testcase. + 2017-08-02 Uros Bizjak * gcc.target/i386/funcspec-56.inc (no_3dnowa): Properly diff --git a/gcc/testsuite/gcc.target/i386/pr81766.c b/gcc/testsuite/gcc.target/i386/pr81766.c new file mode 100644 index 00000000000..4bcae7f610d --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr81766.c @@ -0,0 +1,5 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target lp64 } */ +/* { dg-options "-O2 -fPIE -mcmodel=large" } */ + +int main() { return 0; }