[Bug rtl-optimization/66790] Invalid uninitialized register handling in REE
bernds at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Sep 23 10:25:00 GMT 2015
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.
More information about the Gcc-bugs
mailing list