]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR target/10205 (Incorrect code generated for H8300 "normal" mode)
authorKazu Hirata <kazu@cs.umass.edu>
Fri, 28 Mar 2003 15:18:11 +0000 (15:18 +0000)
committerKazu Hirata <kazu@gcc.gnu.org>
Fri, 28 Mar 2003 15:18:11 +0000 (15:18 +0000)
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

gcc/ChangeLog
gcc/config/h8300/h8300.c

index 581d7588aff95beea960f9c2da263daa643b1e56..c4d4d6bc9fad3bb524b89099ff40dbebd273b2fb 100644 (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
index 191bccc27711d26f39504df604c49634152a6ba9..cfbb9590ea52a743bad6c6e6b3f25ee0b79defb4 100644 (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;
 }