diff options
author | Jakub Jelinek <jakub@redhat.com> | 2009-07-11 19:40:29 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2009-07-11 19:40:29 +0200 |
commit | ae58e548884f696e600966549867df23de3ff2d3 (patch) | |
tree | f7d7a64b4ca810edf1a746863dde1086ecd8cbd9 /gcc/emit-rtl.c | |
parent | dd67163fa487933aff300fd75228b6889c9c6f6e (diff) | |
download | gcc-ae58e548884f696e600966549867df23de3ff2d3.zip gcc-ae58e548884f696e600966549867df23de3ff2d3.tar.gz gcc-ae58e548884f696e600966549867df23de3ff2d3.tar.bz2 |
re PR target/40667 (stack frames are generated even with -fomit-frame-pointer)
PR rtl-optimization/40667
* defaults.h (MINIMUM_ALIGNMENT): Define if not defined.
* doc/tm.texi (MINIMUM_ALIGNMENT): Document it.
* config/i386/i386.h (MINIMUM_ALIGNMENT): Define.
* config/i386/i386.c (ix86_minimum_alignment): New function.
* config/i386/i386-protos.h (ix86_minimum_alignment): New prototype.
* cfgexpand.c (expand_one_var): Use MINIMIM_ALIGNMENT.
* emit-rtl.c (gen_reg_rtx): Likewise.
* function.c (assign_parms): Likewise. If nominal_type needs
bigger alignment than FUNCTION_ARG_BOUNDARY, use its alignment
rather than passed_type's alignment.
From-SVN: r149513
Diffstat (limited to 'gcc/emit-rtl.c')
-rw-r--r-- | gcc/emit-rtl.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c index df2b4b7..d20f2b5 100644 --- a/gcc/emit-rtl.c +++ b/gcc/emit-rtl.c @@ -869,7 +869,11 @@ gen_reg_rtx (enum machine_mode mode) if (SUPPORTS_STACK_ALIGNMENT && crtl->stack_alignment_estimated < align && !crtl->stack_realign_processed) - crtl->stack_alignment_estimated = align; + { + unsigned int min_align = MINIMUM_ALIGNMENT (NULL, mode, align); + if (crtl->stack_alignment_estimated < min_align) + crtl->stack_alignment_estimated = min_align; + } if (generating_concat_p && (GET_MODE_CLASS (mode) == MODE_COMPLEX_FLOAT |