Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cranelift: remove non-egraphs optimization pipeline and use_egraphs option. #6167

Merged
merged 2 commits into from
Apr 6, 2023

Commits on Apr 6, 2023

  1. Cranelift: remove non-egraphs optimization pipeline and use_egraphs

    … option.
    
    This PR removes the LICM, GVN, and preopt passes, and associated support
    pieces, from `cranelift-codegen`. Not to worry, we still have
    optimizations: the egraph framework subsumes all of these, and has been
    on by default since bytecodealliance#5181.
    
    A few decision points:
    
    - Filetests for the legacy LICM, GVN and simple_preopt were removed too.
      As we built optimizations in the egraph framework we wrote new tests
      for the equivalent functionality, and many of the old tests were
      testing specific behaviors in the old implementations that may not be
      relevant anymore. However if folks prefer I could take a different
      approach here and try to port over all of the tests.
    
    - The corresponding filetest modes (commands) were deleted too. The
      `test alias_analysis` mode remains, but no longer invokes a separate
      GVN first (since there is no separate GVN that will not also do alias
      analysis) so the tests were tweaked slightly to work with that. The
      egrpah testsuite also covers alias analysis.
    
    - The `divconst_magic_numbers` module is removed since it's unused
      without `simple_preopt`, though this is the one remaining optimization
      we still need to build in the egraphs framework, pending bytecodealliance#5908. The
      magic numbers will live forever in git history so removing this in the
      meantime is not a major issue IMHO.
    
    - The `use_egraphs` setting itself was removed at both the Cranelift and
      Wasmtime levels. It has been marked deprecated for a few releases now
      (Wasmtime 6.0, 7.0, upcoming 8.0, and corresponding Cranelift
      versions) so I think this is probably OK. As an alternative if anyone
      feels strongly, we could leave the setting and make it a no-op.
    cfallin committed Apr 6, 2023
    Configuration menu
    Copy the full SHA
    e053597 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    128de73 View commit details
    Browse the repository at this point in the history