-
Notifications
You must be signed in to change notification settings - Fork 13k
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
Add initial version of codegen unit partitioning for incremental compilation. #32779
Conversation
r? @pnkfelix (rust_highfive has picked a reviewer for you, use r? to override) |
//! added or removed, the codegen unit has to be re-translated anyway. | ||
//! (Note that this only makes sense if external crates actually don't change | ||
//! frequently. For certain multi-crate projects this might not be a valid | ||
//! assumption). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
thanks for explaining your logic =)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You're welcome, Rust developers :)
ok, seems like a great starting point, r=me modulo the comment |
Oh no! @eddy has sent |
bba4024
to
808359f
Compare
I've gotten rid of code duplication where possible and added more information on inlining. |
@bors r=nikomatsakis |
📌 Commit 808359f has been approved by |
⌛ Testing commit 808359f with merge 95ffa44... |
💔 Test failed - auto-win-gnu-32-opt |
@bors: retry On Thu, Apr 14, 2016 at 12:16 PM, bors notifications@github.com wrote:
|
⌛ Testing commit 808359f with merge d869d82... |
💔 Test failed - auto-linux-64-nopt-t |
808359f
to
e8441b6
Compare
@bors r=nikomatsakis |
📌 Commit e8441b6 has been approved by |
Add initial version of codegen unit partitioning for incremental compilation. The task of the partitioning module is to take the complete set of translation items of a crate and produce a set of codegen units from it, where a codegen unit is a named set of (translation-item, linkage) pairs. That is, this module decides which translation item appears in which codegen units with which linkage. This version only handles the case of partitioning for incremental compilation, not the regular N-codegen units case. In the future the regular case should be handled too, maybe even doing a bit more analysis to intelligently figure out a good partitioning. One thing that could be improved is the syntax of the codegen unit tests. Right now they still use the compile-fail error specification infrastructure, so everything has to be on one line. Would be nice to be able to format things in a more readable way.
The task of the partitioning module is to take the complete set of translation items of a crate and produce a set of codegen units from it, where a codegen unit is a named set of (translation-item, linkage) pairs. That is, this module decides which translation item appears in which codegen units with which linkage.
This version only handles the case of partitioning for incremental compilation, not the regular N-codegen units case. In the future the regular case should be handled too, maybe even doing a bit more analysis to intelligently figure out a good partitioning.
One thing that could be improved is the syntax of the codegen unit tests. Right now they still use the compile-fail error specification infrastructure, so everything has to be on one line. Would be nice to be able to format things in a more readable way.