about summary refs log tree commit diff
path: root/compiler/rustc_mir/src
AgeCommit message (Collapse)AuthorLines
2020-09-30Bypass const_item_mutation if const's type has Drop implDavid Tolnay-2/+11
2020-10-01Rollup merge of #77360 - oli-obk:zst_const_pat_regression, r=RalfJungDylan DPC-5/+5
References to ZSTs may be at arbitrary aligned addresses fixes #77320 r? @RalfJung
2020-10-01Rollup merge of #77343 - varkor:rustc_args_required_const-validation, r=lcnrDylan DPC-1/+1
Validate `rustc_args_required_const` Fixes https://github.com/rust-lang/rust/issues/74608.
2020-10-01Rollup merge of #77324 - Aaron1011:fix/const-item-mutation-ptr, r=petrochenkovDylan DPC-5/+9
Don't fire `const_item_mutation` lint on writes through a pointer Fixes #77321
2020-09-30Rollup merge of #77037 - matthiaskrgr:cl42ppy, r=Dylan-DPCJonas Schievink-3/+2
more tiny clippy cleanups commits stand alone and can be reviewed one by one
2020-09-30Remove E0019, use E0015 for inline assembly in a constDylan MacKenzie-2/+2
2020-09-30Better span for attribute suggestionsDylan MacKenzie-11/+19
`def_span` has the same issues as `body.span`, so do it this way instead.
2020-09-30Validate `rustc_args_required_const`varkor-1/+1
2020-09-30References to ZSTs may be at arbitrary aligned addressesOliver Scherer-5/+5
2020-09-29Remove default `build_error` implDylan MacKenzie-29/+12
Now all structured errors must have their own error code
2020-09-29Remove machinery for halting error outputDylan MacKenzie-15/+0
2020-09-29Don't stop const-checking after erroneous trait boundDylan MacKenzie-6/+17
2020-09-29Emit multiple function pointer errors from const-checkerDylan MacKenzie-4/+0
2020-09-29Don't emit duplicate errors for the return placeDylan MacKenzie-1/+2
2020-09-29Priority levelsDylan MacKenzie-10/+74
2020-09-29Bless mut testsDylan MacKenzie-2/+0
2020-09-29Give `MutDeref` a real error messageDylan MacKenzie-0/+9
2020-09-29Remove `ops::non_const`Dylan MacKenzie-58/+55
This helper function was meant to reduce code duplication between const-checking pre- and post-drop-elaboration. Most of the functionality is only relevant for the pre-drop-elaboration pass.
2020-09-29Fix "unstable in stable" errorDylan MacKenzie-1/+6
The "otherwise" note is printed before the suggestion currently.
2020-09-29Return a `DiagnosticBuilder` from structured errorsDylan MacKenzie-75/+64
This ensures that `emit_error` will actually cause compilation to fail.
2020-09-29Forbid generator-specific MIR in all const-contextsDylan MacKenzie-5/+3
2020-09-29`delay_span_bug` if const-checking an `async` functionDylan MacKenzie-2/+17
This errors during AST lowering. Any errors we emit here are just noise.
2020-09-29Continue after `impl Trait` in `const fn`Dylan MacKenzie-2/+0
2020-09-29Continue const-checking after errors when easyDylan MacKenzie-24/+0
This doesn't change any UI test output
2020-09-28Don't fire `const_item_mutation` lint on writes through a pointerAaron Hill-5/+9
Fixes #77321
2020-09-28Use `tracing` spans to trace the entire MIR interp stackOliver Scherer-21/+56
2020-09-28Auto merge of #77302 - RalfJung:rollup-n8gg3v6, r=RalfJungbors-13/+21
Rollup of 7 pull requests Successful merges: - #76454 (UI to unit test for those using Cell/RefCell/UnsafeCell) - #76474 (Add option to pass a custom codegen backend from a driver) - #76711 (diag: improve closure/generic parameter mismatch) - #77170 (Remove `#[rustc_allow_const_fn_ptr]` and add `#![feature(const_fn_fn_ptr_basics)]`) - #77194 (Add doc alias for iterator fold) - #77288 (fix building libstd for Miri on macOS) - #77295 (Update unstable-book: Fix ABNF in inline assembly docs) Failed merges: r? `@ghost`
2020-09-28Rollup merge of #77170 - ecstatic-morse:const-fn-ptr, r=oli-obkRalf Jung-13/+21
Remove `#[rustc_allow_const_fn_ptr]` and add `#![feature(const_fn_fn_ptr_basics)]` `rustc_allow_const_fn_ptr` was a hack to work around the lack of an escape hatch for the "min `const fn`" checks in const-stable functions. Now that we have co-opted `allow_internal_unstable` for this purpose, we no longer need a bespoke attribute. Now this functionality is gated under `const_fn_fn_ptr_basics` (how concise!), and `#[allow_internal_unstable(const_fn_fn_ptr_basics)]` replaces `#[rustc_allow_const_fn_ptr]`. `const_fn_fn_ptr_basics` allows function pointer types to appear in the arguments and locals of a `const fn` as well as function pointer casts to be performed inside a `const fn`. Both of these were allowed in constants and statics already. Notably, this does **not** allow users to invoke function pointers in a const context. Presumably, we will use a nicer name for that (`const_fn_ptr`?). r? @oli-obk
2020-09-28Auto merge of #76899 - wesleywiser:experimental_unsound_mir_opts_flag, r=oli-obkbors-1/+3
[mir-opt] Introduce a new flag to enable experimental/unsound mir opts This implements part of https://github.com/rust-lang/compiler-team/issues/319. The exact name of this flag was not decided as part of that MCP and some people expressed that it should include "unsound" in some way. I've chosen to use `enable-experimental-unsound-mir-opts` as the name. While long, I don't think that matters too much as really it will only be used by some mir-opt tests. If you object or have a better name, please leave a comment! r? `@oli-obk` cc `@rust-lang/wg-mir-opt` `@RalfJung`
2020-09-28Auto merge of #77236 - matthewjasper:defer-typeof-impl-trait, r=davidtwcobors-10/+19
Compute underlying type of impl trait types later in compilation Also change a `bug!` to `delay_span_bug` Closes #74018
2020-09-27[mir-opt] Introduce a new flag to enable experimental/unsound mir optsWesley Wiser-1/+3
2020-09-27Auto merge of #77242 - ecstatic-morse:dataflow-switch-int, r=jonas-schievinkbors-132/+228
Replace `discriminant_switch_effect` with more general version #68528 added a new edge-specific effect for `SwitchInt` terminators, `discriminant_switch_effect`, to the dataflow framework. While this accomplished the short-term goal of making drop elaboration more precise, it wasn't really useful in other contexts: It only supported `SwitchInt`s on the discriminant of an `enum` and did not allow effects to be applied along the "otherwise" branch. In const-propagation, for example, arbitrary edge-specific effects for the targets of a `SwitchInt` can be used to remember the value a `match` scrutinee must have in each arm. This PR replaces `discriminant_switch_effect` with a more general `switch_int_edge_effects` method. The new method has a slightly different interface from the other edge-specific effect methods (e.g. `call_return_effect`). This divergence is explained in the new method's documentation, and reading the changes to the various dataflow impls as well as `direction.rs` should further clarify things. This PR should not change behavior.
2020-09-27Remove `rustc_allow_const_fn_ptr`Dylan MacKenzie-6/+0
This was a hack to work around the lack of an escape hatch for the "min `const fn`" checks in const-stable functions. Now that we have co-opted `allow_internal_unstable` for this purpose, we no longer need the bespoke attribute.
2020-09-27Add a feature gate for basic function pointer use in `const fn`Dylan MacKenzie-7/+21
2020-09-27Rollup merge of #77203 - ecstatic-morse:const-stability-attr-checks, r=oli-obkJonas Schievink-4/+1
Check for missing const-stability attributes in `rustc_passes` Currently, this happens as a side effect of `is_min_const_fn`, which is non-obvious. Also adds a test for this case, since we didn't seem to have one before.
2020-09-26Remove intra-doc linkDylan MacKenzie-1/+1
2020-09-27Rollup merge of #77231 - oli-obk:clippy_const_fn, r=ManishearthJonas Schievink-463/+0
Move helper function for `missing_const_for_fn` out of rustc to clippy cc @rust-lang/clippy @ecstatic-morse #76618 r? @Manishearth I also removed all support for suggesting a function could be `const fn` when that would require feature gates to actually work. This means we'll now have to maintain this ourselves in clippy, but that's how most lints work anyway, so...
2020-09-27Rollup merge of #77107 - bugadani:perf, r=oli-obkJonas Schievink-5/+5
Enable const propagation into operands at mir_opt_level=2 Feature was added in #74507 but gated with `mir_opt_level>=3` because of compile time regressions. Let's see whether the LLVM 11 update solves that. As the [perf results](https://github.com/rust-lang/rust/pull/77107#issuecomment-697668154) show, enabling this optimization results in a lot less regression as before. cc @oli-obk r? @ghost
2020-09-26Update dataflow impls to reflect new interfaceDylan MacKenzie-33/+116
2020-09-26Update engine to use new interfaceDylan MacKenzie-78/+68
2020-09-26Replace `discriminant_switch_effect` with more general versionDylan MacKenzie-21/+44
...that allows arbitrary effects on each edge of a `SwitchInt` terminator.
2020-09-26Delay bug for non-universal regions in member constraintsMatthew Jasper-10/+19
2020-09-26Move `qualify_min_const_fn` out of rustc into clippyOliver Scherer-463/+0
2020-09-26Rollup merge of #77211 - est31:remove_unused_allow, r=oli-obkRalf Jung-2/+0
Remove unused #[allow(...)] statements from compiler/
2020-09-26Rollup merge of #77122 - ecstatic-morse:const-fn-arithmetic, r=RalfJung,oli-obkRalf Jung-9/+46
Add `#![feature(const_fn_floating_point_arithmetic)]` cc #76618 This is a template for splitting up `const_fn` into granular feature gates. I think this will make it easier, both for us and for users, to track stabilization of each individual feature. We don't *have* to do this, however. We could also keep stabilizing things out from under `const_fn`. cc @rust-lang/wg-const-eval r? @oli-obk
2020-09-26Rollup merge of #77093 - lcnr:const-generics-infer-warning, r=varkorRalf Jung-4/+6
merge `need_type_info_err(_const)` I hoped that this would automatically solve #76737 but it doesn't quite seem like it fixes #77092 r? @varkor
2020-09-26rename functionsBastian Kauschke-3/+6
2020-09-26Auto merge of #70743 - oli-obk:eager_const_to_pat_conversion, r=eddybbors-1/+44
Fully destructure constants into patterns r? `@varkor` as discussed in https://rust-lang.zulipchat.com/#narrow/stream/131828-t-compiler/topic/constants.20in.20patterns/near/192789924 we should probably crater it once reviewed
2020-09-26Remove unused #[allow(...)] statements from compiler/est31-2/+0
2020-09-25Avoid calling `Symbol::interner` in `compute_codegen_unit_name`marmeladema-3/+1