diff options
author | Andreas Krebbel <krebbel1@de.ibm.com> | 2006-10-26 06:58:29 +0000 |
---|---|---|
committer | Andreas Krebbel <krebbel@gcc.gnu.org> | 2006-10-26 06:58:29 +0000 |
commit | 20f04e65e31df6f03981dee5205563cf249d98e7 (patch) | |
tree | b91da3b78fce1e51a4021d7e2f24b190e44ea968 | |
parent | ac2de15d44197a721aeaa92affa5b64c7540cd54 (diff) | |
download | gcc-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
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/s390/s390.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/20061026.c | 13 |
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); +} |