about summary refs log tree commit diff
path: root/compiler/rustc_mir/src/interpret
AgeCommit message (Collapse)AuthorLines
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
2020-10-25Auto merge of #78179 - RalfJung:miri-comments, r=oli-obkbors-23/+25
Miri engine: entirely skip interning of ZST, and improve some comments r? `@oli-obk`
2020-10-21Lift: take self by valueBastian Kauschke-1/+1
2020-10-21Miri engine interning: improve comments, and entirely skip ZSTRalf Jung-11/+17
2020-10-21Miri engine validity check: simplify code with 'matches!'Ralf Jung-12/+8
and improve a comment a bit
2020-10-21rustc_mir: support MIR-inlining #[track_caller] functions.Eduard-Mihai Burtescu-28/+51
2020-10-17Optimize const value interning for ZST typesWesley Wiser-0/+6
Interning can skip any inhabited ZST type in general.
2020-10-17Rollup merge of #76199 - Mark-Simulacrum:void-zero, r=nikomatsakisDylan DPC-1/+6
Permit uninhabited enums to cast into ints This essentially reverts part of #6204; it is unclear why that [commit](https://github.com/rust-lang/rust/pull/6204/commits/c0f587de34f30b060df8a88c4068740e587b9340) was introduced, and I suspect no one remembers. The changed code was only called from casting checks and appears to not affect any callers of that code (other than permitting this one case). Fixes #75647.
2020-10-13Replace absolute paths with relative onesest31-12/+14
Modern compilers allow reaching external crates like std or core via relative paths in modules outside of lib.rs and main.rs.