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