summaryrefslogtreecommitdiff
path: root/gcc/reload1.c
diff options
context:
space:
mode:
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2003-10-27 10:52:48 +0000
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2003-10-27 10:52:48 +0000
commitec96de93a5e8117a86cb6c7d50b45026a2416557 (patch)
treecf433ef961eba9a9d96687e329ae8e19971b3acd /gcc/reload1.c
parentb55f2ed817f050fe1b0b94a04e105ae511601fe7 (diff)
downloadgcc-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.c16
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 < &reg_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;