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); } }