re PR target/10205 (Incorrect code generated for H8300 "normal" mode)
PR target/10205 * config/h8300/h8300.c (h8300_initial_elimination_offset): Correct the offset computation when TARGET_NORMAL. Co-Authored-By: Dhananjay R. Deshpande <dhananjayd@kpit.com> From-SVN: r64975
This commit is contained in:
parent
01312d1259
commit
d18ad19175
@ -1,3 +1,10 @@
|
||||
2003-03-28 Kazu Hirata <kazu@cs.umass.edu>,
|
||||
Dhananjay Deshpande <dhananjayd@kpit.com>
|
||||
|
||||
PR target/10205
|
||||
* config/h8300/h8300.c (h8300_initial_elimination_offset):
|
||||
Correct the offset computation when TARGET_NORMAL.
|
||||
|
||||
2003-03-28 Eric Botcazou <ebotcazou@libertysurf.fr>
|
||||
|
||||
PR target/10067
|
||||
|
@ -1715,9 +1715,11 @@ h8300_initial_elimination_offset (from, to)
|
||||
int from, to;
|
||||
{
|
||||
int offset = 0;
|
||||
/* The number of bytes that the return address takes on the stack. */
|
||||
int pc_size = POINTER_SIZE / BITS_PER_UNIT;
|
||||
|
||||
if (from == ARG_POINTER_REGNUM && to == FRAME_POINTER_REGNUM)
|
||||
offset = UNITS_PER_WORD + frame_pointer_needed * UNITS_PER_WORD;
|
||||
offset = pc_size + frame_pointer_needed * UNITS_PER_WORD;
|
||||
else if (from == RETURN_ADDRESS_POINTER_REGNUM && to == FRAME_POINTER_REGNUM)
|
||||
offset = frame_pointer_needed * UNITS_PER_WORD;
|
||||
else
|
||||
@ -1734,12 +1736,10 @@ h8300_initial_elimination_offset (from, to)
|
||||
offset += round_frame_size (get_frame_size ());
|
||||
|
||||
if (from == ARG_POINTER_REGNUM && to == STACK_POINTER_REGNUM)
|
||||
offset += UNITS_PER_WORD; /* Skip saved PC */
|
||||
/* Skip saved PC. */
|
||||
offset += pc_size;
|
||||
}
|
||||
|
||||
if ((TARGET_H8300H || TARGET_H8300S) && TARGET_NORMAL_MODE)
|
||||
offset -= 2;
|
||||
|
||||
return offset;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user