15502 Commits

Author SHA1 Message Date
Michael Goulet
42a4419120 Do not prefer module parents which are doc(hidden) in visibility map 2022-07-24 21:27:03 +00:00
Michael Goulet
3bbe95ca0c Combine redundant obligation cause codes 2022-07-24 19:35:53 +00:00
Michael Goulet
2bbcdc7333 Handle additional lifetime bounds on GATs like on methods 2022-07-24 18:57:41 +00:00
Michael Goulet
6bb7581a59 Slightly improve mismatched GAT where clause error 2022-07-24 18:39:59 +00:00
Ralf Jung
34d0c0abf6
Rollup merge of #99678 - danbev:rustc_parse-config-doc-comments, r=cjgillot
Update doc comments that refer to config parameter

This commit updates the `source_file_to_parser` and the
`maybe_source_file_to_parse` function's doc comments which currently
refer to a `config` parameter. The doc comments have been updated to
refer to the `session` parameter similar to the doc comment for
`try_file_to_source_file`, which also takes a `&Session` parameter.
2022-07-24 14:04:29 -04:00
Ralf Jung
890cd7a496
Rollup merge of #99644 - RalfJung:interpret-int-ptr-transmute, r=oli-obk
remove some provenance-related machine hooks that Miri no longer needs

Then we can make `scalar_to_ptr` a method on `Scalar`. :)

Fixes https://github.com/rust-lang/miri/issues/2188
r? `@oli-obk`
2022-07-24 14:04:26 -04:00
Daniel Bevenius
045140a25b Update doc comments that refer to config parameter
This commit updates the source_file_to_parser and the
maybe_source_file_to_parse function's doc comments which currently
refer to a config parameter. The doc comments have been updated to
refer to the 'session' parameter similar to the doc comment for
try_file_to_source_file, which also takes a &Session parameter.
2022-07-24 16:40:24 +02:00
Pietro Albini
f1063c054d
remove new allocations from imported_source_files 2022-07-24 16:20:14 +02:00
Thom Chiovoloni
6cfd471ffe
Don't overwrite CodegenFnAttrs when adding used compiler/linker 2022-07-24 06:37:50 -07:00
Takayuki Maeda
1d4ddab1bf suggest dereferencing index when trying to use a reference of usize as index 2022-07-24 22:26:44 +09:00
Ralf Jung
f80bf1013d don't ICE on invalid dyn calls 2022-07-24 09:21:05 -04:00
Amanieu d'Antras
d931a587e6 Revert "Mark atomics as unsupported on thumbv6m"
This reverts commit 75146102197c7f35e6c38cb402b2bc1065858c54.
2022-07-24 13:12:08 +01:00
ouz-a
4e726e04cd fix import error 2022-07-24 14:57:49 +03:00
ouz-a
09134982e5 optimize un_derefer 2022-07-24 14:40:43 +03:00
ouz-a
9f00d836af make sure has_deref is correct 2022-07-24 13:26:20 +03:00
bors
b4151a41a0 Auto merge of #93429 - fee1-dead-contrib:allow-super-trait-tilde-const, r=oli-obk
Allow `trait A: ~const B`

What's included: a minimal working change set for `~const` supertraits to work.

r? `@oli-obk`
2022-07-24 09:16:02 +00:00
Deadbeef
666022730f Instantiate constness in wfcheck 2022-07-24 07:57:05 +00:00
Michael Goulet
f7326989e6 Use VecMap::get in ConstraintLocator::check 2022-07-24 05:51:03 +00:00
bors
4dbc89de3f Auto merge of #99251 - cuviper:hashbrown-0.12, r=Mark-Simulacrum
Upgrade indexmap and thorin-dwp to use hashbrown 0.12

This removes the last dependencies on hashbrown 0.11.

This also upgrades to hashbrown 0.12.3 to fix a double-free (#99372).
2022-07-24 04:03:29 +00:00
bors
db8086eb60 Auto merge of #95548 - rcvalle:rust-cfi-2, r=nagisa
Add fine-grained LLVM CFI support to the Rust compiler

This PR improves the LLVM Control Flow Integrity (CFI) support in the Rust compiler by providing forward-edge control flow protection for Rust-compiled code only by aggregating function pointers in groups identified by their return and parameter types.

Forward-edge control flow protection for C or C++ and Rust -compiled code "mixed binaries" (i.e., for when C or C++ and Rust -compiled code share the same virtual address space) will be provided in later work as part of this project by identifying C char and integer type uses at the time types are encoded (see Type metadata in the design document in the tracking issue https://github.com/rust-lang/rust/issues/89653).

LLVM CFI can be enabled with -Zsanitizer=cfi and requires LTO (i.e., -Clto).

Thank you again, `@eddyb,` `@nagisa,` `@pcc,` and `@tmiasko` for all the help!
2022-07-24 01:22:36 +00:00
bors
fcad91868a Auto merge of #99652 - GuillaumeGomez:rollup-38v0x7y, r=GuillaumeGomez
Rollup of 6 pull requests

Successful merges:

 - #99298 (Make `ui-fulldeps/gated-plugins` and `ui-fulldeps/multiple-plugins` tests stage 2 only)
 - #99396 (Add some additional double-adjustment regression tests)
 - #99449 (Do not resolve associated const when there is no provided value)
 - #99595 (Mark atomics as unsupported on thumbv6m)
 - #99627 (Lock stdout once when listing tests)
 - #99638 (Remove Clean trait implementation for hir::Ty and middle::Ty)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2022-07-23 22:41:48 +00:00
Guillaume Gomez
90c6cde43a
Rollup merge of #99595 - nikic:thumbv6m-atomics, r=nagisa
Mark atomics as unsupported on thumbv6m

The thumbv6m target does not support atomics. Historically, LLVM
had a bug where atomic load/stores for this target were emitted
as plain load/stores rather than as libatomic calls. This was
fixed in https://reviews.llvm.org/D120026, which will be part of
LLVM 15. As we require that "atomic support" does not use libatomic,
we need to indicate that this target does not have native atomics.
2022-07-23 23:34:31 +02:00
Guillaume Gomez
3648dd552a
Rollup merge of #99449 - compiler-errors:assoc-const-missing-item, r=lcnr
Do not resolve associated const when there is no provided value

Fixes #98629, since now we just delay a bug when we're not able to evaluate a const item due to the value not actually being provided by anything. This means compilation proceeds forward to where the "missing item in impl" error is emitted.

----

The root issue here is that when we're looking for the defining `LeafDef` in `resolve_associated_item`, we end up getting the trait's AssocItem instead of the impl's AssocItem (which does not exist). This resolution "succeeds" even if the trait's item has no default value, and then since this item has no value to evaluate, it turns into a const eval error.

This root issue becomes problematic (as in #98629) when this const eval error happens in wfcheck (for example, due to normalizing the param-env of something that references this const). Since this happens sooner than the check that an impl actually provides all of the items that a trait requires (which happens during later typecheck), we end up aborting compilation early with only this un-informative message.

I'm not exactly sure _why_ this bug arises due to #96591 -- perhaps valtrees are evaluated more eagerly than in the old system?

r? ``@oli-obk`` or ``@lcnr`` since y'all are familiar with const eval and reviewed #96591, though feel free to reassign.

This is a regression from stable to beta, so I would be open to considering this for beta backport. It seems correct to me, especially given the improvements in the other UI tests this PR touches, but may have some side-effects that I'm unaware of...?
2022-07-23 23:34:30 +02:00
bors
93ffde6f04 Auto merge of #98208 - ivanloz:master, r=nagisa
Add support for LLVM ShadowCallStack.

LLVMs ShadowCallStack provides backward edge control flow integrity protection by using a separate shadow stack to store and retrieve a function's return address.

LLVM currently only supports this for AArch64 targets. The x18 register is used to hold the pointer to the shadow stack, and therefore this only works on ABIs which reserve x18. Further details are available in the [LLVM ShadowCallStack](https://clang.llvm.org/docs/ShadowCallStack.html) docs.

# Usage
`-Zsanitizer=shadow-call-stack`

# Comments/Caveats
* Currently only enabled for the aarch64-linux-android target
* Requires the platform to define a runtime to initialize the shadow stack, see the [LLVM docs](https://clang.llvm.org/docs/ShadowCallStack.html) for more detail.
2022-07-23 20:01:07 +00:00
Ramon de C Valle
5ad7a646a5 Add fine-grained LLVM CFI support to the Rust compiler
This commit improves the LLVM Control Flow Integrity (CFI) support in
the Rust compiler by providing forward-edge control flow protection for
Rust-compiled code only by aggregating function pointers in groups
identified by their return and parameter types.

Forward-edge control flow protection for C or C++ and Rust -compiled
code "mixed binaries" (i.e., for when C or C++ and Rust -compiled code
share the same virtual address space) will be provided in later work as
part of this project by identifying C char and integer type uses at the
time types are encoded (see Type metadata in the design document in the
tracking issue #89653).

LLVM CFI can be enabled with -Zsanitizer=cfi and requires LTO (i.e.,
-Clto).
2022-07-23 10:51:34 -07:00
dAxpeDDa
a5de4eeafc
Add sign-ext target feature to the WASM target 2022-07-23 16:58:10 +02:00
Ralf Jung
4e89a7c293 now we can make scalar_to_ptr a method on Scalar 2022-07-23 10:36:57 -04:00
Deadbeef
08cb878430 Remap elaborated obligation constness 2022-07-23 14:25:55 +00:00
Deadbeef
9b75f2d498 Allow ~const on super traits 2022-07-23 14:25:55 +00:00
Ralf Jung
665a7e8f56 remove some provenance-related machine hooks that Miri no longer needs 2022-07-23 10:15:37 -04:00
bors
2e43d068ce Auto merge of #99636 - matthiaskrgr:rollup-yg0xxkx, r=matthiaskrgr
Rollup of 4 pull requests

Successful merges:

 - #99580 (Don't suggest unnameable generic arguments)
 - #99617 (Update mdbook)
 - #99631 (Use span_bug in case of unexpected rib kind)
 - #99632 (Fix typo/grammar in locator.rs doc comment)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2022-07-23 10:40:41 +00:00
Matthias Krüger
7c5df1f425
Rollup merge of #99632 - danbev:locator.rs-typo, r=Dylan-DPC
Fix typo/grammar in locator.rs doc comment
2022-07-23 12:08:14 +02:00
Matthias Krüger
f510d98ad3
Rollup merge of #99631 - jmqd:master, r=oli-obk
Use span_bug in case of unexpected rib kind

Extremely minor QOL change to improve the ICE compiler output in case
this default match case is encountered (an unexpected rib kind).

I have limited experience in this area of the compiler; please let me know
if a span more precise than `param.ident.span` is more applicable.
2022-07-23 12:08:13 +02:00
Matthias Krüger
b6d6f100a1
Rollup merge of #99580 - fmease:fix-issue-99565, r=estebank
Don't suggest unnameable generic arguments

Fixes #99565.

`@rustbot` label T-compiler A-diagnostics
r? `@rust-lang/wg-diagnostics`
2022-07-23 12:08:11 +02:00
bors
47ba935965 Auto merge of #99320 - NiklasJonsson:84447/rustc_expand, r=compiler-errors
rustc_expand: Switch FxHashMap to FxIndexMap where iteration is used

Relates #84447
2022-07-23 07:59:54 +00:00
Daniel Bevenius
db977ca37e Fix typo/grammar in locator.rs doc comment 2022-07-23 07:31:20 +02:00
Jordan McQueen
e0c9be539a Use span_bug in case of unexpected rib kind
Extremely minor QOL change to improve the ICE output in case this
default match case is encountered (an unexpected rib kind).
2022-07-23 13:26:45 +09:00
bors
8aedb9c68d Auto merge of #99623 - RalfJung:rollup-0h066kc, r=RalfJung
Rollup of 3 pull requests

Successful merges:

 - #99588 (Update books)
 - #99602 (cargotest: do not run quickcheck tests in xsv)
 - #99607 (interpret: fix vtable check debug assertion)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2022-07-23 00:01:19 +00:00
Ralf Jung
25de227b43
Rollup merge of #99607 - RalfJung:vtable-check, r=eddyb
interpret: fix vtable check debug assertion

Fixes https://github.com/rust-lang/rust/issues/99605
Thanks to `@eddyb` for suggesting the fix!
2022-07-22 17:26:10 -04:00
Michael Goulet
22b2aae737 Do not resolve associated const when there is no provided value 2022-07-22 18:58:07 +00:00
Ralf Jung
5b7197af7f do not mark interior mutable shared refs as dereferenceable 2022-07-22 14:25:41 -04:00
Ralf Jung
307e80c1a6 rename PointerKind::Shared → SharedMutable to indicate this is NOT the usual shared reference 2022-07-22 14:22:05 -04:00
Daniel Paoliello
1f33785ed4 Enable raw-dylib for binaries 2022-07-22 09:55:14 -07:00
Tomasz Miąsko
e497fb19b0 Outline SubstFolder bug reporting code paths
Bug reporting macro `span_bug!` generates quite a bit of code,
we don't expect to execute. Outline it into a separate function.
2022-07-22 17:00:49 +02:00
Tomasz Miąsko
880bde0ced Inline SubstFolder::tcx 2022-07-22 17:00:49 +02:00
Tomasz Miąsko
0e6251dcde Inline Predicate::has_vars_bound_at_or_above 2022-07-22 17:00:49 +02:00
Tomasz Miąsko
bb73f171e5 Inline DebruijnIndex methods 2022-07-22 17:00:49 +02:00
Ralf Jung
19e29e9a57 interpret: fix vtable check debug assertion 2022-07-22 10:37:03 -04:00
ouz-a
447aaceed7 has_deref: simpler comparison, ty fix 2022-07-22 17:35:28 +03:00
ouz-a
c3e1e7a947 simplify more, ret_deref -> has_deref 2022-07-22 17:35:26 +03:00