diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1b57eeab61d..4ba93a24d65 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2015-10-04 Uros Bizjak + + * config/i386/i386.c (ix86_nsaved_regs): Use GENERAL_REGNO_P to + check for general register. + (ix86_emit_save_regs): Ditto. + (ix86_emit_save_regs_using_mov): Ditto. + (ix86_emit_restore_regs_using_pop): Ditto. + (ix86_emit_restore_regs_using_mov): Ditto. + 2015-10-03 Marek Polacek * Makefile.in (insn-latencytab.o): Remove -Wno-duplicated-cond. diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index f5c96572ced..9c4cfbdc3f3 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -11083,7 +11083,7 @@ ix86_nsaved_regs (void) int regno; for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++) - if (!SSE_REGNO_P (regno) && ix86_save_reg (regno, true)) + if (GENERAL_REGNO_P (regno) && ix86_save_reg (regno, true)) nregs ++; return nregs; } @@ -11493,7 +11493,7 @@ ix86_emit_save_regs (void) rtx_insn *insn; for (regno = FIRST_PSEUDO_REGISTER - 1; regno-- > 0; ) - if (!SSE_REGNO_P (regno) && ix86_save_reg (regno, true)) + if (GENERAL_REGNO_P (regno) && ix86_save_reg (regno, true)) { insn = emit_insn (gen_push (gen_rtx_REG (word_mode, regno))); RTX_FRAME_RELATED_P (insn) = 1; @@ -11573,7 +11573,7 @@ ix86_emit_save_regs_using_mov (HOST_WIDE_INT cfa_offset) unsigned int regno; for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++) - if (!SSE_REGNO_P (regno) && ix86_save_reg (regno, true)) + if (GENERAL_REGNO_P (regno) && ix86_save_reg (regno, true)) { ix86_emit_save_reg_using_mov (word_mode, regno, cfa_offset); cfa_offset -= UNITS_PER_WORD; @@ -11591,7 +11591,7 @@ ix86_emit_save_sse_regs_using_mov (HOST_WIDE_INT cfa_offset) if (SSE_REGNO_P (regno) && ix86_save_reg (regno, true)) { ix86_emit_save_reg_using_mov (V4SFmode, regno, cfa_offset); - cfa_offset -= 16; + cfa_offset -= GET_MODE_SIZE (V4SFmode); } } @@ -12991,7 +12991,7 @@ ix86_emit_restore_regs_using_pop (void) unsigned int regno; for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++) - if (!SSE_REGNO_P (regno) && ix86_save_reg (regno, false)) + if (GENERAL_REGNO_P (regno) && ix86_save_reg (regno, false)) ix86_emit_restore_reg_using_pop (gen_rtx_REG (word_mode, regno)); } @@ -13034,7 +13034,7 @@ ix86_emit_restore_regs_using_mov (HOST_WIDE_INT cfa_offset, unsigned int regno; for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++) - if (!SSE_REGNO_P (regno) && ix86_save_reg (regno, maybe_eh_return)) + if (GENERAL_REGNO_P (regno) && ix86_save_reg (regno, maybe_eh_return)) { rtx reg = gen_rtx_REG (word_mode, regno); rtx mem; @@ -13085,7 +13085,7 @@ ix86_emit_restore_sse_regs_using_mov (HOST_WIDE_INT cfa_offset, ix86_add_cfa_restore_note (NULL, reg, cfa_offset); - cfa_offset -= 16; + cfa_offset -= GET_MODE_SIZE (V4SFmode); } }