http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54227
--- Comment #4 from Uros Bizjak <ubizjak at gmail dot com> 2012-08-11 13:19:51 UTC --- (In reply to comment #3) > A whole pack of moves to memory is missing. Ah, this is the consequence of following difference in stdarg dumps: -test: va_list escapes 0, needs to save 32 GPR units and 1 FPR units. +test: va_list escapes 0, needs to save 32 GPR units and 0 FPR units. In alpha.c, around line 6100, we have: if (cfun->va_list_fpr_size & 1) { tmp = gen_rtx_MEM (BLKmode, plus_constant (Pmode, virtual_incoming_args_rtx, (cum + 6) * UNITS_PER_WORD)); MEM_NOTRAP_P (tmp) = 1; set_mem_alias_set (tmp, set); move_block_from_reg (16 + cum, tmp, count); }