https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119099

Jeffrey A. Law <law at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |vineetg at rivosinc dot com

--- Comment #4 from Jeffrey A. Law <law at gcc dot gnu.org> ---
So since in came up in the patchwork meeting today I figured a bit of a summary
of my morning's findings.


The reason I can't find the assert is I think *I* took it out at some point. 
Regardless we can't have the sets expanding and contracting as it'd be a
nightmare to prove convergence.

What I was looking at was something like this Alexey:

diff --git a/gcc/ext-dce.cc b/gcc/ext-dce.cc
index e257e3bc873..5866cc0a3b8 100644
--- a/gcc/ext-dce.cc
+++ b/gcc/ext-dce.cc
@@ -1092,13 +1092,7 @@ ext_dce_rd_transfer_n (int bb_index)
   /* We may have narrowed the set of live objects at the start
      of this block.  If so, update the bitmaps and indicate to
      the generic dataflow code that something changed.  */
-  if (!bitmap_equal_p (&livein[bb_index], livenow))
-    {
-      bitmap_copy (&livein[bb_index], livenow);
-      return true;
-    }
-
-  return false;
+  return bitmap_ior_into (&livein[bb_index], livenow);
 }

 /* Dummy function for the df_simple_dataflow API.  */


That should result in the livein sets never contracting.  That API will return
a boolean indicating if that livein set actually changed.  Now I just have to
see if there's any fallout.

--


There's a *ton* of cleanup that can/should be done in here.  I've got a rewrite
of the process_sets code that cleans it up considerably.  But what worries me
much more is the process_uses code which is beyond bad in its
design/implementation.

Reply via email to