This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[new-ra] fix x86 gnatlib_and_tools


Hi,

I usually forget to do an make gnatlib_and_tools for my bootstrap, instead
I'm just bootstrapping.  Now I did this, there was an error, this fixes
it.

Bootstrapped all langs minus treelang on i686-linux.  (Hmm,
gnatlib_and_tools still doesn't work, though ...)


Ciao,
Michael.
-- 
        * ra-build.c (live_out_1): Join the undefinedness in the trace.
        (livethrough_conflicts_bb): Check also for has_memset.

Index: ra-build.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/ra-build.c,v
retrieving revision 1.1.2.23
diff -u -p -r1.1.2.23 ra-build.c
--- ra-build.c	16 Oct 2003 19:08:59 -0000	1.1.2.23
+++ ra-build.c	27 Oct 2003 16:10:11 -0000
@@ -728,9 +728,23 @@ live_out_1 (struct df *df ATTRIBUTE_UNUS
   int uid = INSN_UID (insn);
   struct web_part *wp = use->wp;

-  /* Mark, that this insn needs this webpart live.  */
-  visit_trace[uid].wp = wp;
-  visit_trace[uid].undefined = use->undefined;
+  /* Mark, that this insn needs this webpart live.  Carefull that we
+     don't delete some trace from other parts of the current web, because
+     then the visiting order of insns depends on the order of the uses,
+     which could change in later passes.  This can lead to different
+     numbers in for instance the num_call member.  */
+  if (visit_trace[uid].wp
+      && DF_REF_REGNO (visit_trace[uid].wp->ref) == use->regno)
+    {
+      union_web_parts (visit_trace[uid].wp, use->wp);
+      visit_trace[uid].wp = wp;
+      visit_trace[uid].undefined |= use->undefined;
+    }
+  else
+    {
+      visit_trace[uid].wp = wp;
+      visit_trace[uid].undefined = use->undefined;
+    }

   if (INSN_P (insn))
     {
@@ -1147,7 +1161,8 @@ livethrough_conflicts_bb (basic_block bb

   /* And now, if we have found anything, make all live_through
      uses conflict with all defs, and update their other members.  */
-  if (deaths > 0 || contains_call || bitmap_first_set_bit (all_defs) >= 0)
+  if (deaths > 0 || contains_call || has_memset
+      || bitmap_first_set_bit (all_defs) >= 0)
     EXECUTE_IF_SET_IN_BITMAP (info->live_throughout, first, use_id,
       {
         struct web_part *wp = &web_parts[df->def_id + use_id];


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]