diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bb928cfec4a..6b19608c8ff 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,15 @@ +2005-11-25 David Edelsohn + + * config/rs6000/rs6000.c (rs6000_sr_alias_set): Delete. + (rs6000_override_options): Remove initialization of + rs6000_sr_alias_set. + (rs6000_emit_eh_reg_restore): Use gen_frame_mem. + (rs6000_emit_stack_tie): Same. + (emit_frame_save): Same. + (gen_frame_mem_offset): Same. + (rs6000_emit_prologue): Same. + (rs6000_emit_epilogue): Same. + 2005-11-25 Andrew Pinski PR middle-end/24989 diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index f096e38154b..d8d00a5b037 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -234,9 +234,6 @@ static enum { int toc_initialized; char toc_label_name[10]; -/* Alias set for saves and restores from the rs6000 stack. */ -static GTY(()) int rs6000_sr_alias_set; - /* Control alignment for fields within structures. */ /* String from -malign-XXXXX. */ int rs6000_alignment_flags; @@ -1406,9 +1403,6 @@ rs6000_override_options (const char *default_cpu) && (DEFAULT_ABI == ABI_AIX || DEFAULT_ABI == ABI_DARWIN)) REAL_MODE_FORMAT (TFmode) = &ibm_extended_format; - /* Allocate an alias set for register saves & restores from stack. */ - rs6000_sr_alias_set = new_alias_set (); - if (TARGET_TOC) ASM_GENERATE_INTERNAL_LABEL (toc_label_name, "LCTOC", 1); @@ -13443,9 +13437,7 @@ rs6000_emit_eh_reg_restore (rtx source, rtx scratch) || current_function_calls_alloca || info->total_size > 32767) { - tmp = gen_rtx_MEM (Pmode, frame_rtx); - MEM_NOTRAP_P (tmp) = 1; - set_mem_alias_set (tmp, rs6000_sr_alias_set); + tmp = gen_frame_mem (Pmode, frame_rtx); emit_move_insn (operands[1], tmp); frame_rtx = operands[1]; } @@ -13453,9 +13445,7 @@ rs6000_emit_eh_reg_restore (rtx source, rtx scratch) sp_offset = info->total_size; tmp = plus_constant (frame_rtx, info->lr_save_offset + sp_offset); - tmp = gen_rtx_MEM (Pmode, tmp); - MEM_NOTRAP_P (tmp) = 1; - set_mem_alias_set (tmp, rs6000_sr_alias_set); + tmp = gen_frame_mem (Pmode, tmp); emit_move_insn (tmp, operands[0]); } else @@ -13550,15 +13540,15 @@ rs6000_aix_emit_builtin_unwind_init (void) emit_label (no_toc_save_needed); } -/* This ties together stack memory (MEM with an alias set of - rs6000_sr_alias_set) and the change to the stack pointer. */ +/* This ties together stack memory (MEM with an alias set of frame_alias_set) + and the change to the stack pointer. */ static void rs6000_emit_stack_tie (void) { - rtx mem = gen_rtx_MEM (BLKmode, gen_rtx_REG (Pmode, STACK_POINTER_REGNUM)); + rtx mem = gen_frame_mem (BLKmode, + gen_rtx_REG (Pmode, STACK_POINTER_REGNUM)); - set_mem_alias_set (mem, rs6000_sr_alias_set); emit_insn (gen_stack_tie (mem)); } @@ -13898,8 +13888,7 @@ emit_frame_save (rtx frame_reg, rtx frame_ptr, enum machine_mode mode, reg = gen_rtx_REG (mode, regno); addr = gen_rtx_PLUS (Pmode, frame_reg, offset_rtx); - mem = gen_rtx_MEM (mode, addr); - set_mem_alias_set (mem, rs6000_sr_alias_set); + mem = gen_frame_mem (mode, addr); insn = emit_move_insn (mem, reg); @@ -13925,7 +13914,7 @@ gen_frame_mem_offset (enum machine_mode mode, rtx reg, int offset) else offset_rtx = int_rtx; - return gen_rtx_MEM (mode, gen_rtx_PLUS (Pmode, reg, offset_rtx)); + return gen_frame_mem (mode, gen_rtx_PLUS (Pmode, reg, offset_rtx)); } /* Look for user-defined global regs. We should not save and restore these, @@ -14068,8 +14057,7 @@ rs6000_emit_prologue (void) rtx addr = gen_rtx_PLUS (Pmode, frame_reg_rtx, GEN_INT (info->fp_save_offset + sp_offset + 8 * i)); - rtx mem = gen_rtx_MEM (DFmode, addr); - set_mem_alias_set (mem, rs6000_sr_alias_set); + rtx mem = gen_frame_mem (DFmode, addr); RTVEC_ELT (p, j++) = gen_rtx_SET (VOIDmode, mem, reg); } @@ -14079,8 +14067,7 @@ rs6000_emit_prologue (void) rtx addr = gen_rtx_PLUS (Pmode, frame_reg_rtx, GEN_INT (info->altivec_save_offset + sp_offset + 16 * i)); - rtx mem = gen_rtx_MEM (V4SImode, addr); - set_mem_alias_set (mem, rs6000_sr_alias_set); + rtx mem = gen_frame_mem (V4SImode, addr); RTVEC_ELT (p, j++) = gen_rtx_SET (VOIDmode, mem, reg); } @@ -14090,8 +14077,7 @@ rs6000_emit_prologue (void) rtx addr = gen_rtx_PLUS (Pmode, frame_reg_rtx, GEN_INT (info->gp_save_offset + sp_offset + reg_size * i)); - rtx mem = gen_rtx_MEM (reg_mode, addr); - set_mem_alias_set (mem, rs6000_sr_alias_set); + rtx mem = gen_frame_mem (reg_mode, addr); RTVEC_ELT (p, j++) = gen_rtx_SET (VOIDmode, mem, reg); } @@ -14102,8 +14088,7 @@ rs6000_emit_prologue (void) rtx addr = gen_rtx_PLUS (Pmode, frame_reg_rtx, GEN_INT (info->cr_save_offset + sp_offset)); - rtx mem = gen_rtx_MEM (reg_mode, addr); - set_mem_alias_set (mem, rs6000_sr_alias_set); + rtx mem = gen_frame_mem (reg_mode, addr); RTVEC_ELT (p, j++) = gen_rtx_SET (VOIDmode, mem, reg); } @@ -14154,10 +14139,8 @@ rs6000_emit_prologue (void) emit_move_insn (areg, GEN_INT (offset)); /* AltiVec addressing mode is [reg+reg]. */ - mem = gen_rtx_MEM (V4SImode, - gen_rtx_PLUS (Pmode, frame_reg_rtx, areg)); - - set_mem_alias_set (mem, rs6000_sr_alias_set); + mem = gen_frame_mem (V4SImode, + gen_rtx_PLUS (Pmode, frame_reg_rtx, areg)); insn = emit_move_insn (mem, savereg); @@ -14193,10 +14176,9 @@ rs6000_emit_prologue (void) { /* Save VRSAVE. */ offset = info->vrsave_save_offset + sp_offset; - mem - = gen_rtx_MEM (SImode, - gen_rtx_PLUS (Pmode, frame_reg_rtx, GEN_INT (offset))); - set_mem_alias_set (mem, rs6000_sr_alias_set); + mem = gen_frame_mem (SImode, + gen_rtx_PLUS (Pmode, frame_reg_rtx, + GEN_INT (offset))); insn = emit_move_insn (mem, reg); } @@ -14272,8 +14254,7 @@ rs6000_emit_prologue (void) addr = gen_rtx_PLUS (Pmode, frame_reg_rtx, GEN_INT (info->fp_save_offset + sp_offset + 8*i)); - mem = gen_rtx_MEM (DFmode, addr); - set_mem_alias_set (mem, rs6000_sr_alias_set); + mem = gen_frame_mem (DFmode, addr); RTVEC_ELT (p, i + 2) = gen_rtx_SET (VOIDmode, mem, reg); } @@ -14297,8 +14278,7 @@ rs6000_emit_prologue (void) GEN_INT (info->gp_save_offset + sp_offset + reg_size * i)); - mem = gen_rtx_MEM (reg_mode, addr); - set_mem_alias_set (mem, rs6000_sr_alias_set); + mem = gen_frame_mem (reg_mode, addr); RTVEC_ELT (p, i) = gen_rtx_SET (VOIDmode, mem, reg); } @@ -14336,8 +14316,7 @@ rs6000_emit_prologue (void) b = GEN_INT (offset); addr = gen_rtx_PLUS (Pmode, frame_reg_rtx, b); - mem = gen_rtx_MEM (V2SImode, addr); - set_mem_alias_set (mem, rs6000_sr_alias_set); + mem = gen_frame_mem (V2SImode, addr); insn = emit_move_insn (mem, reg); if (GET_CODE (b) == CONST_INT) @@ -14353,8 +14332,7 @@ rs6000_emit_prologue (void) GEN_INT (info->gp_save_offset + sp_offset + reg_size * i)); - mem = gen_rtx_MEM (reg_mode, addr); - set_mem_alias_set (mem, rs6000_sr_alias_set); + mem = gen_frame_mem (reg_mode, addr); insn = emit_move_insn (mem, reg); rs6000_frame_related (insn, frame_ptr_rtx, info->total_size, @@ -14377,8 +14355,7 @@ rs6000_emit_prologue (void) reg = gen_rtx_REG (reg_mode, 2); addr = gen_rtx_PLUS (Pmode, frame_reg_rtx, GEN_INT (sp_offset + 5 * reg_size)); - mem = gen_rtx_MEM (reg_mode, addr); - set_mem_alias_set (mem, rs6000_sr_alias_set); + mem = gen_frame_mem (reg_mode, addr); insn = emit_move_insn (mem, reg); rs6000_frame_related (insn, frame_ptr_rtx, info->total_size, @@ -14406,7 +14383,7 @@ rs6000_emit_prologue (void) GEN_INT (info->lr_save_offset + sp_offset)); rtx reg = gen_rtx_REG (Pmode, 0); rtx mem = gen_rtx_MEM (Pmode, addr); - /* This should not be of rs6000_sr_alias_set, because of + /* This should not be of frame_alias_set, because of __builtin_return_address. */ insn = emit_move_insn (mem, reg); @@ -14419,12 +14396,10 @@ rs6000_emit_prologue (void) { rtx addr = gen_rtx_PLUS (Pmode, frame_reg_rtx, GEN_INT (info->cr_save_offset + sp_offset)); - rtx mem = gen_rtx_MEM (SImode, addr); + rtx mem = gen_frame_mem (SImode, addr); /* See the large comment above about why CR2_REGNO is used. */ rtx magic_eh_cr_reg = gen_rtx_REG (SImode, CR2_REGNO); - set_mem_alias_set (mem, rs6000_sr_alias_set); - /* If r12 was used to hold the original sp, copy cr into r0 now that it's free. */ if (REGNO (frame_reg_rtx) == 12) @@ -14667,8 +14642,7 @@ rs6000_emit_epilogue (int sibcall) rtx reg = gen_rtx_REG (reg_mode, CR2_REGNO); rtx addr = gen_rtx_PLUS (Pmode, frame_reg_rtx, GEN_INT (info->cr_save_offset)); - rtx mem = gen_rtx_MEM (reg_mode, addr); - set_mem_alias_set (mem, rs6000_sr_alias_set); + rtx mem = gen_frame_mem (reg_mode, addr); RTVEC_ELT (p, j++) = gen_rtx_SET (VOIDmode, reg, mem); } @@ -14679,8 +14653,7 @@ rs6000_emit_epilogue (int sibcall) rtx addr = gen_rtx_PLUS (Pmode, frame_reg_rtx, GEN_INT (info->gp_save_offset + reg_size * i)); - rtx mem = gen_rtx_MEM (reg_mode, addr); - set_mem_alias_set (mem, rs6000_sr_alias_set); + rtx mem = gen_frame_mem (reg_mode, addr); RTVEC_ELT (p, j++) = gen_rtx_SET (VOIDmode, reg, mem); } @@ -14690,8 +14663,7 @@ rs6000_emit_epilogue (int sibcall) rtx addr = gen_rtx_PLUS (Pmode, frame_reg_rtx, GEN_INT (info->altivec_save_offset + 16 * i)); - rtx mem = gen_rtx_MEM (V4SImode, addr); - set_mem_alias_set (mem, rs6000_sr_alias_set); + rtx mem = gen_frame_mem (V4SImode, addr); RTVEC_ELT (p, j++) = gen_rtx_SET (VOIDmode, reg, mem); } @@ -14701,8 +14673,7 @@ rs6000_emit_epilogue (int sibcall) rtx addr = gen_rtx_PLUS (Pmode, frame_reg_rtx, GEN_INT (info->fp_save_offset + 8 * i)); - rtx mem = gen_rtx_MEM (DFmode, addr); - set_mem_alias_set (mem, rs6000_sr_alias_set); + rtx mem = gen_frame_mem (DFmode, addr); RTVEC_ELT (p, j++) = gen_rtx_SET (VOIDmode, reg, mem); } @@ -14768,8 +14739,7 @@ rs6000_emit_epilogue (int sibcall) /* AltiVec addressing mode is [reg+reg]. */ addr = gen_rtx_PLUS (Pmode, frame_reg_rtx, areg); - mem = gen_rtx_MEM (V4SImode, addr); - set_mem_alias_set (mem, rs6000_sr_alias_set); + mem = gen_frame_mem (V4SImode, addr); emit_move_insn (gen_rtx_REG (V4SImode, i), mem); } @@ -14783,8 +14753,7 @@ rs6000_emit_epilogue (int sibcall) addr = gen_rtx_PLUS (Pmode, frame_reg_rtx, GEN_INT (info->vrsave_save_offset + sp_offset)); - mem = gen_rtx_MEM (SImode, addr); - set_mem_alias_set (mem, rs6000_sr_alias_set); + mem = gen_frame_mem (SImode, addr); reg = gen_rtx_REG (SImode, 12); emit_move_insn (reg, mem); @@ -14797,8 +14766,6 @@ rs6000_emit_epilogue (int sibcall) rtx mem = gen_frame_mem_offset (Pmode, frame_reg_rtx, info->lr_save_offset + sp_offset); - set_mem_alias_set (mem, rs6000_sr_alias_set); - emit_move_insn (gen_rtx_REG (Pmode, 0), mem); } @@ -14807,9 +14774,7 @@ rs6000_emit_epilogue (int sibcall) { rtx addr = gen_rtx_PLUS (Pmode, frame_reg_rtx, GEN_INT (info->cr_save_offset + sp_offset)); - rtx mem = gen_rtx_MEM (SImode, addr); - - set_mem_alias_set (mem, rs6000_sr_alias_set); + rtx mem = gen_frame_mem (SImode, addr); emit_move_insn (gen_rtx_REG (SImode, 12), mem); } @@ -14828,9 +14793,7 @@ rs6000_emit_epilogue (int sibcall) { rtx addr = gen_rtx_PLUS (Pmode, frame_reg_rtx, GEN_INT (sp_offset + 5 * reg_size)); - rtx mem = gen_rtx_MEM (reg_mode, addr); - - set_mem_alias_set (mem, rs6000_sr_alias_set); + rtx mem = gen_frame_mem (reg_mode, addr); emit_move_insn (gen_rtx_REG (reg_mode, 2), mem); } @@ -14846,7 +14809,6 @@ rs6000_emit_epilogue (int sibcall) mem = gen_frame_mem_offset (reg_mode, frame_reg_rtx, info->ehrd_offset + sp_offset + reg_size * (int) i); - set_mem_alias_set (mem, rs6000_sr_alias_set); emit_move_insn (gen_rtx_REG (reg_mode, regno), mem); } @@ -14864,9 +14826,7 @@ rs6000_emit_epilogue (int sibcall) GEN_INT (info->gp_save_offset + sp_offset + reg_size * i)); - rtx mem = gen_rtx_MEM (reg_mode, addr); - - set_mem_alias_set (mem, rs6000_sr_alias_set); + rtx mem = gen_frame_mem (reg_mode, addr); RTVEC_ELT (p, i) = gen_rtx_SET (VOIDmode, @@ -14889,7 +14849,7 @@ rs6000_emit_epilogue (int sibcall) GEN_INT (info->gp_save_offset + sp_offset + reg_size * i)); - rtx mem = gen_rtx_MEM (reg_mode, addr); + rtx mem = gen_frame_mem (reg_mode, addr); /* Restore 64-bit quantities for SPE. */ if (TARGET_SPE_ABI && info->spe_64bit_regs_used != 0) @@ -14906,11 +14866,9 @@ rs6000_emit_epilogue (int sibcall) b = GEN_INT (offset); addr = gen_rtx_PLUS (Pmode, frame_reg_rtx, b); - mem = gen_rtx_MEM (V2SImode, addr); + mem = gen_frame_mem (V2SImode, addr); } - set_mem_alias_set (mem, rs6000_sr_alias_set); - emit_move_insn (gen_rtx_REG (reg_mode, info->first_gp_reg_save + i), mem); } @@ -14926,8 +14884,7 @@ rs6000_emit_epilogue (int sibcall) GEN_INT (info->fp_save_offset + sp_offset + 8 * i)); - mem = gen_rtx_MEM (DFmode, addr); - set_mem_alias_set (mem, rs6000_sr_alias_set); + mem = gen_frame_mem (DFmode, addr); emit_move_insn (gen_rtx_REG (DFmode, info->first_fp_reg_save + i), @@ -15047,8 +15004,7 @@ rs6000_emit_epilogue (int sibcall) rtx addr, mem; addr = gen_rtx_PLUS (Pmode, sp_reg_rtx, GEN_INT (info->fp_save_offset + 8*i)); - mem = gen_rtx_MEM (DFmode, addr); - set_mem_alias_set (mem, rs6000_sr_alias_set); + mem = gen_frame_mem (DFmode, addr); RTVEC_ELT (p, i+3) = gen_rtx_SET (VOIDmode,