https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65911
Markus Trippelsdorf <trippels at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2015-04-28 Ever confirmed|0 |1 --- Comment #1 from Markus Trippelsdorf <trippels at gcc dot gnu.org> --- It's the ternary operator that causes the issue. The following patch works fine: diff --git a/gcc/function.c b/gcc/function.c index d1a2c0a..0930bb0 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -4195,9 +4195,9 @@ pad_to_arg_alignment (struct args_size *offset_ptr, int boundary, else { offset_ptr->constant = -sp_offset + - ARGS_GROW_DOWNWARD ? + (ARGS_GROW_DOWNWARD ? FLOOR_ROUND (offset_ptr->constant + sp_offset, boundary_in_bytes) : - CEIL_ROUND (offset_ptr->constant + sp_offset, boundary_in_bytes); + CEIL_ROUND (offset_ptr->constant + sp_offset, boundary_in_bytes)); if (boundary > PARM_BOUNDARY) alignment_pad->constant = offset_ptr->constant - save_constant;