From aacbd09efc12a36f5d313a3d8d8f661e50272a84 Mon Sep 17 00:00:00 2001 From: hjl Date: Tue, 7 Sep 2010 21:18:55 +0000 Subject: [PATCH] Redefine STACK_BOUNDARY/PREFERRED_STACK_BOUNDARY for Darwin/x86. gcc/ 2010-09-07 H.J. Lu Jack Howarth PR target/36502 PR target/42313 PR target/44651 * gcc/config/i386/darwin.h (STACK_BOUNDARY): Redefine as 128 for profiling or 64-bit MS_ABI and as BITS_PER_WORD otherwise. (PREFERRED_STACK_BOUNDARY): Replace STACK_BOUNDARY with 128 in MAX macro. gcc/testsuite/ 2010-09-07 Jack Howarth PR target/36502 * gcc.target/i386/pr36502.c: New test. PR target/42313 PR target/44651 * gcc.target/i386/builtin-unreachable.c: Don't skip on darwin. * gcc/testsuite/gcc.dg/stack-usage-1.c: Use default on i386/Darwin. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@163971 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 11 +++++++++++ gcc/config/i386/darwin.h | 6 ++++-- gcc/testsuite/ChangeLog | 10 ++++++++++ gcc/testsuite/gcc.dg/stack-usage-1.c | 6 +----- gcc/testsuite/gcc.target/i386/builtin-unreachable.c | 2 +- gcc/testsuite/gcc.target/i386/pr36502.c | 7 +++++++ 6 files changed, 34 insertions(+), 8 deletions(-) create mode 100644 gcc/testsuite/gcc.target/i386/pr36502.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9acad65..33c56d9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +2010-09-07 H.J. Lu + Jack Howarth + + PR target/36502 + PR target/42313 + PR target/44651 + * gcc/config/i386/darwin.h (STACK_BOUNDARY): Redefine as 128 for + profiling or 64-bit MS_ABI and as BITS_PER_WORD otherwise. + (PREFERRED_STACK_BOUNDARY): Replace STACK_BOUNDARY with 128 in + MAX macro. + 2010-09-07 H.J. Lu * unwind-dw2-fde-glibc.c: Include for DT_CONFIG. diff --git a/gcc/config/i386/darwin.h b/gcc/config/i386/darwin.h index cd3158c..416b023 100644 --- a/gcc/config/i386/darwin.h +++ b/gcc/config/i386/darwin.h @@ -79,7 +79,9 @@ extern int darwin_emit_branch_islands; Failure to ensure this will lead to a crash in the system libraries or dynamic loader. */ #undef STACK_BOUNDARY -#define STACK_BOUNDARY 128 +#define STACK_BOUNDARY \ + ((profile_flag || (TARGET_64BIT && ix86_abi == MS_ABI)) \ + ? 128 : BITS_PER_WORD) #undef MAIN_STACK_BOUNDARY #define MAIN_STACK_BOUNDARY 128 @@ -91,7 +93,7 @@ extern int darwin_emit_branch_islands; it's below the minimum. */ #undef PREFERRED_STACK_BOUNDARY #define PREFERRED_STACK_BOUNDARY \ - MAX (STACK_BOUNDARY, ix86_preferred_stack_boundary) + MAX (128, ix86_preferred_stack_boundary) /* We want -fPIC by default, unless we're using -static to compile for the kernel or some such. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 289b6b8..0c29f20 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,13 @@ +2010-09-07 Jack Howarth + + PR target/36502 + * gcc.target/i386/pr36502.c: New test. + + PR target/42313 + PR target/44651 + * gcc.target/i386/builtin-unreachable.c: Don't skip on darwin. + * gcc/testsuite/gcc.dg/stack-usage-1.c: Use default on i386/Darwin. + 2010-09-07 Mikael Morin * gfortran.dg/achar_4.f90: Enable bounds checking. diff --git a/gcc/testsuite/gcc.dg/stack-usage-1.c b/gcc/testsuite/gcc.dg/stack-usage-1.c index 48fc9ee..f174882 100644 --- a/gcc/testsuite/gcc.dg/stack-usage-1.c +++ b/gcc/testsuite/gcc.dg/stack-usage-1.c @@ -8,11 +8,7 @@ Then check that this is the actual stack usage in the assembly file. */ #if defined(__i386__) -# if defined (__MACH__) -# define SIZE 232 -# else -# define SIZE 248 -# endif +# define SIZE 248 #elif defined(__x86_64__) # define SIZE 356 #elif defined (__sparc__) diff --git a/gcc/testsuite/gcc.target/i386/builtin-unreachable.c b/gcc/testsuite/gcc.target/i386/builtin-unreachable.c index 85e81f0..802cf16 100644 --- a/gcc/testsuite/gcc.target/i386/builtin-unreachable.c +++ b/gcc/testsuite/gcc.target/i386/builtin-unreachable.c @@ -9,5 +9,5 @@ int h (char *p) __builtin_unreachable (); return p ? 1 : 0; } -/* { dg-final { scan-assembler-not "%e\[bs\]p" { target { ! *-*-darwin* } } } } */ +/* { dg-final { scan-assembler-not "%e\[bs\]p" } } */ /* { dg-final { scan-assembler-not "\[\\t \]+j" } } */ diff --git a/gcc/testsuite/gcc.target/i386/pr36502.c b/gcc/testsuite/gcc.target/i386/pr36502.c new file mode 100644 index 0000000..5794159 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr36502.c @@ -0,0 +1,7 @@ +/* PR target/36502 */ +/* { dg-do compile { target { *-*-darwin* && ilp32 } } } */ +/* { dg-options "-O -fomit-frame-pointer -fno-pic -S" } */ +int a; +void f() {a++;} +/* { dg-final { scan-assembler-not "esp" } } */ + -- 2.7.4