https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68701
--- Comment #10 from Uroš Bizjak <ubizjak at gmail dot com> --- (In reply to Uroš Bizjak from comment #7) > (In reply to Uroš Bizjak from comment #6) > > > Yeah. Or if neither -m{,no-}accumulate-outgoing-args is specified, > > > perhaps > > > turn that on automatically instead if -ffixed-ebp and only error out if > > > explicit -mno-accumulate-outgoing-args? > > > > IMO, this is a good idea. > > Perhaps a warning should be emitted when switching > MASK_ACCUMULATE_OUTGOING_ARGS option automatically, again as is already the > case with stack probe (i386.c, around line 5294). Something like following patch: --cut here-- Index: config/i386/i386.c =================================================================== --- config/i386/i386.c (revision 231398) +++ config/i386/i386.c (working copy) @@ -5296,6 +5296,15 @@ ix86_option_override_internal (bool main_args_p, opts->x_target_flags |= MASK_ACCUMULATE_OUTGOING_ARGS; } + if (fixed_regs[BP_REG] + && !(opts->x_target_flags & MASK_ACCUMULATE_OUTGOING_ARGS)) + { + if (opts_set->x_target_flags & MASK_ACCUMULATE_OUTGOING_ARGS) + warning (0, "fixed ebp register requires %saccumulate-outgoing-args%s", + prefix, suffix); + opts->x_target_flags |= MASK_ACCUMULATE_OUTGOING_ARGS; + } + /* Figure out what ASM_GENERATE_INTERNAL_LABEL builds as a prefix. */ { char *p; --cut here-- This problem can also be triggered with stack realignment, e.g. "-ffixed-ebp -mstackrealign" on 32 and 64-bit targets with following test case: --cut here-- typedef float V __attribute__((vector_size(16))); void bar (V a) { volatile V b = a; } --cut here-- So, to avoid problems, I think that "-ffixed-ebp" should unconditionally enable M_A_O_A on all targets, with a warning, as proposed in the above patch.