wasmtime icon indicating copy to clipboard operation
wasmtime copied to clipboard

cranelift: Delete redundant DCE optimization pass

Open jameysharp opened this issue 5 months ago • 2 comments

The egraph pass and the dead-code elimination pass both remove instructions whose results are unused. If the optimization level is "none", neither pass runs, and if it's anything else both passes run. I don't think we should do this work twice.

Note that the DCE pass is different than the "eliminate unreachable code" pass, which removes entire blocks that are unreachable from the entry block. That pass might still be necessary.

@cfallin, what do you think? There's some advantage to not calling simplify on instructions that we can quickly prove are unused, but is it worth keeping a redundant pass around for that?

jameysharp avatar Mar 23 '24 01:03 jameysharp

IIRC, the "legacy" passes we call before egraph opt are the ones that are important for compile time, or at least were when egraph opt was introduced. Basically as you said: better not to invoke ISLE at all if code is unused (and egraph's natural DCE comes only during elaboration after that). Would you mind measuring the compile-time impact of this? It's always possible things are better now of course!

cfallin avatar Mar 23 '24 03:03 cfallin