summary refs log tree commit diff
path: root/compiler/rustc_mir/src/interpret
AgeCommit message (Collapse)AuthorLines
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.
2020-10-13Auto merge of #77796 - jonas-schievink:switchint-refactor, r=oli-obkbors-5/+5
Refactor how SwitchInt stores jump targets Closes https://github.com/rust-lang/rust/issues/65693
2020-10-10Refactor how SwitchInt stores jump targetsJonas Schievink-5/+5
2020-10-05query_name_of_opt_const_arg -> query_name_opt_const_argBastian Kauschke-2/+2
2020-10-04cleanup WithOptConstParam queriesBastian Kauschke-5/+1
2020-10-01Only mention that a stack frame is being popped when starting to do soOliver Scherer-5/+4
2020-09-28Use `tracing` spans to trace the entire MIR interp stackOliver Scherer-21/+56
2020-09-25Implement `Display` for `DisambiguatedDefPathData` and `DefPathData`marmeladema-8/+2
2020-09-25Move from {{closure}}#0 syntax to {closure#0} for (def) path componentsmarmeladema-2/+7
2020-09-25Rollup merge of #76973 - lzutao:unstably-const-assume, r=oli-obkJonas Schievink-2/+8
Unstably allow assume intrinsic in const contexts Not sure much about this usage because there are concerns about [blocking optimization][1] and [slowing down LLVM][2] when using `assme` intrinsic in inline functions. But since Oli suggested in https://github.com/rust-lang/rust/issues/76960#issuecomment-695772221, here we are. [1]: https://github.com/rust-lang/rust/pull/54995#issuecomment-429302709 [2]: https://github.com/rust-lang/rust/issues/49572#issuecomment-589615423
2020-09-22Miri: more informative deallocation error messagesRalf Jung-4/+8
2020-09-21Rollup merge of #76581 - lcnr:bound-too-generic, r=eddybecstatic-morse-4/+2
do not ICE on bound variables, return `TooGeneric` instead fixes #73260, fixes #74634, fixes #76595 r? @nikomatsakis
2020-09-21fix InterpCx resolveBastian Kauschke-5/+10
2020-09-20Add unstably const support for assume intrinsicLzu Tao-0/+6
2020-09-20Correct file path after some restructures in compilerLzu Tao-2/+2
2020-09-20Auto merge of #74949 - oli-obk:validate_const_eval_raw, r=RalfJungbors-64/+31
Validate constants during `const_eval_raw` This PR implements the groundwork for https://github.com/rust-lang/rust/issues/72396 * constants are now validated during `const_eval_raw` * to prevent cycle errors, we do not validate references to statics anymore beyond the fact that they are not dangling * the `const_eval` query ICEs if used on `static` items * as a side effect promoteds are now evaluated to `ConstValue::Scalar` again (since they are just a reference to the actual promoted allocation in most cases).
2020-09-20miri: correctly deal with `ConstKind::Bound`Bastian Kauschke-4/+2
2020-09-19Rollup merge of #76757 - matthiaskrgr:clippy_try_into, r=lcnrRalf Jung-4/+2
don't convert types to the same type with try_into (clippy::useless_conversion)
2020-09-19Address review commentsOliver Scherer-22/+22
2020-09-19Unify the names of const eval queries and their return typesOliver Scherer-3/+3
2020-09-19Rename const eval queries to reflect the validation changesOliver Scherer-2/+2
2020-09-19Do not call the `const_eval` query in mir interpretation except for caching ↵Oliver Scherer-33/+7
of nulary intrinsics
2020-09-19Stop using the `const_eval` query for initializers of staticsOliver Scherer-12/+3
As a side effect, we now represent most promoteds as `ConstValue::Scalar` again. This is useful because all implict promoteds are just references anyway and most explicit promoteds are numeric arguments to `asm!` or SIMD instructions.
2020-09-19Validate constants during `const_eval_raw`Oliver Scherer-8/+10