aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/mips
diff options
context:
space:
mode:
authormerrill <merrill@138bc75d-0d04-0410-961f-82ee72b054a4>1996-12-09 22:31:23 +0000
committermerrill <merrill@138bc75d-0d04-0410-961f-82ee72b054a4>1996-12-09 22:31:23 +0000
commit6efd403b19c0f3ad3ecd12422e1cec66197eaba8 (patch)
tree85d261767b8a92bfcd79dacffefca2f442d5cf06 /gcc/config/mips
parent1ae4569e70ac01cd2ac48d59007f1ca5ac6f0c74 (diff)
x
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@13258 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/mips')
-rw-r--r--gcc/config/mips/mips.c67
-rw-r--r--gcc/config/mips/t-iris61
2 files changed, 59 insertions, 9 deletions
diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c
index 10545bb5bd1..c3a3b2d8580 100644
--- a/gcc/config/mips/mips.c
+++ b/gcc/config/mips/mips.c
@@ -4940,7 +4940,7 @@ compute_frame_size (size)
+ gp_reg_rounded + fp_reg_size
- fp_inc * UNITS_PER_FPREG);
current_frame_info.fp_sp_offset = offset;
- current_frame_info.fp_save_offset = offset - total_size + UNITS_PER_WORD;
+ current_frame_info.fp_save_offset = offset - total_size;
}
else
{
@@ -5066,7 +5066,25 @@ save_restore_insns (store_p, large_reg, large_offset, file)
GEN_INT (gp_offset - base_offset)));
if (store_p)
- emit_move_insn (mem_rtx, reg_rtx);
+ {
+ rtx insn = emit_move_insn (mem_rtx, reg_rtx);
+
+ if (write_symbols == DWARF2_DEBUG)
+ {
+ int offset = (gp_offset
+ - current_frame_info.total_size);
+ if (regno == GP_REG_FIRST + 31)
+ REG_NOTES (insn)
+ = gen_rtx (EXPR_LIST, REG_RETURN_SAVE,
+ GEN_INT (offset), REG_NOTES (insn));
+ else
+ REG_NOTES (insn)
+ = gen_rtx (EXPR_LIST, REG_SAVE,
+ gen_rtx (EXPR_LIST, VOIDmode, reg_rtx,
+ GEN_INT (offset)),
+ REG_NOTES (insn));
+ }
+ }
else if (!TARGET_ABICALLS || mips_abi != ABI_32
|| regno != (PIC_OFFSET_TABLE_REGNUM - GP_REG_FIRST))
emit_move_insn (reg_rtx, mem_rtx);
@@ -5179,7 +5197,20 @@ save_restore_insns (store_p, large_reg, large_offset, file)
GEN_INT (fp_offset - base_offset)));
if (store_p)
- emit_move_insn (mem_rtx, reg_rtx);
+ {
+ rtx insn = emit_move_insn (mem_rtx, reg_rtx);
+
+ if (write_symbols == DWARF2_DEBUG)
+ {
+ int offset = (gp_offset
+ - current_frame_info.total_size);
+ REG_NOTES (insn)
+ = gen_rtx (EXPR_LIST, REG_SAVE,
+ gen_rtx (EXPR_LIST, VOIDmode, reg_rtx,
+ GEN_INT (offset)),
+ REG_NOTES (insn));
+ }
+ }
else
emit_move_insn (reg_rtx, mem_rtx);
}
@@ -5405,6 +5436,8 @@ mips_expand_prologue ()
/* If we are doing svr4-abi, sp move is done by function_prologue. */
if (!TARGET_ABICALLS || mips_abi != ABI_32)
{
+ rtx insn;
+
if (tsize > 32767)
{
tmp_rtx = gen_rtx (REG, Pmode, MIPS_TEMP1_REGNUM);
@@ -5413,21 +5446,37 @@ mips_expand_prologue ()
}
if (TARGET_LONG64)
- emit_insn (gen_subdi3 (stack_pointer_rtx, stack_pointer_rtx,
- tsize_rtx));
+ insn = emit_insn (gen_subdi3 (stack_pointer_rtx, stack_pointer_rtx,
+ tsize_rtx));
else
- emit_insn (gen_subsi3 (stack_pointer_rtx, stack_pointer_rtx,
- tsize_rtx));
+ insn = emit_insn (gen_subsi3 (stack_pointer_rtx, stack_pointer_rtx,
+ tsize_rtx));
+
+ if (write_symbols == DWARF2_DEBUG)
+ REG_NOTES (insn)
+ = gen_rtx (EXPR_LIST, REG_FRAME,
+ gen_rtx (PLUS, VOIDmode, stack_pointer_rtx,
+ GEN_INT (tsize)),
+ REG_NOTES (insn));
}
save_restore_insns (TRUE, tmp_rtx, tsize, (FILE *)0);
if (frame_pointer_needed)
{
+ rtx insn;
+
if (TARGET_64BIT)
- emit_insn (gen_movdi (frame_pointer_rtx, stack_pointer_rtx));
+ insn= emit_insn (gen_movdi (frame_pointer_rtx, stack_pointer_rtx));
else
- emit_insn (gen_movsi (frame_pointer_rtx, stack_pointer_rtx));
+ insn= emit_insn (gen_movsi (frame_pointer_rtx, stack_pointer_rtx));
+
+ if (write_symbols == DWARF2_DEBUG)
+ REG_NOTES (insn)
+ = gen_rtx (EXPR_LIST, REG_FRAME,
+ gen_rtx (PLUS, VOIDmode, frame_pointer_rtx,
+ GEN_INT (tsize)),
+ REG_NOTES (insn));
}
if (TARGET_ABICALLS && mips_abi != ABI_32)
diff --git a/gcc/config/mips/t-iris6 b/gcc/config/mips/t-iris6
index e8314592245..85a63f06e2e 100644
--- a/gcc/config/mips/t-iris6
+++ b/gcc/config/mips/t-iris6
@@ -17,3 +17,4 @@ INSTALL_LIBGCC = install-multilib
# end labels to the .ctors and .dtors section when we link using gcc.
EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o
+CRTSTUFF_T_CFLAGS=-g1