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);
    }

Reply via email to