summary refs log tree commit diff
path: root/compiler/rustc_mir/src/interpret
AgeCommit message (Collapse)AuthorLines
2020-12-20promoteds in statics may refer to staticsRalf Jung-8/+12
2020-12-17Auto merge of #79945 - jackh726:existential_trait_ref, r=nikomatsakisbors-1/+1
Move binder for dyn to each list item This essentially changes `ty::Binder<&'tcx List<ExistentialTraitRef>>` to `&'tcx List<ty::Binder<ExistentialTraitRef>>`. This is a first step in moving the `dyn Trait` representation closer to Chalk, which we've talked about in `@rust-lang/wg-traits.` r? `@nikomatsakis`
2020-12-15Always run intrinsics lowering passTomasz Miąsko-23/+8
Move intrinsics lowering pass from the optimization phase (where it would not run if -Zmir-opt-level=0), to the drop lowering phase where it runs unconditionally. The implementation of those intrinsics in code generation and interpreter is unnecessary. Remove it.
2020-12-13Rollup merge of #79942 - JCTyblaidd:static-mem-init, r=RalfJungYuki Okushi-5/+14
Add post-init hook for static memory for miri. Adds a post-initialization hook to treat memory initialized using the interpreter as if it was initialized in a static context. See: https://github.com/rust-lang/miri/pull/1644 & https://github.com/rust-lang/miri/issues/1643
2020-12-12Auto merge of #79931 - RalfJung:no-redundant-storage-live, r=oli-obkbors-23/+16
make redundant StorageLive UB The interesting behavior of StorageLive in loops (https://github.com/rust-lang/rust/issues/42371) has been fixed, so we can now finally make it a hard error to mark a local as live that is already live. :) r? `@oli-obk` Fixes https://github.com/rust-lang/rust/issues/42371
2020-12-11Move binder for dyn to each list itemJack Huey-1/+1
2020-12-11RustfmtJCTyblaidd-5/+1
2020-12-11Fix rustfmt failureJCTyblaidd-1/+1
2020-12-11Add post-initialization hook for static memory initialized using the ↵JCTyblaidd-1/+14
interpereter.
2020-12-11make redundant StorageLive UBRalf Jung-23/+16
2020-12-10CTFE: tweak abort-on-uninhabited messageRalf Jung-1/+7
2020-12-10Auto merge of #79621 - usbalbin:constier_maybe_uninit, r=RalfJungbors-3/+13
Constier maybe uninit I was playing around trying to make `[T; N]::zip()` in #79451 be `const fn`. One of the things I bumped into was `MaybeUninit::assume_init`. Is there any reason for the intrinsic `assert_inhabited<T>()` and therefore `MaybeUninit::assume_init` not being `const`? --- I have as best as I could tried to follow the instruction in [library/core/src/intrinsics.rs](https://github.com/rust-lang/rust/blob/master/library/core/src/intrinsics.rs#L11). I have no idea what I am doing but it seems to compile after some slight changes after the copy paste. Is this anywhere near how this should be done? Also any ideas for name of the feature gate? I guess `const_maybe_assume_init` is quite misleading since I have added some more methods. Should I add test? If so what should be tested?
2020-12-09Also generate `StorageDead` in constantsoli-16/+6
2020-12-07Add comment for assert_inhabited in ↵Albin Hedman-0/+2
compiler/rustc_mir/src/interpret/intrinsics.rs Co-authored-by: Ralf Jung <post@ralfj.de>
2020-12-07small `TypeVisitor` refactorBastian Kauschke-4/+5
2020-12-06Fix comments related to abort()Albin Hedman-6/+4
2020-12-05abort() now takes a msg parameterAlbin Hedman-5/+7
2020-12-03move interpret::MemoryKind::Heap to const evalVishnunarayan K I-20/+20
2020-12-03move intrinsic to CTFE, add FIXMEVishnunarayan K I-19/+3
2020-12-02Undo fn -> const fn for all intrinsics but assert_inhabitedAlbin Hedman-17/+1
2020-12-02rename MemoryKind::Heap to ConstHeap; bless testVishnunarayan K I-6/+12
2020-12-02Make some of MaybeUninit's methods constAlbin Hedman-0/+24
2020-12-01review commentsVishnunarayan K I-3/+3
2020-12-01add const_allocate intrisicVishnunarayan K I-3/+21
2020-11-26Fix new 'unnecessary trailing semicolon' warningsAaron Hill-1/+1
2020-11-21List all variants of TyKindNgo Iok Ui-1/+20
2020-11-20Exhaustively match in variant count instrinsicNgo Iok Ui-7/+10
2020-11-17Auto merge of #78779 - LeSeulArtichaut:ty-visitor-return, r=oli-obkbors-2/+4
Introduce `TypeVisitor::BreakTy` Implements MCP rust-lang/compiler-team#383. r? `@ghost` cc `@lcnr` `@oli-obk` ~~Blocked on FCP in rust-lang/compiler-team#383.~~
2020-11-16compiler: fold by valueBastian Kauschke-4/+4
2020-11-14Set the default `BreakTy` to `!`LeSeulArtichaut-0/+2
2020-11-14Introduce `TypeVisitor::BreakTy`LeSeulArtichaut-2/+2
2020-11-06inliner: Use substs_for_mir_bodyTomasz Miąsko-5/+1
Changes from 68965 extended the kind of instances that are being inlined. For some of those, the `instance_mir` returns a MIR body that is already expressed in terms of the types found in substitution array, and doesn't need further substitution. Use `substs_for_mir_body` to take that into account.
2020-11-05Rollup merge of #78742 - vn-ki:fix-issue-78655, r=oli-obkMara Bos-5/+10
make intern_const_alloc_recursive return error fix #78655 r? ``@oli-obk``
2020-11-04make intern_const_alloc_recursive return error fix #78655Vishnunarayan K I-5/+10
2020-11-04`u128` truncation and sign extension are not just interpreter relatedoli-12/+9
2020-11-04Add helper for getting an `int` out of a `Scalar`oli-4/+1
2020-11-04Replace `Scalar::zst` with a `Scalar::ZST` constantoli-3/+3
2020-11-04s/Scalar::Raw/Scalar::Intoli-3/+3
2020-11-04Split the "raw integer bytes" part out of `Scalar`Oliver Scherer-15/+8
2020-10-30Remove implicit `Continue` typeLeSeulArtichaut-2/+2
2020-10-30Use `ControlFlow::is{break,continue}`LeSeulArtichaut-1/+1
2020-10-30TypeVisitor: use `ControlFlow` in rustc_{mir,privacy,traits,typeck}LeSeulArtichaut-13/+10
2020-10-29Rollup merge of #78475 - RalfJung:validity-comment, r=oli-obkYuki Okushi-2/+1
fix a comment in validity check A few things changed since that comment was written; update it to the current reality. r? @oli-obk
2020-10-28fix a comment in validity checkRalf Jung-2/+1
2020-10-28Rollup merge of #78351 - RalfJung:validity-unsafe-cell, r=oli-obkDylan DPC-90/+87
Move "mutable thing in const" check from interning to validity This moves the check for mutable things (such as `UnsafeCell` or `&mut`) in a`const` from interning to validity. That means we can give more targeted error messages (pointing out *where* the problem lies), and we can simplify interning a bit. Also fix the interning mode used for promoteds in statics. r? @oli-obk
2020-10-26Auto merge of #68965 - eddyb:mir-inline-scope, r=nagisa,oli-obkbors-28/+51
rustc_mir: track inlined callees in SourceScopeData. We now record which MIR scopes are the roots of *other* (inlined) functions's scope trees, which allows us to generate the correct debuginfo in codegen, similar to what LLVM inlining generates. This PR makes the `ui` test `backtrace-debuginfo` pass, if the MIR inliner is turned on by default. Also, `#[track_caller]` is now correct in the face of MIR inlining (cc `@anp).` Fixes #76997. r? `@rust-lang/wg-mir-opt`
2020-10-26explain why interning is not as trivial as it might seemRalf Jung-0/+11
2020-10-26interning cleanup: we no longer need to distinguish Const and ConstInner; we ↵Ralf Jung-59/+23
no longer need the ignore_interior_mut_in_const hack
2020-10-26move &mut-in-const check from interning to validationRalf Jung-3/+11
2020-10-26move UnsafeCell-in-const check from interning to validationRalf Jung-34/+48