Hello list,
The attached patch does two things for df_get_call_refs():
* First it uses HARD_REG_SETs for defs_generated and
regs_invalidated_by_call, instead of bitmaps. Replacing in total more than
400K calls (for my testcase) to bitmap_bit_p() with the much faster
TEST_HARD_REG_BIT, reduces the total instruction count from about 13M to
1.5M.
* Second it produces the REFs in REGNO order, which is important to keep the
collection_rec sorted most times, and avoid expensive calls to qsort().
Thanks to Paolo Bonzini for idea and mentoring.
The second part makes a big difference if accompanied with another patch in
df_insn_refs_collect(). I'll post a followup patch, that is unfortunately
unstable for some of my tests, so I'd appreciate any comments.