This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
Hello,
In the test case for PR54146, build_insn_chain spends almost all its
time in this loop:
FOR_EACH_BB_REVERSE (bb)
{
bitmap_iterator bi;
rtx insn;
CLEAR_REG_SET (live_relevant_regs);
--> memset (live_subregs_used, 0, max_regno * sizeof (int));
The test case has >400,000 basic blocks and >1,000,000 regs...
Fortunately this can be done much more efficiently if one realizes
that an sbitmap knows its own size (using SBITMAP_SIZE that I
introduced recently). With that, live_subregs_used can be a sparse
bitmap.
Bootstrapped&tested on x86_64-unknown-linux-gnu. OK for trunk?
Ciao!
Steven
Attachment:
PR54146_reload.diff
Description: Binary data
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |