diff options
author | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2017-08-08 13:21:12 +0000 |
---|---|---|
committer | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2017-08-08 13:21:12 +0000 |
commit | 88716f26ba695d436cebfad0a9ea6703840f51cd (patch) | |
tree | 8f38e8d32ff3f5c756881b44030b1744ef5d017d | |
parent | 31ad71c82af59f916e724a80a817fc6ff850872b (diff) | |
download | gcc-88716f26ba695d436cebfad0a9ea6703840f51cd.tar.gz |
2017-08-08 Richard Biener <rguenther@suse.de>
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@250958 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/function.c | 21 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/pr81766.c | 5 |
4 files changed, 27 insertions, 11 deletions
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 <rguenther@suse.de> + + 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 <jakub@redhat.com> 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 <rguenther@suse.de> + + PR middle-end/81766 + * gcc.target/i386/pr81766.c: New testcase. + 2017-08-02 Uros Bizjak <ubizjak@gmail.com> * 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; } |