> But we should definitely have a way to register machine dependent > passes, and what's wrong with the plugin interface?
IIRC I asked about how to schedule that pass when I wrote it, and "use the plugin API" was the recommendation. Some background... The RL78 devirtualization pass is *not* a reorg pass, it has to happen after reload but before debug info is set up. The RL78 does not have a consistent register set or addressing scheme, GCC cannot practically support it. So RL78 uses a virtual register set and machine description until after reload, then copy data in and out of the virtual registers to physical registers depending on the operations required. The only way to get decent performance and reasonable debugging is to do that pass as soon after reload as possible, so the remaining optimizations can work with real registers. Basically, after the RL78 devirtualization pass, the RL78 is a completely different target machine.