https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66790
--- Comment #38 from Pierre-Marie de Rodat <derodat at adacore dot com> --- (In reply to Paolo Bonzini from comment #35) > Is this comment obsolete? The IN bitmap is all set at first. Yes, indeed: I removed the part you quoted. (In reply to Paolo Bonzini from comment #35) > Otherwise looks good. Thank you! Does this include the DF_LIVE fix? (In reply to Bernd Schmidt from comment #36) > This looks better. I still don't quite understand why you're treating > MUST_CLOBBER and MAY_CLOBBER defs differently in simulate. It looks > like a MUST_CLOBBER produces a bit in gen which I think is not what is > wanted. > > Anything wrong with writing this simply as follows? (In reply to Paolo Bonzini from comment #37) > Bernd is right that you have a missing 'else'. Pastos strike back! I updated df_mir_simulate_one_insn according to your suggestion: thank you. Besides, Eric told me live that instead of artificially clearing the entry basic block’s IN set, we could use the confluence_0 for that. I did this and took this opportunity to minimize code duplication: the df_mir_init function now just calls df_mir_reset. > And, not as a requirement for your patch, but as a point for > discussion - do we want a special all_ones_bitmap that doesn't take up > memory for purposes like this? It would add two additional tests to > each bitmap_{and,ior} operation. Good point, although what would the following yield, then? bitmap_clear (res); bitmap_set_bit (res, 1); bitmap_and_into (res, all_ones_bitmap); I mean: we would need to represent bitmaps will all bits set but one (and by extension: all but several). Anyway, here's the updated patch, bootstrapped and regtested again on x86_64-linux (plus a new testcase in gnat.dg). By the way, there's still the MIR name, as we did not reach a consensus about a better name.