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:
Kazu Hirata 2003-03-28 15:18:11 +00:00 committed by Kazu Hirata
parent 01312d1259
commit d18ad19175
2 changed files with 12 additions and 5 deletions

View File

@ -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

View File

@ -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;
}