[PATCH] Fixing m68hc11 reorg after dataflow merge

Rask Ingemann Lambertsen rask@sygehus.dk
Sun Jun 17 01:36:00 GMT 2007


On Sat, Jun 16, 2007 at 01:25:33PM -0700, Seongbae Park (박성배, 朴成培) wrote:
> On 6/16/07, Rask Ingemann Lambertsen <rask@sygehus.dk> wrote:
> >   I need some help making m68hc11_reorg() work after the dataflow merge, 
> >   in
> >particular this bit:
[snip]

> Try:
> 
> df_note_add_problem ();
> df_analyze ();

   With this patch, I can at least build cc1. It dies compiling libgcc,

/n/08/rask/src/gcc/libgcc/../gcc/libgcc2.c: In function '__muldi3':
/n/08/rask/src/gcc/libgcc/../gcc/libgcc2.c:566: internal compiler error: in df_refs_verify, at df-scan.c:4066

but it is a start.

2007-06-17  Rask Ingemann Lambertsen  <rask@sygehus.dk>

	* config/m68hc11/m68hc11.c: Include dataflow header file.
	(m68hc11_reorg): Port to dataflow.

Index: gcc/config/m68hc11/m68hc11.c
===================================================================
--- gcc/config/m68hc11/m68hc11.c	(revision 125635)
+++ gcc/config/m68hc11/m68hc11.c	(working copy)
@@ -59,6 +59,7 @@ Note:
 #include "reload.h"
 #include "target.h"
 #include "target-def.h"
+#include "df.h"
 
 static void emit_move_after_reload (rtx, rtx, rtx);
 static rtx simplify_logical (enum machine_mode, int, rtx, rtx *);
@@ -5004,7 +5005,7 @@ static void
 m68hc11_reorg (void)
 {
   int split_done = 0;
-  rtx insn, first;
+  rtx first;
 
   z_replacement_completed = 0;
   z_reg = gen_rtx_REG (HImode, HARD_Z_REGNUM);
@@ -5036,29 +5037,8 @@ m68hc11_reorg (void)
      description to use the best assembly directives.  */
   if (optimize)
     {
-      /* Before recomputing the REG_DEAD notes, remove all of them.
-         This is necessary because the reload_cse_regs() pass can
-         have replaced some (MEM) with a register.  In that case,
-         the REG_DEAD that could exist for that register may become
-         wrong.  */
-      for (insn = first; insn; insn = NEXT_INSN (insn))
-        {
-          if (INSN_P (insn))
-            {
-              rtx *pnote;
-
-              pnote = &REG_NOTES (insn);
-              while (*pnote != 0)
-                {
-                  if (REG_NOTE_KIND (*pnote) == REG_DEAD)
-                    *pnote = XEXP (*pnote, 1);
-                  else
-                    pnote = &XEXP (*pnote, 1);
-                }
-            }
-        }
-
-      life_analysis (PROP_REG_INFO | PROP_DEATH_NOTES);
+      df_note_add_problem ();
+      df_analyze ();
     }
 
   z_replacement_completed = 2;

-- 
Rask Ingemann Lambertsen



More information about the Gcc-patches mailing list