summary refs log tree commit diff
path: root/compiler/rustc_metadata/src
AgeCommit message (Collapse)AuthorLines
2020-12-17Rollup merge of #80039 - LeSeulArtichaut:rm-tyencoder-tcx, r=matthewjasperYuki Okushi-4/+0
Remove unused `TyEncoder::tcx` required method Unsure if this is helpful or not... r? ``@ghost`` cc ``@matthewjasper`` ``@jackh726``
2020-12-14Convenience funcs for `some_option.unwrap_or(...)`Rich Kadel-6/+1
This ensures consistent handling of default values for options that are None if not specified on the command line.
2020-12-14Remove unused `TyEncoder::tcx` required methodLeSeulArtichaut-4/+0
2020-12-14Improve warnings on incompatible options involving -Zinstrument-coverageRich Kadel-3/+15
Adds checks for: * `no_core` attribute * explicitly-enabled `legacy` symbol mangling * mir_opt_level > 1 (which enables inlining) I removed code from the `Inline` MIR pass that forcibly disabled inlining if `-Zinstrument-coverage` was set. The default `mir_opt_level` does not enable inlining anyway. But if the level is explicitly set and is greater than 1, I issue a warning. The new warnings show up in tests, which is much better for diagnosing potential option conflicts in these cases.
2020-12-08Account for gaps in def path table during decodingAaron Hill-3/+8
When encoding a proc-macro crate, there may be gaps in the table (since we only encode the crate root and proc-macro items). Account for this by checking if the entry is present, rather than using `unwrap()`
2020-12-03rustc_metadata: Remove some dead codeVadim Petrochenkov-25/+4
2020-12-01Auto merge of #74967 - Aaron1011:feature/incr-def-path-table, r=pnkfelixbors-0/+62
Implement lazy decoding of DefPathTable during incremental compilation PR https://github.com/rust-lang/rust/pull/75813 implemented lazy decoding of the `DefPathTable` from crate metadata. However, it requires decoding the entire `DefPathTable` when incremental compilation is active, so that we can map a decoded `DefPathHash` to a `DefId` from an arbitrary crate. This PR adds support for lazy decoding of dependency `DefPathTable`s when incremental compilation si active. When we load the incremental cache and dep graph, we need the ability to map a `DefPathHash` to a `DefId` in the current compilation session (if the corresponding definition still exists). This is accomplished by storing the old `DefId` (that is, the `DefId` from the previous compilation session) for each `DefPathHash` we need to remap. Since a `DefPathHash` includes the owning crate, the old crate is guaranteed to be the right one (if the definition still exists). We then use the old `DefIndex` as an initial guess, which we validate by comparing the expected and actual `DefPathHash`es. In most cases, foreign crates will be completely unchanged, which means that we our guess will be correct. If our guess is wrong, we fall back to decoding the entire `DefPathTable` for the foreign crate. This still represents an improvement over the status quo, since we can skip decoding the entire `DefPathTable` for other crates (where all of our guesses were correct).
2020-11-27Encode proc_macro directly.Camille GILLOT-67/+62
Encode proc_macro name directly. Do not store None values.
2020-11-26Formatting.Camille GILLOT-1/+1
2020-11-26Remove ForeignMod struct.Camille GILLOT-17/+14
2020-11-26Store ForeignItem in a side table.Camille GILLOT-3/+16
2020-11-25Lazy DefPath decoding for incremental compilationAaron Hill-0/+62
2020-11-22Stabilise `then`varkor-1/+0
2020-11-18Improve error message when we try to get_type on something that does not ↵Hannah McLaughlin-1/+6
have a type
2020-11-13Push to result vector instead of allocatingDániel Buga-1/+1
Co-authored-by: lcnr <bastian_kauschke@hotmail.de>
2020-11-13Eliminate some temporary vectors & Remove unnecessary mark_attr_usedDániel Buga-13/+14
2020-11-10Changed unwrap_or to unwrap_or_else in some places.Nicholas-Baron-8/+8
The discussion seems to have resolved that this lint is a bit "noisy" in that applying it in all places would result in a reduction in readability. A few of the trivial functions (like `Path::new`) are fine to leave outside of closures. The general rule seems to be that anything that is obviously an allocation (`Box`, `Vec`, `vec![]`) should be in a closure, even if it is a 0-sized allocation.
2020-11-08Collapse all uses of `target.options.foo` into `target.foo`Vadim Petrochenkov-15/+11
with an eye on merging `TargetOptions` into `Target`. `TargetOptions` as a separate structure is mostly an implementation detail of `Target` construction, all its fields logically belong to `Target` and available from `Target` through `Deref` impls.
2020-11-03Auto merge of #78448 - rylev:cache-foreign_modules, r=wesleywiserbors-8/+13
foreign_modules query hash table lookups When compiling a large monolithic crate we're seeing huge times in the `foreign_modules` query due to repeated iteration over foreign modules (in order to find a module by its id). This implements hash table lookups so that which massively reduces time spent in that query in this particular case. We'll need to see if the overhead of creating the hash table has a negative impact on performance in more normal compilation scenarios. I'm working with `@wesleywiser` on this.
2020-10-30Fix some more clippy warningsJoshua Nelson-16/+10
2020-10-29Avoid BorrowMutError with RUSTC_LOG=debugTomasz Miąsko-3/+6
$ touch empty.rs $ env RUSTC_LOG=debug rustc +stage1 --crate-type=lib empty.rs Fails with a `BorrowMutError` because source map files are already borrowed while `features_query` attempts to format a log message containing a span. Release the borrow before the query to avoid the issue.
2020-10-27Remove some cruft from foreign_modules refactorRyan Levick-3/+4
2020-10-27Cache foreign_modules queryRyan Levick-11/+15
2020-10-24Compute proper module parent during resolutionAaron Hill-0/+5
Fixes #75982 The direct parent of a module may not be a module (e.g. `const _: () = { #[path = "foo.rs"] mod foo; };`). To find the parent of a module for purposes of resolution, we need to walk up the tree until we hit a module or a crate root.
2020-10-19Calculate visibilities once in resolveVadim Petrochenkov-56/+13
Then use them through a query based on resolver outputs
2020-10-15Replace target.target with target and target.ptr_width with target.pointer_widthest31-3/+3
Preparation for a subsequent change that replaces rustc_target::config::Config with its wrapped Target. On its own, this commit breaks the build. I don't like making build-breaking commits, but in this instance I believe that it makes review easier, as the "real" changes of this PR can be seen much more easily. Result of running: find compiler/ -type f -exec sed -i -e 's/target\.target\([)\.,; ]\)/target\1/g' {} \; find compiler/ -type f -exec sed -i -e 's/target\.target$/target/g' {} \; find compiler/ -type f -exec sed -i -e 's/target.ptr_width/target.pointer_width/g' {} \; ./x.py fmt
2020-10-14Remove unused code from remaining compiler cratesest31-21/+0
2020-10-10Take functions by valueDániel Buga-1/+1
2020-10-06Separate bounds and predicates for associated/opaque typesMatthew Jasper-1/+4
2020-10-06Split bounds from predicatesMatthew Jasper-8/+31
2020-10-05Record `expansion_that_defined` into crate metadataAaron Hill-0/+10
Fixes #77523 Now that hygiene serialization is implemented, we also need to record `expansion_that_defined` so that we properly handle a foreign `SyntaxContext`.
2020-09-30rustc_metadata: Do not forget to encode inherent impls for foreign typesVadim Petrochenkov-0/+1
2020-09-27Auto merge of #77118 - exrook:stability-generic-parameters-2, r=varkorbors-0/+4
Stability annotations on generic parameters (take 2.5) Rebase of #72314 + more tests Implements rust-lang/wg-allocators#2.
2020-09-26Encode less metadata for proc-macro cratesAaron Hill-60/+168
Currently, we serialize the same crate metadata for proc-macro crates as we do for normal crates. This is quite wasteful - almost none of this metadata is ever used, and much of it can't even be deserialized (if it contains a foreign `CrateNum`). This PR changes metadata encoding to skip encoding the majority of crate metadata for proc-macro crates. Most of the `Lazy<[T]>` fields are left completetly empty, while the non-lazy fields are left as-is. Additionally, proc-macros now have a def span that does not include their body. This was done for normal functions in #75465, but was missed for proc-macros. As a result of this PR, we should only ever encode local `CrateNum`s when encoding proc-macro crates. I've added a specialized serialization impl for `CrateNum` to assert this.
2020-09-25Rollup merge of #77121 - duckymirror:html-root-url, r=jyn514Jonas Schievink-1/+1
Updated html_root_url for compiler crates Closes #77103 r? @jyn514
2020-09-23/nightly/nightly-rustcErik Hofmayer-1/+1
2020-09-23Updated html_root_url for compiler cratesErik Hofmayer-1/+1
2020-09-23Rollup merge of #76939 - lcnr:const-evaluatable-cont, r=oli-obkDylan DPC-3/+4
emit errors during AbstractConst building There changes are currently still untested, so I don't expect this to pass CI :laughing: It seems to me like this is the direction we want to go in, though we didn't have too much of a discussion about this. r? @oli-obk
2020-09-22Stability annotations on generic trait parametersAvi Dessauer-0/+4
2020-09-21Record `tcx.def_span` instead of `item.span` in crate metadataAaron Hill-1/+1
This was missed in PR #75465. As a result, a few places have been using the full body span of functions, instead of just the header span.
2020-09-19wip emit errors during AbstractConst buildingBastian Kauschke-3/+4
2020-09-18support const_evaluatable_checked across crate boundariesBastian Kauschke-0/+32
2020-09-15don't lazily evaulate some trivial values for Option::None replacements ↵Matthias Krüger-2/+2
(clippy::unnecessary_lazy_evaluations)
2020-09-14Auto merge of #76656 - jonas-schievink:fewer-unstable-metadata-queries, r=lcnrbors-4/+16
Don't query stability data when `staged_api` is off This data only needs to be encoded when `#![feature(staged_api)]` or `-Zforce-unstable-if-unmarked` is on. Running these queries takes measurable time on large crates with many items, so skip it when the unstable flags have not been enabled.
2020-09-12Properly encode spans with a dummy location and non-root `SyntaxContext`Aaron Hill-1/+1
Previously, we would throw away the `SyntaxContext` of any span with a dummy location during metadata encoding. This commit makes metadata Span encoding consistent with incr-cache Span encoding - an 'invalid span' tag is only used when it doesn't lose any information.
2020-09-13Don't query unstable data when `staged_api` is offJonas Schievink-4/+16
2020-09-10Attach `TokenStream` to `ast::Visibility`Aaron Hill-2/+6
A `Visibility` does not have outer attributes, so we only capture tokens when parsing a `macro_rules!` matcher
2020-09-04Change ty.kind to a methodLeSeulArtichaut-2/+2
2020-08-30mv compiler to compiler/mark-0/+8175