Redefine STACK_BOUNDARY/PREFERRED_STACK_BOUNDARY for Darwin/x86.
authorhjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 7 Sep 2010 21:18:55 +0000 (21:18 +0000)
committerhjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 7 Sep 2010 21:18:55 +0000 (21:18 +0000)
gcc/

2010-09-07  H.J. Lu  <hjl.tools@gmail.com>
    Jack Howarth <howarth@bromo.med.uc.edu>

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 <howarth@bromo.med.uc.edu>

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
gcc/config/i386/darwin.h
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/stack-usage-1.c
gcc/testsuite/gcc.target/i386/builtin-unreachable.c
gcc/testsuite/gcc.target/i386/pr36502.c [new file with mode: 0644]

index 9acad65..33c56d9 100644 (file)
@@ -1,3 +1,14 @@
+2010-09-07  H.J. Lu  <hjl.tools@gmail.com>
+           Jack Howarth <howarth@bromo.med.uc.edu>
+
+       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  <hongjiu.lu@intel.com>
 
        * unwind-dw2-fde-glibc.c: Include <elf.h> for DT_CONFIG.
index cd3158c..416b023 100644 (file)
@@ -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.  */
index 289b6b8..0c29f20 100644 (file)
@@ -1,3 +1,13 @@
+2010-09-07  Jack Howarth <howarth@bromo.med.uc.edu>
+
+       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  <mikael@gcc.gnu.org>
 
        * gfortran.dg/achar_4.f90: Enable bounds checking.
index 48fc9ee..f174882 100644 (file)
@@ -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__)
index 85e81f0..802cf16 100644 (file)
@@ -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 (file)
index 0000000..5794159
--- /dev/null
@@ -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" } } */
+