Hi all,

with the new plugin infrastructure, it makes sense to replace the one-catches-all md reorg pass with target-specific passes plugged into the pass manager.

If the md reorg is doing just complex peephole optimizations that cannot be achieved with targets, that's fine.

This has the advantage of being able to move passes where they really belong. Many targets could benefit:

- Blackfin, IA64 and picochip is doing clever tricks to move splitting, sched2 and vartracking in the middle of its reorg

- MEP doesn't do the same tricks with vartracking, but also requires dataflow

- MIPS also could be split in several passes with nice dumps, eliminating crtl->dbr_scheduled_p which is there just to place delay-slot scheduling in the middle of md reorg

- i386... md reorg is sane and it is already doing plugin-style pass registration... but what about moving reg-stack.c to config/i386? :-)

- the split passes are a mess and some targets split again at the beginning of reorg -- having separate dumps would be nice (s390)

- there's also M68HC11 and SH... well, I doubt there will be volunteers.

- for SPU, there is an additional scheduling pass done as part of md_reorg; again, splitting dumps would be nice and in addition I wonder if doing sched2+this pass is really necessary if more pass placement freedom is given to the backend.

At the same time, it would be nice to free the CFG only for targets that absolutely abhor it (doing so in their own md reorg pass) rather than doing it for all targets.

Paolo

Reply via email to