summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2017-08-08 13:21:12 +0000
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2017-08-08 13:21:12 +0000
commit88716f26ba695d436cebfad0a9ea6703840f51cd (patch)
tree8f38e8d32ff3f5c756881b44030b1744ef5d017d
parent31ad71c82af59f916e724a80a817fc6ff850872b (diff)
downloadgcc-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/ChangeLog7
-rw-r--r--gcc/function.c21
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.target/i386/pr81766.c5
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; }