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
This commit is contained in:
Alexandre Oliva 2001-10-23 11:50:50 +00:00 committed by Alexandre Oliva
parent c6257c5d97
commit fbb83b4330
3 changed files with 21 additions and 11 deletions

View File

@ -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.

View File

@ -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);

View File

@ -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