From 20f04e65e31df6f03981dee5205563cf249d98e7 Mon Sep 17 00:00:00 2001 From: Andreas Krebbel Date: Thu, 26 Oct 2006 06:58:29 +0000 Subject: [PATCH] s390.c (s390_init_frame_layout): Check positive frame_size. 2006-10-26 Andreas Krebbel * config/s390/s390.c (s390_init_frame_layout): Check positive frame_size. 2006-10-26 Andreas Krebbel * gcc.dg/20061026.c: New testcase. From-SVN: r118062 --- gcc/ChangeLog | 5 +++++ gcc/config/s390/s390.c | 4 ++-- gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/gcc.dg/20061026.c | 13 +++++++++++++ 4 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/20061026.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f467dce03d4..554a22c1ef6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2006-10-26 Andreas Krebbel + + * config/s390/s390.c (s390_init_frame_layout): Check positive + frame_size. + 2006-10-26 Ben Elliston * gimplify.c (get_name): Remove extraneous break. diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c index 3fd36383cbb..59baba9f3de 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 5f1cbf79c79..ad0ca6f7ec8 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2006-10-26 Andreas Krebbel + + * gcc.dg/20061026.c: New testcase. + 2006-10-26 Jerry DeLisle PR libgfortran/29563 diff --git a/gcc/testsuite/gcc.dg/20061026.c b/gcc/testsuite/gcc.dg/20061026.c new file mode 100644 index 00000000000..fb3de2375e5 --- /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); +} -- 2.30.2