diff options
author | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-10-27 10:52:48 +0000 |
---|---|---|
committer | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-10-27 10:52:48 +0000 |
commit | ec96de93a5e8117a86cb6c7d50b45026a2416557 (patch) | |
tree | cf433ef961eba9a9d96687e329ae8e19971b3acd /gcc/reload1.c | |
parent | b55f2ed817f050fe1b0b94a04e105ae511601fe7 (diff) | |
download | gcc-ec96de93a5e8117a86cb6c7d50b45026a2416557.tar.gz |
* reload1.c (struct elim_table): Change offset, initial_offset and
previous_offset fields to HOST_WIDE_INT.
(offsets_at): Change from int to HOST_WIDE_INT.
(reload): Adjust offsets_at initialization.
(eliminate_regs_in_insn): Change type of offset to HOST_WIDE_INT.
(verify_initial_elim_offsets): Change type of t to HOST_WIDE_INT.
* config/i386/i386.c (ix86_compute_frame_layout): Change offset type
to HOST_WIDE_INT. Don't save regs using mov for huge frame sizes
if TARGET_64BIT.
(pro_epilogue_adjust_stack): New function.
(ix86_expand_prologue, ix86_expand_epilogue): Use it.
* config/i386/i386.md (pro_epilogue_adjust_stack): Remove.
(pro_epilogue_adjust_stack_1): Remove * in front of name.
(pro_epilogue_adjust_stack_rex64): Handle -2147483648 properly.
(pro_epilogue_adjust_stack_rex64_2): New insn.
* config/i386/i386.c (ix86_expand_epilogue): Fix comment typo.
* config/i386/i386.c (ix86_expand_call): Replace 40 with
FIRST_REX_INT_REG + 3 /* R11 */.
* gcc.c-torture/compile/20031023-1.c: New test.
* gcc.c-torture/compile/20031023-2.c: New test.
* gcc.c-torture/compile/20031023-3.c: New test.
* gcc.c-torture/compile/20031023-4.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@72975 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/reload1.c')
-rw-r--r-- | gcc/reload1.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/gcc/reload1.c b/gcc/reload1.c index ecab52b68ee..717489f3216 100644 --- a/gcc/reload1.c +++ b/gcc/reload1.c @@ -293,12 +293,12 @@ struct elim_table { int from; /* Register number to be eliminated. */ int to; /* Register number used as replacement. */ - int initial_offset; /* Initial difference between values. */ + HOST_WIDE_INT initial_offset; /* Initial difference between values. */ int can_eliminate; /* Nonzero if this elimination can be done. */ int can_eliminate_previous; /* Value of CAN_ELIMINATE in previous scan over insns made by reload. */ - int offset; /* Current offset between the two regs. */ - int previous_offset; /* Offset at end of previous insn. */ + HOST_WIDE_INT offset; /* Current offset between the two regs. */ + HOST_WIDE_INT previous_offset;/* Offset at end of previous insn. */ int ref_outside_mem; /* "to" has been referenced outside a MEM. */ rtx from_rtx; /* REG rtx for the register to be eliminated. We cannot simply compare the number since @@ -352,7 +352,7 @@ static int num_eliminable_invariants; static int first_label_num; static char *offsets_known_at; -static int (*offsets_at)[NUM_ELIMINABLE_REGS]; +static HOST_WIDE_INT (*offsets_at)[NUM_ELIMINABLE_REGS]; /* Number of labels in the current function. */ @@ -816,7 +816,7 @@ reload (rtx first, int global) allocate would occasionally cause it to exceed the stack limit and cause a core dump. */ offsets_known_at = xmalloc (num_labels); - offsets_at = xmalloc (num_labels * NUM_ELIMINABLE_REGS * sizeof (int)); + offsets_at = xmalloc (num_labels * NUM_ELIMINABLE_REGS * sizeof (HOST_WIDE_INT)); /* Alter each pseudo-reg rtx to contain its hard reg number. Assign stack slots to the pseudos that lack hard regs or equivalents. @@ -2897,7 +2897,7 @@ eliminate_regs_in_insn (rtx insn, int replace) { rtx base = SET_SRC (old_set); rtx base_insn = insn; - int offset = 0; + HOST_WIDE_INT offset = 0; while (base != ep->to_rtx) { @@ -2980,7 +2980,7 @@ eliminate_regs_in_insn (rtx insn, int replace) && REGNO (XEXP (SET_SRC (old_set), 0)) < FIRST_PSEUDO_REGISTER) { rtx reg = XEXP (SET_SRC (old_set), 0); - int offset = INTVAL (XEXP (SET_SRC (old_set), 1)); + HOST_WIDE_INT offset = INTVAL (XEXP (SET_SRC (old_set), 1)); for (ep = reg_eliminate; ep < ®_eliminate[NUM_ELIMINABLE_REGS]; ep++) if (ep->from_rtx == reg && ep->can_eliminate) @@ -3263,7 +3263,7 @@ mark_not_eliminable (rtx dest, rtx x, void *data ATTRIBUTE_UNUSED) static void verify_initial_elim_offsets (void) { - int t; + HOST_WIDE_INT t; #ifdef ELIMINABLE_REGS struct elim_table *ep; |