- 27 10月, 2018 16 次提交
-
-
由 Oliver Middleton 提交于
LLVM requires that atomic loads and stores be aligned to at least the size of the type.
-
由 bors 提交于
Handle bindings in substructure of patterns with type ascriptions This attempts to follow the outline described by @nikomatsakis [here](https://github.com/rust-lang/rust/issues/47184#issuecomment-420041056). Its a bit more complicated than expected for two reasons: 1. In general it handles sets of type ascriptions, because such ascriptions can be nested within patterns 2. It has a separate types in the HAIR, `PatternTypeProjections` and `PatternTypeProjection`, which are analogues to the corresponding types in the MIR. The main reason I added the new HAIR types was because I am worried that the current implementation is inefficent, and asymptotically so: It makes copies of vectors as it descends the patterns, even when those accumulated vectors are never used. Longer term, I would like to used a linked tree structure for the `PatternTypeProjections` and `PatternTypeProjection`, and save the construction of standalone vectors for the MIR types. I didn't want to block landing this on that hypoethetical revision; but I figured I could at least make the future change easier by differentiating between the two types now. Oh, one more thing: This doesn't attempt to handle `ref x` (in terms of ensuring that any necessary types are ascribed to `x` in that scenario as well). We should open an issue to investigate supporting that as well. But I didn't want to block this PR on that future work. Fix #54570
-
由 Felix S. Klock II 提交于
-
由 Felix S. Klock II 提交于
-
由 Felix S. Klock II 提交于
Also added alias `ProjectionKind<'tcx>` for `ProjectionElem<'tcx, (), ()>`.
-
由 Felix S. Klock II 提交于
As a drive-by, also added test analogous to existing static_to_a_to_static_through_tuple, but now apply to a struct instead of a tuple.
-
由 Felix S. Klock II 提交于
-
由 Felix S. Klock II 提交于
-
由 Felix S. Klock II 提交于
Update the existing NLL `patterns.rs` test accordingly. includes changes addressing review feedback: * Added example to docs for `UserTypeProjections` illustrating how we build up multiple projections when descending into a pattern with type ascriptions. * Adapted niko's suggested docs for `UserTypeProjection`. * Factored out `projection_ty` from more general `projection_ty_core` (as a drive-by, made its callback an `FnMut`, as I discovered later that I need that). * Add note to docs that `PlaceTy.field_ty(..)` does not normalize its result. * Normalize as we project out `field_ty`.
-
由 Felix S. Klock II 提交于
I did not think I would need this in the MIR, but in general local decls are going to need to support this. (That, or we need to be able define a least-upper-bound for a collection of types encountered via the pattern compilation.)
-
由 bors 提交于
Suggest to remove prefix `b` in cfg attribute lint string Closes #54926 r? @estebank
-
由 Felix S. Klock II 提交于
Added `mir::UserTypeProjection`, a stub for a structure that projects *into* a given UserTypeAnnotation. (That is, it will pull out some component type held or referenced by the type annotation.) Note: this still needs to actually do projection itself. That comes in a later commit
-
由 Felix S. Klock II 提交于
Refactoring: added `PatternTypeAnnotation` wrapper around `UserTypeAnnotation` to ease future changes.
-
由 Felix S. Klock II 提交于
-
由 Felix S. Klock II 提交于
It is unused, and would not make sense to maintain in the commits later in this PR.
-
由 bors 提交于
Rollup of 21 pull requests Successful merges: - #54816 (Don't try to promote already promoted out temporaries) - #54824 (Cleanup rustdoc tests with `@!has` and `@!matches`) - #54921 (Add line numbers option to rustdoc) - #55167 (Add a "cheap" mode for `compute_missing_ctors`.) - #55258 (Fix Rustdoc ICE when checking blanket impls) - #55264 (Compile the libstd we distribute with -Ccodegen-unit=1) - #55271 (Unimplement ExactSizeIterator for MIR traversing iterators) - #55292 (Macro diagnostics tweaks) - #55298 (Point at macro definition when no rules expect token) - #55301 (List allowed tokens after macro fragments) - #55302 (Extend the impl_stable_hash_for! macro for miri.) - #55325 (Fix link to macros chapter) - #55343 (rustbuild: fix remap-debuginfo when building a release) - #55346 (Shrink `Statement`.) - #55358 (Remove redundant clone (2)) - #55370 (Update mailmap for estebank) - #55375 (Typo fixes in configure_cmake comments) - #55378 (rustbuild: use configured linker to build boostrap) - #55379 (validity: assert that unions are non-empty) - #55383 (Use `SmallVec` for the queue in `coerce_unsized`.) - #55391 (bootstrap: clean up a few clippy findings)
-
- 26 10月, 2018 24 次提交
-
-
由 kennytm 提交于
bootstrap: clean up a few clippy findings remove useless format!()s remove redundant field names in a few struct initializations pass slice instead of a vector to a function use is_empty() instead of comparisons to .len() No functional change intended.
-
由 kennytm 提交于
Use `SmallVec` for the queue in `coerce_unsized`. This reduces the number of allocations done for the `tuple-stress` benchmark by 4%.
-
由 kennytm 提交于
Compile the libstd we distribute with -Ccodegen-unit=1 This PR - adds the `single-codegen-unit-std` option to `config.toml` which allows for setting the CGU count for `libstd` and `libtest` independently of the one for the rest of the compiler, and - sets the new option to `true` for all dist jobs in CI. Fixes #54872.
-
由 kennytm 提交于
validity: assert that unions are non-empty
-
由 kennytm 提交于
rustbuild: use configured linker to build boostrap Currently, bootstrap uses it to compile everything, but x.py wasn't using it yet to build bootstrap itself. This fixes the build for systems where the linker isn't called `cc`.
-
由 kennytm 提交于
Typo fixes in configure_cmake comments Signed-off-by: NEddy Petrișor <eddy.petrisor@gmail.com>
-
由 kennytm 提交于
Update mailmap for estebank
-
由 kennytm 提交于
Remove redundant clone (2)
-
由 kennytm 提交于
Shrink `Statement`. This commit reduces the size of `Statement` from 80 bytes to 56 bytes on 64-bit platforms, by boxing the `AscribeUserType` variant of `StatementKind`. This change reduces instruction counts on most benchmarks by 1--3%.
-
由 kennytm 提交于
rustbuild: fix remap-debuginfo when building a release Fallback to the release number as we can't get the git commit sha as we're not in a git repository. Fixes #55341
-
由 kennytm 提交于
Fix link to macros chapter We're gonna link to nightly as this didn't make it into the corresponding stable. r? @Mark-Simulacrum @Centril
-
由 kennytm 提交于
Extend the impl_stable_hash_for! macro for miri. Fixes #54075.
-
由 kennytm 提交于
List allowed tokens after macro fragments Fix #34069.
-
由 kennytm 提交于
Point at macro definition when no rules expect token Fix #35150.
-
由 kennytm 提交于
Macro diagnostics tweaks Fix #30128, fix #10951 by adding an appropriate span to the diagnostic. Fix #26288 by suggesting adding semicolon to macro call.
-
由 kennytm 提交于
Unimplement ExactSizeIterator for MIR traversing iterators If `root` is not `START_BLOCK`, `basic_blocks().len() - visited` does not represent their exact size.
-
由 bors 提交于
rustc: Tweak filenames encoded into metadata This commit is a fix for #54408 where on nightly right now whenever generics are inlined the path name listed for the inlined function's debuginfo is a relative path to the cwd, which surely doesn't exist! Previously on beta/stable the debuginfo mentioned an absolute path which still didn't exist, but more predictably didn't exist. The change between stable/nightly is that nightly is now compiled with `--remap-path-prefix` to give a deterministic prefix to all rustc-generated paths in debuginfo. By using `--remap-path-prefix` the previous logic would recognize that the cwd was remapped, causing the original relative path name of the standard library to get emitted. If `--remap-path-prefix` *wasn't* passed in then the logic would create an absolute path name and then create a new source file entry. The fix in this commit is to apply the "recreate the source file entry with an absolute path" logic a bit more aggresively. If the source file's name was remapped then we don't touch it, but otherwise we always take the working dir (which may have been remapped) and then join it to the file to ensure that we process all relative file names as well. The end result is that the standard library should have an absolute path for all file names in debuginfo (using our `--remap-path-prefix` argument) as it does on stable after this patch. Closes #54408
-
由 Matthias Krüger 提交于
remove useless format!()s remove redundant field names in a few struct initializations pass slice instead of a vector to a function use is_empty() instead of comparisons to .len() No functional change intended.
-
由 Michael Woerister 提交于
-
由 Michael Woerister 提交于
-
由 Michael Woerister 提交于
-
由 bors 提交于
Report const eval error inside the query Functional changes: We no longer warn about bad constants embedded in unused types. This relied on being able to report just a warning, not a hard error on that case, which we cannot do any more now that error reporting is consistently centralized. r? @RalfJung fixes #53561
-
由 kennytm 提交于
Fix Rustdoc ICE when checking blanket impls Fixes #55001, #54744 Previously, SelectionContext would unconditionally cache the selection result for an obligation. This worked fine for most users of SelectionContext, but it caused an issue when used by Rustdoc's blanket impl finder. The issue occured when SelectionContext chose a ParamCandidate which contained inference variables. Since inference variables can change between calls to select(), it's not safe to cache the selection result - the chosen candidate might not be applicable for future results, leading to an ICE when we try to run confirmation. This commit prevents SelectionContext from caching any ParamCandidate that contains inference variables. This should always be completely safe, as trait selection should never depend on a particular result being cached. I've also added some extra debug!() statements, which I found helpful in tracking down this bug.
-
由 kennytm 提交于
Add a "cheap" mode for `compute_missing_ctors`. `compute_missing_ctors` produces a vector. It is called a lot, but the vector is almost always only checked for emptiness. This commit introduces a specialized variant of `compute_missing_ctors` (called `is_missing_ctors_empty`) that determines if the resulting set would be empty, and changes the callsite so that `compute_missing_ctors` is only called in the rare cases where it is needed. The code duplication is unfortunate but I can't see a better way to do it. This change reduces instruction counts for several benchmarks up to 2%. r? @varkor
-