Operand::Uninit is an *allocated* operand that is fully uninitialized.
This lets us lazily allocate the actual backing store of *all* locals (no matter their ABI).
I also reordered things in pop_stack_frame at the same time.
I should probably have made that a separate commit...
There was a problem with storing a `Box<T>` in a struct, where
the current rules would invalidate the value. this makes it store
a raw pointer instead, circumventing the aliasing problems.
Rename the `--output-width` flag to `--diagnostic-width` as this appears
to be the preferred name within the compiler team.
Signed-off-by: David Wood <david.wood@huawei.com>
Rename the `--terminal-width` flag to `--output-width` as the behaviour
doesn't just apply to terminals (and so is slightly less accurate).
Signed-off-by: David Wood <david.wood@huawei.com>
Formerly `-Zterminal-width`, `--terminal-width` allows the user or build
tool to inform rustc of the width of the terminal so that diagnostics
can be truncated.
Signed-off-by: David Wood <david.wood@huawei.com>
Compiling with `-Csplit-debuginfo=packed` was leaving behind `.dwo`
files because either the metadata or allocator module contained a DWARF
object which was not being removed by the
`maybe_remove_temps_from_module` closure.
Cache DWARF objects alongside object files in work products when those
exist so that DWARF object files are available for thorin in packed mode
in incremental scenarios.
Signed-off-by: David Wood <david.wood@huawei.com>
fix typo in note about multiple inaccessible type aliases
Mainly intended as a small typo fix ("aliass" -> "aliases") for the case where a type cannot be found in scope but there are multiple inaccessible type aliases that match the missing type.
In general this change would use the correct plural form in this scenario for base words that end with 's'.
macros: `LintDiagnostic` derive
- Move `LintDiagnosticBuilder` into `rustc_errors` so that a diagnostic derive can refer to it.
- Introduce a `DecorateLint` trait, which is equivalent to `SessionDiagnostic` or `AddToDiagnostic` but for lints. Necessary without making more changes to the lint infrastructure as `DecorateLint` takes a `LintDiagnosticBuilder` and re-uses all of the existing logic for determining what type of diagnostic a lint should be emitted as (e.g. error/warning).
- Various refactorings of the diagnostic derive machinery (extracting `build_field_mapping` helper and moving `sess` field out of the `DiagnosticDeriveBuilder`).
- Introduce a `LintDiagnostic` derive macro that works almost exactly like the `SessionDiagnostic` derive macro except that it derives a `DecorateLint` implementation instead. A new derive is necessary for this because `SessionDiagnostic` is intended for when the generated code creates the diagnostic. `AddToDiagnostic` could have been used but it would have required more changes to the lint machinery.
~~At time of opening this pull request, ignore all of the commits from #98624, it's just the last few commits that are new.~~
r? `@oli-obk`
Mainly intended as a small typo fix ("aliass" -> "aliases") for
the case where a type cannot be found in scope, and there are
multiple inaccessible type aliases that match the missing type.
In general this change would use the correct plural form in
this scenario for words that end with 's'.
Update books
## nomicon
2 commits in 3a43983b76174342b7dbd3e12ea2c49f762e52be..70db9e4189f64d1d8e2451b1046111fb356b6dc2
2022-05-30 17:01:30 +0900 to 2022-06-27 20:47:21 +0900
- should be `size_of` instead of `align_of` (rust-lang/nomicon#371)
- Fix wording on the aliasing section (rust-lang/nomicon#366)
## book
20 commits in efbafdba3618487fbc9305318fcab9775132ac15..cf2653a5ca553cbbb4a17f1a7db1947820f6a775
2022-06-19 21:06:50 -0400 to 2022-07-05 12:07:58 -0400
- Frontmatter
- Update to Rust 1.62
- Extract where clause example so it'll get rustfmtted in the future
- Merge remote-tracking branch 'origin/pr/3238' into extract-where-clause-example
- Fix line wrapping of lib placement fix
- Fix grammar, spelling, and line wrapping of description of appendices
- Merge remote-tracking branch 'origin/pr/3244' into binlib
- Clarify *type* parameter names
- Fix listing 8-21. Fixesrust-lang/book#3251
- Propagate tech review changes for ch13
- Responses to tech review of chapter 13
- Tech review comments on chapter 13
- Fix double the
- Propagate tech review chapter 1 changes to src
- Address tech review comments for chapter 1
- Tech review comments for chapter 1
- Fix grammar
- Fix grammar
- Edits to edits to the introduction
- Comments from nostarch on the introduction
## rust-by-example
8 commits in 1095df2a5850f2d345fad43a30633133365875ba..83724ca387a2a1cd3e8d848f62820020760e358b
2022-06-18 21:47:12 -0300 to 2022-07-05 10:38:07 -0300
- changing names of params (rust-lang/rust-by-example#1567)
- Update incorrect print output in std/box.md (rust-lang/rust-by-example#1564)
- minor typo (rust-lang/rust-by-example#1563)
- fix: Fibonacci sequence starts from zero (rust-lang/rust-by-example#1562)
- add Vietnamese version on README.md (rust-lang/rust-by-example#1561)
- Update variadics.md (rust-lang/rust-by-example#1559)
- Change fold to sum in fn hof.md (rust-lang/rust-by-example#1560)
- Small typo, fixed compileable -> compilable (rust-lang/rust-by-example#1556)
## rustc-dev-guide
8 commits in 048d925f0a955aac601c4160c0e7f05771bcf63b..eb83839e903a0a8f1406f7e941886273f189b26b
2022-06-21 22:25:34 +0900 to 2022-07-03 15:17:39 +0900
- Suggest a separate build directory for rust-analyzer (rust-lang/rustc-dev-guide#1378)
- Change the old filename, "src/stage0.txt" to "src/stage0.json" (rust-lang/rustc-dev-guide#1383)
- Add the config needed to get rust-analyzer working on src/bootstrap (rust-lang/rustc-dev-guide#1381)
- Fix path to hir_id_validator.rs
- leave formatOnSave to the user (rust-lang/rustc-dev-guide#1380)
- diagnostics: structs with new slug syntax (rust-lang/rustc-dev-guide#1377)
- Few readability fixes
- humorust: Forbid pineapple on pizza (rust-lang/rustc-dev-guide#1374)
## embedded-book
1 commits in e17dcef5e96346ee3d7fa56820ddc7e5c39636bc..766979590da8100998f0d662499d4a901d8d1640
2022-06-19 10:28:00 +0000 to 2022-07-04 09:13:58 +0000
- "linker `link.exe` not found" fix (rust-embedded/book#321)
Edit `rustc_mir_dataflow::framework::lattice::FlatSet` docs
Cosmetic improvements. Adds a paragraph break, and
ellipses to signify arbitrary size of a flat set.
Proper macOS libLLVM symlink when cross compiling
Follow up of #98418
When cross compiling on macOS with `llvm.link-shared` enabled, the symlink creation will fail after compiling LLVM for the target architecture, because it will attempt to create the symlink in the host LLVM directory, which was already created when being built.
This commit changes the symlink path to the actual LLVM output.
r? `@jyn514`
Fix repr(align) enum handling
`enum`, for better or worse, supports `repr(align)`. That has already caused a bug in https://github.com/rust-lang/rust/issues/92464, which was "fixed" in https://github.com/rust-lang/rust/pull/92932, but it turns out that that fix is wrong and caused https://github.com/rust-lang/rust/issues/96185.
So this reverts #92932 (which fixes#96185), and attempts another strategy for fixing #92464: special-case enums when doing a cast, re-using the code to load the discriminant rather than assuming that the enum has scalar layout. This works fine for the interpreter.
However, #92464 contained another testcase that was previously not in the test suite -- and after adding it, it ICEs again. This is not surprising; codegen needs the same patch that I did in the interpreter. Probably this has to happen [around here](d32ce37a17/compiler/rustc_codegen_ssa/src/mir/rvalue.rs (L276)). Unfortunately I don't know how to do that -- the interpreter can load a discriminant from an operand, but codegen can only do that from a place. `@oli-obk` `@eddyb` `@bjorn3` any idea?
bootstrap: Allow building individual crates
This aims to be as unintrusive as possible, but did still require adding a new `tail_args` field to all `Rustc` and `Std` steps.
New library and compiler crates are added to the sysroot as they are built, since it's useful to have e.g. just alloc and not std.
Fixes https://github.com/rust-lang/rust/issues/44293.