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