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.