Commit d18ad191 by Kazu Hirata Committed by Kazu Hirata

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
parent 01312d12
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;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment