diff options
author | Alexandre Oliva <aoliva@redhat.com> | 2001-10-23 11:50:50 +0000 |
---|---|---|
committer | Alexandre Oliva <aoliva@gcc.gnu.org> | 2001-10-23 11:50:50 +0000 |
commit | fbb83b433067ff743fe0e6c84fc45c4c270f276d (patch) | |
tree | 27041cf7f79a06096f0227a88d2cf26f16e1c4c3 /gcc | |
parent | c6257c5d978a99ffc409664b03f696fce8c82e10 (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 8 | ||||
-rw-r--r-- | gcc/doc/invoke.texi | 19 |
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 |