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

Alex Coplan <acoplan at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
           Assignee|unassigned at gcc dot gnu.org      |acoplan at gcc dot 
gnu.org

--- Comment #6 from Alex Coplan <acoplan at gcc dot gnu.org> ---
So I'm testing the following to do this (which so far survives bootstrap on
aarch64):

diff --git a/gcc/df-problems.cc b/gcc/df-problems.cc
index f32185b3eac..a7f9eae10d3 100644
--- a/gcc/df-problems.cc
+++ b/gcc/df-problems.cc
@@ -3895,7 +3895,9 @@ df_simulate_defs (rtx_insn *insn, bitmap live)

       /* If the def is to only part of the reg, it does
         not kill the other defs that reach here.  */
-      if (!(DF_REF_FLAGS (def) & (DF_REF_PARTIAL | DF_REF_CONDITIONAL)))
+      if (DF_REF_FLAGS (def) & (DF_REF_PARTIAL | DF_REF_CONDITIONAL))
+       bitmap_set_bit (live, dregno);
+      else
        bitmap_clear_bit (live, dregno);
     }
 }

Reply via email to