ci: run mir-opt tests on PR CI also as 32-bit (for `EMIT_MIR_FOR_EACH_BIT_WIDTH`).
Background: #69916 and [`src/test/mir-opt/README.md`](https://github.com/rust-lang/rust/blob/master/src/test/mir-opt/README.md):
> By default 32 bit and 64 bit targets use the same dump files, which can be problematic in the
presence of pointers in constants or other bit width dependent things. In that case you can add
>
> ```
> // EMIT_MIR_FOR_EACH_BIT_WIDTH
> ```
>
> to your test, causing separate files to be generated for 32bit and 64bit systems.
However, if you change the output of such a test (intentionally or not), or if you add a test and it varies between 32-bit and 64-bit platforms, you have to run this command (for a x64 linux host):
`./x.py test --stage 1 --target x86_64-unknown-linux-gnu --target i686-unknown-linux-gnu --bless src/test/mir-opt`
Otherwise, bors trying to merge the PR will fail, since we test 32-bit targets there.
But we don't on PR CI, which means there's no way the PR author would know (unless they were burnt by this already and know what to look for).
This PR resolves that by running `mir-opt` tests for ~~`i686-unknown-linux-gnu`~~, on PR CI.
**EDIT**: switched to `armv5te-unknown-linux-gnueabi` to work around LLVM 7 crashes (see https://github.com/rust-lang/compiler-builtins/pull/311#issuecomment-612270089), found during testing.
cc @rust-lang/wg-mir-opt @rust-lang/infra
The old naming is from ancient times when there was no MSVC support.
Also `uefi_base` -> `uefi_msvc_base`.
It will inherit from `msvc_base` in a future commit, plus a GNU UEFI target is also potentially possible.
Calls to `assemble_extension_candidates_for_traits_in_scope` with
`DUMMY_HIR_ID` as `expr_hir_id` are useless because the first thing
that this function does is to return `Ok(())` in this case.
Make LLVM version suffix independent of rustc version on dev channel
Remove rustc version from LLVM version suffix on dev channel,
avoiding the need for full rebuilds when switching between
branches with different LLVM submodule & rustc version.
Note: To avoid full rebuild, on subsequent LLVM submodule update, copy the
current value of `LLVM_VERSION_SUFFIX` from `build/*/llvm/build/CMakeCache.txt`,
to `version-suffix` in `config.toml`.
submodules: update clippy from d342cee7 to af5940b7
Changes:
````
Allow UUID style formatting for `inconsistent_digit_grouping` lint
rustup https://github.com/rust-lang/rust/pull/70986
rustup https://github.com/rust-lang/rust/pull/69745
Rustup to https://github.com/rust-lang/rust/pull/70913
compare with the second largest instead of the smallest variant
Revert "Downgrade new_ret_no_self to pedantic"
Check for clone-on-copy in argument positions
Check fn header along with decl when suggesting to implement trait
Downgrade implicit_hasher to pedantic
Move cognitive_complexity to nursery
Run fmt and update test
Use int assoc consts in MANUAL_SATURATING_ARITHMETIC
Use int assoc consts in checked_conversions lint
Use primitive type assoc consts in more tests
Use integer assoc consts in more lint example code
Don't import primitive type modules
Use assoc const NAN for zero_div_zero lint
Fix float cmp to use assoc fxx::EPSILON
Fix NAN comparison lint to use assoc NAN
Refine lint message.
Lint on opt.as_ref().map(|x| &**x).
Include OpAssign in suspicious_op_assign_impl
result_map_or_into_option: fix syntax error in example
result_map_or_into: fix dogfood_clippy error => {h,l}int
CONTRIBUTING.md: fix broken triage link
result_map_or_into_option: fix `cargo dev fmt --check` errors
result_map_or_into_option: move arg checks into tuple assignment
result_map_or_into_option: add `opt.map_or(None, |_| Some(y))` test
result_map_or_into_option: destructure lint tuple or return early
result_map_or_into_option: add good and bad examples
result_map_or_into_option: explicitly note absence of known problems
Downgrade new_ret_no_self to pedantic
Downgrade unreadable_literal to pedantic
Update CONTRIBUTING.md
Rename rustc -> rustc_middle in doc links
result_map_or_into_option: add lint to catch manually adpating Result -> Option
Move matches test in matches module
Run update_lints
Make lint modules private
Don't filter lints in code generation functions
Build lint lists once and the reuse them to update files
Get rid of Lint::is_internal method
Clean up update_lints
Downgrade inefficient_to_string to pedantic
Downgrade trivially_copy_pass_by_ref to pedantic
Downgrade let_unit_value to pedantic
````
Fixes#70993
r? @Dylan-DPC
Rollup of 4 pull requests
Successful merges:
- #67766 (Fix warning for unused variables in or pattern (issue #67691))
- #71013 (Pass the `PlaceElem::Index` local to `visit_local`)
- #71064 (fix issue 69130)
- #71069 (Remove some usage of `DUMMY_HIR_ID`)
Failed merges:
r? @ghost
Remove some usage of `DUMMY_HIR_ID`
Use `ObligationClause::dummy()` when appropriate or replace `hir::DUMMY_HIR_ID`by `hir::CRATE_HIR_ID`, as used in `ObligationClause::dummy()`.
Fix warning for unused variables in or pattern (issue #67691)
Is this a good way to fix it?
Also, the tests fail, the "fixed" code output says `{ i, j }` instead of `{ i, j: _ }`, how can I fix that?
Rollup of 6 pull requests
Successful merges:
- #71029 (Partial work on building with Cargo)
- #71034 (Clean up E0515 explanation)
- #71041 (Update links of `rustc guide`)
- #71048 (Normalize source when loading external foreign source into SourceMap)
- #71053 (Add some basic docs to `sym` and `kw` modules)
- #71057 (Clean up E0516 explanation)
Failed merges:
r? @ghost
Add some basic docs to `sym` and `kw` modules
I was looking into improving some Clippy documentation but was missing a
place that explains the `kw` and `sym` modules from rustc.
This adds some very basic usage documentation to these modules.
Normalize source when loading external foreign source into SourceMap
The compiler normalizes source when reading files initially (removes BOMs, etc), but not when loading external sources.
This leads to the external source matching according to the `src_hash`, but differing internally because it was not normalized.
Fixes#70874.