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

rework the queries for the MIR pipeline #41625

Merged
merged 35 commits into from
May 3, 2017

Commits on May 2, 2017

  1. introduce mir_keys()

    Each MIR key is a DefId that has MIR associated with it
    nikomatsakis committed May 2, 2017
    Configuration menu
    Copy the full SHA
    0e5e2f3 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    11b6b06 View commit details
    Browse the repository at this point in the history
  3. simplify the MirPass traits and passes dramatically

    Overall goal: reduce the amount of context a mir pass needs so that it
    resembles a query.
    
    - The hooks are no longer "threaded down" to the pass, but rather run
      automatically from the top-level (we also thread down the current pass
      number, so that the files are sorted better).
      - The hook now receives a *single* callback, rather than a callback per-MIR.
    - The traits are no longer lifetime parameters, which moved to the
      methods -- given that we required
      `for<'tcx>` objecs, there wasn't much point to that.
    - Several passes now store a `String` instead of a `&'l str` (again, no
      point).
    nikomatsakis committed May 2, 2017
    Configuration menu
    Copy the full SHA
    46b342f View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    e9e6ccc View commit details
    Browse the repository at this point in the history
  5. rewrite Passes to have sets of passes

    Also, store the completed set of passes in the tcx.
    nikomatsakis committed May 2, 2017
    Configuration menu
    Copy the full SHA
    668886a View commit details
    Browse the repository at this point in the history
  6. move to only def-id passes

    this temporary disables `inline`
    nikomatsakis committed May 2, 2017
    Configuration menu
    Copy the full SHA
    f23a7bc View commit details
    Browse the repository at this point in the history
  7. retool MIR passes completely

    The new setup is as follows. There is a pipeline of MIR passes that each
    run **per def-id** to optimize a particular function. You are intended
    to request MIR at whatever stage you need it. At the moment, there is
    only one stage you can request:
    
    - `optimized_mir(def_id)`
    
    This yields the final product. Internally, it pulls the MIR for the
    given def-id through a series of steps. Right now, these are still using
    an "interned ref-cell" but they are intended to "steal" from one
    another:
    
    - `mir_build` -- performs the initial construction for local MIR
    - `mir_pass_set` -- performs a suite of optimizations and transformations
    - `mir_pass` -- an individual optimization within a suite
    
    So, to construct the optimized MIR, we invoke:
    
        mir_pass_set((MIR_OPTIMIZED, def_id))
    
    which will build up the final MIR.
    nikomatsakis committed May 2, 2017
    Configuration menu
    Copy the full SHA
    2b32cb9 View commit details
    Browse the repository at this point in the history
  8. rename MirPassSet to MirSuite

    This seems like a better noun.
    nikomatsakis committed May 2, 2017
    Configuration menu
    Copy the full SHA
    e89a321 View commit details
    Browse the repository at this point in the history
  9. introduce idea of "stealable" MIR

    This is a more principled version of the `RefCell` we were using
    before. We now allocate a `Steal<Mir<'tcx>>` for each intermediate MIR
    pass; when the next pass steals the entry, any later attempts to use it
    will panic (there is no way to *test* if MIR is stolen, you're just
    supposed to *know*).
    nikomatsakis committed May 2, 2017
    Configuration menu
    Copy the full SHA
    29263fd View commit details
    Browse the repository at this point in the history
  10. Configuration menu
    Copy the full SHA
    ecc8ff9 View commit details
    Browse the repository at this point in the history
  11. introduce IntoKeyValues trait to prepare for multi-queries

    The idea is that such queries will return `FxHashMap`
    nikomatsakis committed May 2, 2017
    Configuration menu
    Copy the full SHA
    3d1095c View commit details
    Browse the repository at this point in the history
  12. Configuration menu
    Copy the full SHA
    1d675ce View commit details
    Browse the repository at this point in the history
  13. convert the inline pass to use the new multi result

    This involves changing various details about that system,
    though the basic shape remains the same.
    nikomatsakis committed May 2, 2017
    Configuration menu
    Copy the full SHA
    a26e966 View commit details
    Browse the repository at this point in the history
  14. Configuration menu
    Copy the full SHA
    0d045d7 View commit details
    Browse the repository at this point in the history
  15. Configuration menu
    Copy the full SHA
    d9c8a2b View commit details
    Browse the repository at this point in the history
  16. Configuration menu
    Copy the full SHA
    532439f View commit details
    Browse the repository at this point in the history
  17. Configuration menu
    Copy the full SHA
    c1ff104 View commit details
    Browse the repository at this point in the history
  18. Configuration menu
    Copy the full SHA
    c2cfdbb View commit details
    Browse the repository at this point in the history
  19. Configuration menu
    Copy the full SHA
    69c8f9d View commit details
    Browse the repository at this point in the history
  20. Configuration menu
    Copy the full SHA
    c253df5 View commit details
    Browse the repository at this point in the history
  21. Configuration menu
    Copy the full SHA
    9c154a6 View commit details
    Browse the repository at this point in the history
  22. Configuration menu
    Copy the full SHA
    669d316 View commit details
    Browse the repository at this point in the history
  23. support inlining by asking for optimizer mir for callees

    I tested this with it enabled 100% of the time, and we were able to run
    mir-opt tests successfully.
    nikomatsakis committed May 2, 2017
    Configuration menu
    Copy the full SHA
    1dd9c3e View commit details
    Browse the repository at this point in the history
  24. Configuration menu
    Copy the full SHA
    851a880 View commit details
    Browse the repository at this point in the history
  25. Configuration menu
    Copy the full SHA
    2fa1ba3 View commit details
    Browse the repository at this point in the history
  26. delete dead code

    nikomatsakis committed May 2, 2017
    Configuration menu
    Copy the full SHA
    74b2783 View commit details
    Browse the repository at this point in the history
  27. Configuration menu
    Copy the full SHA
    c7023d1 View commit details
    Browse the repository at this point in the history
  28. Configuration menu
    Copy the full SHA
    393fa4f View commit details
    Browse the repository at this point in the history
  29. Configuration menu
    Copy the full SHA
    b0092e8 View commit details
    Browse the repository at this point in the history
  30. Configuration menu
    Copy the full SHA
    0afcfce View commit details
    Browse the repository at this point in the history
  31. Configuration menu
    Copy the full SHA
    15bc2f4 View commit details
    Browse the repository at this point in the history
  32. Configuration menu
    Copy the full SHA
    e6793ac View commit details
    Browse the repository at this point in the history
  33. fix librustc_driver

    nikomatsakis committed May 2, 2017
    Configuration menu
    Copy the full SHA
    afc5acd View commit details
    Browse the repository at this point in the history
  34. Configuration menu
    Copy the full SHA
    25be798 View commit details
    Browse the repository at this point in the history
  35. add FIXME to Steal

    nikomatsakis committed May 2, 2017
    1 Configuration menu
    Copy the full SHA
    488b2a3 View commit details
    Browse the repository at this point in the history