diff options
author | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-05-28 20:27:45 +0000 |
---|---|---|
committer | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-05-28 20:27:45 +0000 |
commit | b002d972387bc8ddb706c1d69a21ab66b7ab2213 (patch) | |
tree | 9ee0a47e45ceb034f0cc3cfa471a997423d3eae0 /gcc/config | |
parent | 773e91a0f425f896d949d17962d8f5d13f1b785d (diff) | |
download | gcc-b002d972387bc8ddb706c1d69a21ab66b7ab2213.tar.gz |
* config/i386/i386.c (ix86_compute_frame_layout): Do not add
bottom alignment for leaf functions.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@53965 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config')
-rw-r--r-- | gcc/config/i386/i386.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index cf2def2393b..39831af4745 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -4138,8 +4138,9 @@ ix86_compute_frame_layout (frame) offset += size; - /* Add outgoing arguments area. */ - if (ACCUMULATE_OUTGOING_ARGS) + /* Add outgoing arguments area. Can be skipped if we eliminated + all the function calls as dead code. */ + if (ACCUMULATE_OUTGOING_ARGS && !current_function_is_leaf) { offset += current_function_outgoing_args_size; frame->outgoing_arguments_size = current_function_outgoing_args_size; @@ -4147,9 +4148,12 @@ ix86_compute_frame_layout (frame) else frame->outgoing_arguments_size = 0; - /* Align stack boundary. */ - frame->padding2 = ((offset + preferred_alignment - 1) - & -preferred_alignment) - offset; + /* Align stack boundary. Only needed if we're calling another function. */ + if (!current_function_is_leaf) + frame->padding2 = ((offset + preferred_alignment - 1) + & -preferred_alignment) - offset; + else + frame->padding2 = 0; offset += frame->padding2; |