summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2017-08-03Auto merge of #889 - photoszzt:fix_recursive_whitelist_opaque, r=fitzgenbors-servo
Fix recursive whitelisting and handling of opaque for derive default Fix regression of derive default analysis. Also fix opaque handing exposed by the above fix. r? @fitzgen
2017-08-03Can derive copy analysiszzhu
2017-08-02Clean up trivially derive debugzzhu
2017-08-02Fix recursive whitelisting and handling of opaquezzhu
Fix regression of derive default analysis. Also fix opaque handing exposed by the above fix.
2017-08-01Not derive Copy for C flexible array memberWangshan Lu
2017-08-01Support deriving copy for large arrayWangshan Lu
2017-07-31Clean up left over derive debug nitszzhu
2017-07-31Auto merge of #861 - photoszzt:derive_default, r=fitzgenbors-servo
Can derive default analysis r? @fitzgen
2017-07-31Stablize name of pointer and arrayXidorn Quan
2017-07-28Auto merge of #863 - fitzgen:rm-used, r=emiliobors-servo
Remove the incomplete `--dummy-uses` feature This would generate dummy uses of all the whitelisted types, which we were planning on eventually using to generate DWARF for more layout testing of our types, but we decided that isn't worth the trouble. Kill it! r? @emilio
2017-07-28Remove the incomplete `--dummy-uses` featureNick Fitzgerald
This would generate dummy uses of all the whitelisted types, which we were planning on eventually using to generate DWARF for more layout testing of our types, but we decided that isn't worth the trouble. Kill it!
2017-07-27Auto merge of #860 - emilio:issue-848, r=fitzgenv0.29.0bors-servo
lib: Filter out include paths when looking for clang paths. Fixes #848
2017-07-27can derive default analysiszzhu
2017-07-27Remove the `CanDeriveDebug::Extra` associated typeNick Fitzgerald
Similar to `HasVtable::Extra`, it is no longer needed.
2017-07-27Remove unused `CanDeriveDebug` implNick Fitzgerald
2017-07-27Remove unused `HasVtable::Extra` associated typeNick Fitzgerald
This is a throwback from the old, ad-hoc computation before we used the fixpoint analysis.
2017-07-27lib: Filter out include paths when looking for clang paths.Emilio Cobos Álvarez
2017-07-26Report what the unknown generate item was when parsing `--generate`Nick Fitzgerald
2017-07-26Be conservative about deriving Debug/Default with large alignmentNick Fitzgerald
When there is large enough alignment that we might generate padding which has more members that `RUST_DERIVE_IN_ARRAY_LIMIT`, we can break our ability to derive traits. This commit solves this issue conservatively: there are cases where we leave a derive on the table, because in order to know that we could add that derive, we would need to compute padding before we determine whether we can derive. Fixes #648
2017-07-26Merge pull request #855 from photoszzt/move_dependency_outNick Fitzgerald
Pull out the loop that generates dependency map into its own function.
2017-07-25Pull out the loop that generates dependency map into its own function.zzhu
2017-07-25Merge pull request #853 from fitzgen/rust-lang-nurseryNick Fitzgerald
s/servo/rust-lang-nursery/ \o/
2017-07-25s/servo/rust-lang-nursery/ \o/Nick Fitzgerald
Fixes #852
2017-07-25has vtable analysiszzhu
2017-07-24Pull `return` up out of the branch armsNick Fitzgerald
2017-07-24Add `trace!` logging for the derive(Debug) analysisNick Fitzgerald
Useful for debugging when constraints go wrong.
2017-07-24Handle all opaque types at once in derive(Debug) analysisNick Fitzgerald
There are lots of different ways that a type can end up being opaque, and it is best to handle all the ways in one fell swoop, rather than check each different ways (for example, if a struct has non-type template params, if a template instantiation's template definition has them, etc...) for each different type kind.
2017-07-24A `ResolvedTypeRef` is opaque if it points to another opaque typeNick Fitzgerald
2017-07-22Never use spaces in generated name (fixes #844)Manish Goregaokar
2017-07-22Remove whitelisted_items as arg to codegen funcsOmar Akkila
2017-07-22analysis: Account for template instantiations of opaque types in the derive ↵Emilio Cobos Álvarez
debug analysis. We have a special-case for them in codegen to generate a blob, that can derive debug. This is a regression from #824, and hit stylo.
2017-07-21ir: Track the codegen-reachable items, and use it instead of ↵Emilio Cobos Álvarez
whitelisted_items() for code generation. This standardizes the behavior change at #834, but without regressions. I've added a few more tests for #833 here.
2017-07-21ir: We really need to traverse all edges for the used template parameter ↵Emilio Cobos Álvarez
analysis to be sound.
2017-07-21Auto merge of #829 - servo:disambig, r=emiliobors-servo
Use fully disambiguated name instead of a number for layout tests (fixes #394) These numbers cause tons of churn in the diffs for checked in bindings. r? @fitzgen
2017-07-20The `CannotDeriveDebug` analysis shouldn't special case blacklistingNick Fitzgerald
This is some copy-paste from the template param usage analysis that we don't need here. We already assume that blacklisted items are `derive(Debug)`able, and this doesn't change that.
2017-07-20Define a type for communicating that the constraint function hasn't reached ↵Nick Fitzgerald
a fixed point `ConstrainResult::Changed` is much more legible than `true`.
2017-07-20Capitalize, punctuate, and format a commentNick Fitzgerald
2017-07-20Use object literal short hand for `CannotDeriveDebug`Nick Fitzgerald
2017-07-20Also assert against dangling references after resolving typerefs and ↵Nick Fitzgerald
processing replacements Because these operations mutate the IR graph, its better to be safe and double check again. Don't worry -- these checks only happen on `testing_only_extra_assertions` builds!
2017-07-20Only traverse the IR graph to compute whitelisted items onceNick Fitzgerald
We used to do this traversal all the time, but we can do it the one time, after we finish constructing the IR graph and before we begin computing any of our analyses.
2017-07-20Fix variable name to reflect its semanticsNick Fitzgerald
Set insertion returns true if it was *not* already in the set. The assertion was already correct, but the name was backwards. Additionally, this removes a `format!` that is unnecessary.
2017-07-20Rename `CannotDeriveDebugAnalysis` to `CannotDeriveDebug`Nick Fitzgerald
It is obvious from the module that it is in that it is an analysis.
2017-07-20Use "cannot" instead of "can't" in namesNick Fitzgerald
Because we can't put the apostrophe in "can't" in variables and type names, it doesn't read as well as "cannot".
2017-07-20Move fix-point analyses to their own moduleNick Fitzgerald
2017-07-20Rearrange monotone framework and used templates analysis commentsNick Fitzgerald
They used to live in the same module, and there was less distinction between them, so they used to make more sense entangled with each other. Now that they are in separate files, they need a little bit of disentangling.
2017-07-20Use fully disambiguated name instead of a number for layout tests (fixes #394)Manish Goregaokar
2017-07-20Only whitelist items which we intend to generate code forNick Fitzgerald
This makes only generating certain kinds of items more robust, since we don't need to keep checking whether codegen is enabled for different kinds of items all over the place, and can do it the once. It should also reduce the number of items we have to consider in our various analyses for which we don't ultimately care about the answer. Fixes #826
2017-07-20Escape mangled function namesNick Fitzgerald
Windows uses non-ascii and non-visual characters in mangled names T.T
2017-07-20Use fix point analysis to implement the can_derive_debugzzhu
2017-07-20Implement `IsOpaque` for `CompInfo`Nick Fitzgerald
This allows us to properly detect structs that should be treated as opaque due to their non-type template paramaters, which in turn lets us correctly codegen template aliases to such things. Fixes #820