https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92410
--- Comment #7 from Matthew Malcomson <matmal01 at gcc dot gnu.org> --- (In reply to Matthew Malcomson from comment #6) > I'm not sure whether there's any pre-existing "should not use dataflow > queries on notes" rule. If there is, then the > regstat_bb_compute_calls_crossed function should be modified to check for > NONDEBUG_INSN_P and continue earlier on its loop. I now see that `df_bb_refs_record` generates insn info for notes (but leaves it mostly zeroed out). I figure doing the same for the notes emitted by `reemit_notes` seems reasonable. Currently bootstrapping and regtesting (both with HWASAN and without) the following patch. diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c index 41cf1f3..2e1a84f 100644 --- a/gcc/haifa-sched.c +++ b/gcc/haifa-sched.c @@ -5433,6 +5433,7 @@ reemit_notes (rtx_insn *insn) last = emit_note_before (note_type, last); remove_note (insn, note); + df_insn_create_insn_record (last); } } } diff --git a/gcc/regstat.c b/gcc/regstat.c index 4da9b7c..c6cefb11 100644 --- a/gcc/regstat.c +++ b/gcc/regstat.c @@ -324,6 +324,7 @@ regstat_bb_compute_calls_crossed (unsigned int bb_index, bitmap live) FOR_BB_INSNS_REVERSE (bb, insn) { + gcc_assert (INSN_UID (insn) < DF_INSN_SIZE ()); struct df_insn_info *insn_info = DF_INSN_INFO_GET (insn); unsigned int regno;