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] |
All I can see in cfgcleanup or cfgrtl are manual calls to df_set_bb_dirty to show we don't know anything about register lives in modified blocks. This is also done by my new pass if it modifies stuff.
So we've got the markers to allow us to do a deferred update, but with nothing needing the accurate DF info in the cfgcleanup loop, we just ignore the markers (within the context of that loop). Which certainly makes sense if nothing in cfgcleanup has needed accurate register lifetime until now.
I'm having an awful hard time seeing what modeling this optimization as a series of CFG manipulations is going to win us right now. It's more complex than using reorder_insns, it doesn't keep the DF information up-to-date, and generates unnecessary churn in the CFG and other data structures.
if (block_was_dirty) { gcc_assert (mode & CLEANUP_CROSSJUMP); df_analyze (); }
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |