This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
make -momit-leaf-frame-pointer the default for x86
- From: Richard Henderson <rth at redhat dot com>
- To: gcc-patches at gcc dot gnu dot org
- Date: Wed, 29 May 2002 17:43:30 -0700
- Subject: make -momit-leaf-frame-pointer the default for x86
Tiny functions spend a good fraction of their runtime setting up and
tearing down the unused stack frame. I think it's high time we made
this the default.
Existing backtrace(3)-like functions should continue to work, since
__builtin_frame_address should still know how to unwind back to the
caller, at which point we have a frame pointer as before.
This is worth about 4k off the size of cc1.
r~
* config/i386/biarch64.h (TARGET_64BIT_DEFAULT): Define with value.
(TARGET_BI_ARCH): Likewise.
* config/i386/i386.h: Test TARGET_64BIT_DEFAULT by value.
(TARGET_SWITCHES): Combine target defaults here not in TARGET_DEFAULT.
(TARGET_64BIT_DEFAULT): Default to 0.
(TARGET_DEFAULT): Default to MASK_OMIT_LEAF_FRAME_POINTER.
Index: biarch64.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/i386/biarch64.h,v
retrieving revision 1.1
diff -c -p -d -u -r1.1 biarch64.h
--- biarch64.h 2 Oct 2001 10:59:38 -0000 1.1
+++ biarch64.h 30 May 2002 00:35:37 -0000
@@ -21,5 +21,5 @@ along with GNU CC; see the file COPYING.
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
-#define TARGET_64BIT_DEFAULT
-#define TARGET_BI_ARCH
+#define TARGET_64BIT_DEFAULT MASK_64BIT
+#define TARGET_BI_ARCH 1
Index: i386.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/i386/i386.h,v
retrieving revision 1.265
diff -c -p -d -u -r1.265 i386.h
--- i386.h 29 May 2002 20:53:59 -0000 1.265
+++ i386.h 30 May 2002 00:35:37 -0000
@@ -192,7 +192,7 @@ extern int target_flags;
#ifdef TARGET_BI_ARCH
#define TARGET_64BIT (target_flags & MASK_64BIT)
#else
-#ifdef TARGET_64BIT_DEFAULT
+#if TARGET_64BIT_DEFAULT
#define TARGET_64BIT 1
#else
#define TARGET_64BIT 0
@@ -384,14 +384,15 @@ extern int x86_prefetch_sse;
{ "no-red-zone", MASK_NO_RED_ZONE, \
N_("Do not use red-zone in the x86-64 code") }, \
SUBTARGET_SWITCHES \
- { "", TARGET_DEFAULT, 0 }}
+ { "", TARGET_DEFAULT | TARGET_64BIT_DEFAULT | TARGET_SUBTARGET_DEFAULT, 0 }}
-#ifdef TARGET_64BIT_DEFAULT
-#define TARGET_DEFAULT (MASK_64BIT | TARGET_SUBTARGET_DEFAULT)
-#else
-#define TARGET_DEFAULT TARGET_SUBTARGET_DEFAULT
+#ifndef TARGET_64BIT_DEFAULT
+#define TARGET_64BIT_DEFAULT 0
#endif
+#define TARGET_DEFAULT MASK_OMIT_LEAF_FRAME_POINTER
+
+
/* This macro is similar to `TARGET_SWITCHES' but defines names of
command options that have values. Its definition is an
initializer with a subgrouping for each command option.
@@ -590,13 +591,13 @@ extern int x86_prefetch_sse;
#ifndef CPP_CPU_SPEC
#ifdef TARGET_BI_ARCH
-#ifdef TARGET_64BIT_DEFAULT
+#if TARGET_64BIT_DEFAULT
#define CPP_CPU_SPEC "%{m32:%(cpp_cpu32)}%{!m32:%(cpp_cpu64)} %(cpp_cpucommon)"
#else
#define CPP_CPU_SPEC "%{m64:%(cpp_cpu64)}%{!m64:%(cpp_cpu32)} %(cpp_cpucommon)"
#endif
#else
-#ifdef TARGET_64BIT_DEFAULT
+#if TARGET_64BIT_DEFAULT
#define CPP_CPU_SPEC "%(cpp_cpu64) %(cpp_cpucommon)"
#else
#define CPP_CPU_SPEC "%(cpp_cpu32) %(cpp_cpucommon)"
@@ -657,7 +658,7 @@ extern int x86_prefetch_sse;
#define DOUBLE_TYPE_SIZE 64
#define LONG_LONG_TYPE_SIZE 64
-#if defined (TARGET_BI_ARCH) || defined (TARGET_64BIT_DEFAULT)
+#if defined (TARGET_BI_ARCH) || TARGET_64BIT_DEFAULT
#define MAX_BITS_PER_WORD 64
#define MAX_LONG_TYPE_SIZE 64
#else