Ralf Jung
a9f9145b09
CTFE: exposing pointers and calling extern fn doesn't need an RFC, it is just impossible
2022-08-28 13:32:48 -04:00
Ralf Jung
1a1220c5e4
validation should only catch UB errors
2022-08-28 11:49:32 -04:00
Matthias Krüger
5b8081490f
Rollup merge of #101038 - RalfJung:interning-alignment, r=oli-obk
...
no alignment check during interning
This should fix https://github.com/rust-lang/rust/issues/101034
r? `@oli-obk`
Unfortunately we don't have a self-contained testcase for this problem. I am not sure how it can be triggered...
2022-08-28 09:35:19 +02:00
Ralf Jung
2e172473da
interpret: make read-pointer-as-bytes *always* work in Miri
...
and show some extra information when it happens in CTFE
2022-08-27 18:37:44 -04:00
Ralf Jung
e63a625711
interpret: rename relocation → provenance
2022-08-27 14:11:19 -04:00
bors
332cc8fb75
Auto merge of #100999 - nnethercote:shrink-FnAbi, r=bjorn3
...
Shrink `FnAbi`
Because they can take up a lot of memory in debug and release builds.
r? `@bjorn3`
2022-08-27 14:00:53 +00:00
Ralf Jung
aff9841507
remove a now-useless machine hook
2022-08-27 08:53:04 -04:00
Ralf Jung
4173e971b8
remove an ineffective check in const_prop
2022-08-27 08:53:04 -04:00
bors
bb8a08f011
Auto merge of #101064 - compiler-errors:rollup-fwm5m5f, r=compiler-errors
...
Rollup of 9 pull requests
Successful merges:
- #100724 (Migrate ast lowering to session diagnostic)
- #100735 (Migrate `rustc_ty_utils` to `SessionDiagnostic`)
- #100738 (Diagnostics migr const eval)
- #100744 (Migrate rustc_mir_dataflow to diagnostic structs)
- #100776 (Migrate `rustc_lint` errors to `SessionDiagnostic`)
- #100817 (sugg: suggest the usage of boolean value when there is a typo in the keyword)
- #100836 (Migrate `rustc_attr` crate diagnostics)
- #100890 (Migrate rustc_driver to SessionDiagnostic)
- #100900 (on `region_errors.rs`)
Failed merges:
- #100831 (Migrate `symbol_mangling` module to new diagnostics structs)
r? `@ghost`
`@rustbot` modify labels: rollup
2022-08-27 00:38:06 +00:00
Michael Goulet
b54344401a
Rollup merge of #100738 - nidnogg:diagnostics_migr_const_eval, r=davidtwco
...
Diagnostics migr const eval
This PR should eventually contain all diagnostic migrations for the `rustc_const_eval` crate.
r? `@davidtwco`
`@rustbot` label +A-translation
2022-08-26 15:56:23 -07:00
Ralf Jung
30fa931f92
make read_immediate error immediately on uninit, so ImmTy can carry initialized Scalar
2022-08-26 13:20:57 -04:00
Ralf Jung
2e52fe01cf
remove some now-unnecessary parameters from check_bytes
2022-08-26 13:20:56 -04:00
Ralf Jung
da13935ecc
remove enforce_number_init machine hook that Miri no longer needs
2022-08-26 13:20:56 -04:00
Ralf Jung
9d604f301b
fix an outdated machine hook name
2022-08-26 13:20:56 -04:00
Tomasz Miąsko
b48870b451
Replace Body::basic_blocks()
with field access
2022-08-26 14:27:08 +02:00
Ralf Jung
b85178a5fc
no alignment check during interning
2022-08-26 08:15:29 -04:00
Nicholas Nethercote
f974617bda
Move ArgAbi::pad_i32
into PassMode::Cast
.
...
Because it's only needed for that variant. This shrinks the types and
clarifies the logic.
2022-08-26 11:12:36 +10:00
Nicholas Nethercote
b853e8a619
Turn ArgAbi::pad
into a bool
.
...
Because it's only ever set to `None` or `Some(Reg::i32())`.
2022-08-26 10:53:41 +10:00
Nicholas Nethercote
e4bf113027
Box CastTarget
within PassMode
.
...
Because `PassMode::Cast` is by far the largest variant, but is
relatively rare.
This requires making `PassMode` not impl `Copy`, and `Clone` is no
longer necessary. This causes lots of sigil adjusting, but nothing very
notable.
2022-08-26 09:35:28 +10:00
bors
4d45b0745a
Auto merge of #100571 - cjgillot:mir-cost-visit, r=compiler-errors
...
Check projection types before inlining MIR
Fixes https://github.com/rust-lang/rust/issues/100550
I'm very unhappy with this solution, having to duplicate MIR validation code, but at least it removes the ICE.
r? `@compiler-errors`
2022-08-25 08:16:43 +00:00
Ralf Jung
cb4cd73664
extra sanity check against consts pointing to mutable memory
2022-08-23 08:12:37 -04:00
nidnogg
066796cece
Addressing tidy check fail
2022-08-22 12:32:42 -03:00
nidnogg
649749c7b0
Addressing last comment on PR review
2022-08-22 12:14:49 -03:00
nidnogg
13abae2deb
Switched errors to diags according to latest PRs
2022-08-22 00:02:36 -03:00
nidnogg
0a58b26e8a
Hotfix ftl err name, added check for err.code in create_feature_err
2022-08-21 23:22:55 -03:00
nidnogg
4c82845b3a
Fixed failing tests (missing labels), added automatic error code in create_feature_err() builder
2022-08-21 23:22:55 -03:00
nidnogg
d1f14ee1b0
Added several more migrations under ops.rs, failing some tests though
2022-08-21 23:22:54 -03:00
nidnogg
33e8aaf830
Migration on ops.rs for unstable const functions
2022-08-21 23:22:53 -03:00
nidnogg
70ea98633e
Migrated Unallowed function pointer calls in interpreter/ops
2022-08-21 23:22:51 -03:00
nidnogg
6af8e46a9a
Finished const_eval module migration, moving onto sibling folders
2022-08-21 23:22:50 -03:00
Ralf Jung
d7ee421870
fix ICE with extra-const-ub-checks
2022-08-21 20:00:38 -04:00
Camille GILLOT
10e71dfdb8
Also validate types before inlining.
2022-08-21 12:54:26 +02:00
Xiretza
7f3a6fd7f6
Replace #[lint/warning/error] with #[diag]
2022-08-21 09:17:43 +02:00
Matthias Krüger
c4b83ebe7c
Rollup merge of #100507 - cameron1024:suggest-lazy, r=compiler-errors
...
suggest `once_cell::Lazy` for non-const statics
Addresses https://github.com/rust-lang/rust/issues/100410
Some questions:
- removing the `if` seems to include too many cases (e.g. calls to non-const functions inside a `const fn`), but this code excludes the following case:
```rust
const FOO: Foo = non_const_fn();
```
Should we suggest `once_cell` in this case as well?
- The original issue mentions suggesting `AtomicI32` instead of `Mutex<i32>`, should this PR address that as well?
2022-08-20 07:08:59 +02:00
Dylan DPC
c4707ff8ef
Rollup merge of #100208 - RalfJung:dyn-upcast-nop, r=petrochenkov
...
make NOP dyn casts not require anything about the vtable
As suggested [on Zulip](https://rust-lang.zulipchat.com/#narrow/stream/144729-t-types/topic/dyn-upcasting.20stabilization/near/292151439 ). This matches what the codegen backends already do, and what Miri did do until https://github.com/rust-lang/rust/pull/99420 when I made it super extra paranoid.
2022-08-19 12:26:41 +05:30
Matthias Krüger
bb77336c0a
Rollup merge of #99972 - RalfJung:1zst, r=lcnr
...
interpret: only consider 1-ZST when searching for receiver
`repr(transparent)` currently entirely rejects ZST with alignment larger than 1 (which is odd, arguably [this](https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=02870f29396fa948c3123cb53d869ad1 ) should be accepted), so this should be safe. And if it ever isn't safe then that is very likely a bug elsewhere in the compiler.
2022-08-17 12:32:48 +02:00
Matthias Krüger
88af506e94
Rollup merge of #100600 - saethlin:rename-memory-hooks, r=RalfJung
...
Rename Machine memory hooks to suggest when they run
Some of the other memory hooks start with `before_` or `after_` to indicate that they run before or after a certain operation. These don't, so I was a bit confused as to when they are supposed to run.
`memory_read` can be read two ways in English, "memory was read" or "this is a memory read" so without the prefix this was especially ambiguous.
2022-08-16 06:06:00 +02:00
Ben Kimock
a5cc3a0557
Rename Machine memory hooks to suggest when they run
2022-08-15 19:54:43 -04:00
cameron
34e0d9a0bb
suggest lazy-static for non-const statics
2022-08-14 23:07:47 +01:00
Michael Goulet
9ab54df8d7
Rollup merge of #100438 - compiler-errors:issue-100360, r=lcnr
...
Erase regions better in `promote_candidate`
Use `tcx.erase_regions` instead of manually walking through the substs.... this also makes the code slightly simpler 🙈
Fixes #100360
Fixes #89851
2022-08-13 14:10:07 -07:00
Mark Rousskov
154a09dd91
Adjust cfgs
2022-08-12 16:28:15 -04:00
Dylan DPC
392ba5f111
Rollup merge of #100229 - RalfJung:extra-const-ub-checks, r=lcnr
...
add -Zextra-const-ub-checks to enable more UB checking in const-eval
Cc https://github.com/rust-lang/rust/issues/99923
r? `@oli-obk`
2022-08-12 20:39:11 +05:30
Michael Goulet
f94220f68e
Erase regions better in promote_candidate
2022-08-12 03:48:40 +00:00
Dylan DPC
bc0f9e39f4
Rollup merge of #100391 - nnethercote:improve-size-assertions, r=lqd
...
Improve size assertions
r? `@lqd`
2022-08-11 22:47:05 +05:30
Nicholas Nethercote
574ba831d4
Avoid repeating qualifiers on static_assert_size
calls.
...
Some of these don't need a `use` statement because there is already a
`#[macro_use] extern crate rustc_data_structures` item in the crate.
2022-08-10 11:51:21 +10:00
Ralf Jung
7b2a5f284e
dont rely on old macro-in-trait-impl bug
2022-08-09 08:23:16 -04:00
Dylan DPC
7efe24c3ed
Rollup merge of #100181 - RalfJung:alloc-ref-mutability, r=jackh726
...
add method to get the mutability of an AllocId
Miri needs this for https://github.com/rust-lang/miri/issues/2463 .
2022-08-09 17:34:52 +05:30
Ralf Jung
be6bb56ee0
add -Zextra-const-ub-checks to enable more UB checking in const-eval
2022-08-07 09:54:40 -04:00
Ralf Jung
3c8563abcf
make NOP dyn casts not require anything about the vtable
2022-08-06 18:31:59 -04:00
bors
bd04658eb6
Auto merge of #99743 - compiler-errors:fulfillment-context-cleanups, r=jackh726
...
Some `FulfillmentContext`-related cleanups
Use `ObligationCtxt` in some places, remove some `FulfillmentContext`s in others...
r? types
2022-08-06 06:48:15 +00:00