aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAndreas Krebbel <krebbel1@de.ibm.com>2006-10-26 06:58:29 +0000
committerAndreas Krebbel <krebbel@gcc.gnu.org>2006-10-26 06:58:29 +0000
commit20f04e65e31df6f03981dee5205563cf249d98e7 (patch)
treeb91da3b78fce1e51a4021d7e2f24b190e44ea968 /gcc
parentac2de15d44197a721aeaa92affa5b64c7540cd54 (diff)
downloadgcc-20f04e65e31df6f03981dee5205563cf249d98e7.zip
gcc-20f04e65e31df6f03981dee5205563cf249d98e7.tar.gz
gcc-20f04e65e31df6f03981dee5205563cf249d98e7.tar.bz2
s390.c (s390_init_frame_layout): Check positive frame_size.
2006-10-26 Andreas Krebbel <krebbel1@de.ibm.com> * config/s390/s390.c (s390_init_frame_layout): Check positive frame_size. 2006-10-26 Andreas Krebbel <krebbel1@de.ibm.com> * gcc.dg/20061026.c: New testcase. From-SVN: r118062
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/s390/s390.c4
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.dg/20061026.c13
4 files changed, 24 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f467dce..554a22c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2006-10-26 Andreas Krebbel <krebbel1@de.ibm.com>
+
+ * config/s390/s390.c (s390_init_frame_layout): Check positive
+ frame_size.
+
2006-10-26 Ben Elliston <bje@au.ibm.com>
* gimplify.c (get_name): Remove extraneous break.
diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c
index 3fd3638..59baba9 100644
--- a/gcc/config/s390/s390.c
+++ b/gcc/config/s390/s390.c
@@ -6718,8 +6718,8 @@ s390_init_frame_layout (void)
/* Try to predict whether we'll need the base register. */
base_used = cfun->machine->split_branches_pending_p
|| current_function_uses_const_pool
- || (!DISP_IN_RANGE (-frame_size)
- && !CONST_OK_FOR_K (-frame_size));
+ || (!DISP_IN_RANGE (frame_size)
+ && !CONST_OK_FOR_K (frame_size));
/* Decide which register to use as literal pool base. In small
leaf functions, try to use an unused call-clobbered register
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 5f1cbf7..ad0ca6f7 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2006-10-26 Andreas Krebbel <krebbel1@de.ibm.com>
+
+ * gcc.dg/20061026.c: New testcase.
+
2006-10-26 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/29563
diff --git a/gcc/testsuite/gcc.dg/20061026.c b/gcc/testsuite/gcc.dg/20061026.c
new file mode 100644
index 0000000..fb3de23
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/20061026.c
@@ -0,0 +1,13 @@
+/* { dg-do compile } */
+/* { dg-options "-O1" } */
+
+/* This testcase failed on s390. The frame size for function f will be
+ exactly 32768 bytes. The back end has to recognize that this is to
+ large for a 16bit constant and therefore should reserve the literal
+ pool base pointer. */
+
+int f () {
+ char a[32608];
+
+ g (a);
+}