https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66790
--- Comment #36 from Bernd Schmidt <bernds at gcc dot gnu.org> --- 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? if (DF_REF_FLAGS_IS_SET (def, DF_REF_MUST_CLOBBER | DF_REF_MAY_CLOBBER)) { bitmap_set_bit (kill, regno); bitmap_clear_bit (gen, regno); } /* In the worst case, partial and conditional defs can leave bits uninitialized, so assume they do not change anything. */ else if (!DF_REF_FLAGS_IS_SET (def, DF_REF_PARTIAL | DF_REF_CONDITIONAL)) { bitmap_set_bit (gen, regno); bitmap_clear_bit (kill, regno); } 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.