aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDominik Vogt <vogt@linux.vnet.ibm.com>2015-08-27 07:38:36 +0000
committerAndreas Krebbel <krebbel@gcc.gnu.org>2015-08-27 07:38:36 +0000
commitd26d508afa21f42ac33b0f10e64d78e961171796 (patch)
tree291ad7b335a6a734ededa6da70bbcb65b1b293ac
parentd8d9efb3480764438e243f6c22843a57b5188185 (diff)
downloadgcc-d26d508afa21f42ac33b0f10e64d78e961171796.zip
gcc-d26d508afa21f42ac33b0f10e64d78e961171796.tar.gz
gcc-d26d508afa21f42ac33b0f10e64d78e961171796.tar.bz2
S/390: Add emit_barrier() after trap
gcc/ChangeLog * config/s390/s390.c (s390_emit_prologue): Add emit_barrier() after trap to fix ICE. gcc/testsuite/ChangeLog * gcc.target/s390/20150826-1.c: New test. From-SVN: r227251
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/s390/s390.c1
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.target/s390/20150826-1.c12
4 files changed, 22 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 1cfd8e8..e8884c0 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2015-08-27 Dominik Vogt <vogt@linux.vnet.ibm.com>
+
+ * config/s390/s390.c (s390_emit_prologue): Add emit_barrier() after
+ trap to fix ICE.
+
2015-08-26 Michael Meissner <meissner@linux.vnet.ibm.com>
* config/rs6000/rs6000-protos.h (rs6000_expand_float128_convert):
diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c
index 54b6b7d..cbfc800 100644
--- a/gcc/config/s390/s390.c
+++ b/gcc/config/s390/s390.c
@@ -10351,6 +10351,7 @@ s390_emit_prologue (void)
current_function_name(), cfun_frame_layout.frame_size,
s390_stack_size);
emit_insn (gen_trap ());
+ emit_barrier ();
}
else
{
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 27be013..15a2a43 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2015-08-27 Dominik Vogt <vogt@linux.vnet.ibm.com>
+
+ * gcc.target/s390/20150826-1.c: New test.
+
2015-08-26 Renlin Li <renlin.li@arm.com>
* gcc.target/aarch64/combine_bfi_1.c: New testcase.
diff --git a/gcc/testsuite/gcc.target/s390/20150826-1.c b/gcc/testsuite/gcc.target/s390/20150826-1.c
new file mode 100644
index 0000000..1567ced
--- /dev/null
+++ b/gcc/testsuite/gcc.target/s390/20150826-1.c
@@ -0,0 +1,12 @@
+/* Check that emitting a dynamic stack check for sizes below the
+ current frame size work. */
+
+/* { dg-do compile } */
+/* { dg-options "-O3 -mstack-size=32" } */
+
+extern int bar(char *);
+int foo(void)
+{
+ char b[100];
+ return bar(b);
+} /* { dg-warning "An unconditional trap is added" } */