target/10205: Incorrect code generated for H8300 "normal" mode
Dhananjay R. Deshpande
dhananjayd@kpit.com
Fri Mar 28 07:56:00 GMT 2003
The following reply was made to PR target/10205; it has been noted by GNATS.
From: "Dhananjay R. Deshpande" <dhananjayd@kpit.com>
To: <kazu@gcc.gnu.org>,
<gcc-bugs@gcc.gnu.org>,
<mnmoran@bellsouth.net>,
<gcc-gnats@gcc.gnu.org>,
<gcc-patches@gcc.gnu.org>
Cc: "Kazu Hirata" <kazu@cs.umass.edu>
Subject: Re: target/10205: Incorrect code generated for H8300 "normal" mode
Date: Fri, 28 Mar 2003 13:01:11 +0530
Hi,
>Synopsis: Incorrect code generated for H8300 "normal" mode
>State-Changed-From-To: open->analyzed
>State-Changed-By: kazu
>State-Changed-When: Thu Mar 27 19:59:48 2003
>State-Changed-Why:
> Still present in mainline. Here is a smaller testcase.
=20
The patch below fixes this. If it is OK, it should be applied to both =
mainline=20
and 3.3 branch.
- Dhannajay
Changelog
2003-03-28 Dhananjay Deshpande <dhananjayd@kpit.com>
PR target/10205
* config/h8300/h8300.c (h8300_initial_elimination_offset): =
Remove hack in=20
adjustment of offset for normal mode.
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D
--- h8300.c.orig Fri Mar 28 12:07:21 2003
+++ h8300.c Fri Mar 28 12:04:57 2003
@@ -1717,7 +1717,8 @@ h8300_initial_elimination_offset (from,=20
int offset =3D 0;
=20
if (from =3D=3D ARG_POINTER_REGNUM && to =3D=3D FRAME_POINTER_REGNUM)
- offset =3D UNITS_PER_WORD + frame_pointer_needed * UNITS_PER_WORD;
+ offset =3D (POINTER_SIZE / BITS_PER_UNIT) + frame_pointer_needed *
+ UNITS_PER_WORD;
else if (from =3D=3D RETURN_ADDRESS_POINTER_REGNUM && to =3D=3D =
FRAME_POINTER_REGNUM)
offset =3D frame_pointer_needed * UNITS_PER_WORD;
else
@@ -1734,11 +1735,8 @@ h8300_initial_elimination_offset (from,=20
offset +=3D round_frame_size (get_frame_size ());
=20
if (from =3D=3D ARG_POINTER_REGNUM && to =3D=3D =
STACK_POINTER_REGNUM)
- offset +=3D UNITS_PER_WORD; /* Skip saved PC */
+ offset +=3D (POINTER_SIZE / BITS_PER_UNIT); /* Skip saved =
PC */
}
-
- if ((TARGET_H8300H || TARGET_H8300S) && TARGET_NORMAL_MODE)
- offset -=3D 2;
=20
return offset;
}
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D
More information about the Gcc-prs
mailing list