diff options
| author | Niko Matsakis <niko@alum.mit.edu> | 2017-01-28 06:34:07 -0500 |
|---|---|---|
| committer | Niko Matsakis <niko@alum.mit.edu> | 2017-02-02 20:48:49 -0500 |
| commit | 78f7ac561c0b360650b36a175f39475bc237230f (patch) | |
| tree | b5659f1a520605e14b15aebc4f113e623ad7ae83 /src/test/run-pass/thinlto | |
| parent | fdd7e3c74419385541e2ba244117e7aa65f72a01 (diff) | |
| download | rust-78f7ac561c0b360650b36a175f39475bc237230f.tar.gz rust-78f7ac561c0b360650b36a175f39475bc237230f.zip | |
rejigger how we handle used trait imports
The previous way was not friendly to incremental compilation. The new plan is to compute, for each body, a set of trait imports used in that body (slightly subtle: for a closure, we assign the trait imports to the enclosing fn). Then we walk all bodies and union these sets. The reason we do this is that we can save the individual sets in the incremental state, and then recompute only those sets that are needed. Before we were planning to save only the final union, but in that case if some components are invalidated we have to recompute *all* of them since we don't have enough information to "partly" invalidate a result. In truth, this set probably ought to be part of the `TypeckTables`; however, I opted not to do that because I don't want to have to save/restore the entire tables in the incremental state yet (since it contains a lot of `NodeId` references, and removing those is a significant refactoring).
Diffstat (limited to 'src/test/run-pass/thinlto')
0 files changed, 0 insertions, 0 deletions
