summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAlexandre Oliva <aoliva@redhat.com>2001-10-23 11:50:50 +0000
committerAlexandre Oliva <aoliva@gcc.gnu.org>2001-10-23 11:50:50 +0000
commitfbb83b433067ff743fe0e6c84fc45c4c270f276d (patch)
tree27041cf7f79a06096f0227a88d2cf26f16e1c4c3 /gcc
parentc6257c5d978a99ffc409664b03f696fce8c82e10 (diff)
downloadgcc-fbb83b433067ff743fe0e6c84fc45c4c270f276d.tar.gz
i386.c (override_options): Default to minimum stack alignment when optimizing for code size.
* config/i386/i386.c (override_options): Default to minimum stack alignment when optimizing for code size. * doc/invoke.texi (-mpreferred-stack-boundary): Document the change. From-SVN: r46433
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/i386/i386.c8
-rw-r--r--gcc/doc/invoke.texi19
3 files changed, 21 insertions, 11 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8d2b667792a..4db00904ef4 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
2001-10-23 Alexandre Oliva <aoliva@redhat.com>
+ * config/i386/i386.c (override_options): Default to minimum
+ stack alignment when optimizing for code size.
+ * doc/invoke.texi (-mpreferred-stack-boundary): Document the
+ change.
+
* config/i386/i386.c (override_options): Set upper limit of
-mpreferred-stack-boundary to 12.
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 5183c5f5e11..06dc3be823e 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -973,8 +973,12 @@ override_options ()
align_functions = 1 << abs (processor_target_table[ix86_cpu].align_func);
/* Validate -mpreferred-stack-boundary= value, or provide default.
- The default of 128 bits is for Pentium III's SSE __m128. */
- ix86_preferred_stack_boundary = 128;
+ The default of 128 bits is for Pentium III's SSE __m128, but we
+ don't want additional code to keep the stack aligned when
+ optimizing for code size. */
+ ix86_preferred_stack_boundary = (optimize_size
+ ? TARGET_64BIT ? 64 : 32
+ : 128);
if (ix86_preferred_stack_boundary_string)
{
i = atoi (ix86_preferred_stack_boundary_string);
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index dc1c58feb48..1054c2bf358 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -7587,12 +7587,13 @@ startup modules.
@opindex mpreferred-stack-boundary
Attempt to keep the stack boundary aligned to a 2 raised to @var{num}
byte boundary. If @option{-mpreferred-stack-boundary} is not specified,
-the default is 4 (16 bytes or 128 bits).
+the default is 4 (16 bytes or 128 bits), except when optimizing for code
+size (@option{-Os}), in which case the default is the minimum correct
+alignment (4 bytes for x86, and 8 bytes for x86-64).
-The stack is required to be aligned on a 4 byte boundary. On Pentium
-and PentiumPro, @code{double} and @code{long double} values should be
-aligned to an 8 byte boundary (see @option{-malign-double}) or suffer
-significant run time performance penalties. On Pentium III, the
+On Pentium and PentiumPro, @code{double} and @code{long double} values
+should be aligned to an 8 byte boundary (see @option{-malign-double}) or
+suffer significant run time performance penalties. On Pentium III, the
Streaming SIMD Extension (SSE) data type @code{__m128} suffers similar
penalties if it is not 16 byte aligned.
@@ -7604,10 +7605,10 @@ stack boundary from a function compiled with a lower preferred stack
boundary will most likely misalign the stack. It is recommended that
libraries that use callbacks always use the default setting.
-This extra alignment does consume extra stack space. Code that is sensitive
-to stack space usage, such as embedded systems and operating system kernels,
-may want to reduce the preferred alignment to
-@option{-mpreferred-stack-boundary=2}.
+This extra alignment does consume extra stack space, and generally
+increases code size. Code that is sensitive to stack space usage, such
+as embedded systems and operating system kernels, may want to reduce the
+preferred alignment to @option{-mpreferred-stack-boundary=2}.
@item -mmmx
@itemx -mno-mmx