about summary refs log tree commit diff
path: root/compiler/rustc_const_eval
AgeCommit message (Collapse)AuthorLines
2023-09-09implement and test ABI compatibility for transparent wrappers around NPO typesRalf Jung-14/+27
2023-09-09implement and test fn ptr ABI compatibility rulesRalf Jung-2/+7
2023-09-09give extra context to ABI mismatch errorsRalf Jung-23/+26
2023-09-09interpret: change ABI-compat test to be type-based, so the test is ↵Ralf Jung-50/+125
consistent across targets
2023-09-08Partially outline code inside the panic! macroJohn Kåre Alsaker-4/+4
2023-09-08Auto merge of #115372 - RalfJung:abi-assert-eq, r=davidtwcobors-66/+12
add rustc_abi(assert_eq) to test some guaranteed or at least highly expected ABI compatibility guarantees This new repr(transparent) test is super useful, it would have found https://github.com/rust-lang/rust/issues/115336 and found https://github.com/rust-lang/rust/issues/115404, https://github.com/rust-lang/rust/issues/115481, https://github.com/rust-lang/rust/issues/115509.
2023-09-08turns out Layout has some more things to worry about -- move ABI comparison ↵Ralf Jung-6/+2
into helper function like is_bool, and some special magic extra fields
2023-09-08accept some differences for rustc_abi(assert_eq), so that we can test more ↵Ralf Jung-60/+10
things to be compatible
2023-09-08Auto merge of #115608 - RalfJung:fn-arg-validity, r=oli-obkbors-0/+7
miri: catch function calls where the argument is caller-invalid / the return value callee-invalid When doing a type-changing copy, we must validate the data both at the old and new type. Fixes https://github.com/rust-lang/miri/issues/3017
2023-09-06miri: catch function calls where the argument is caller-invalid / the return ↵Ralf Jung-0/+7
value callee-invalid
2023-09-06still accept references to u8 slices and str in packed fieldsRalf Jung-2/+8
2023-09-05fix detecting references to packed unsized fieldsRalf Jung-1/+3
2023-09-05Refactor how MIR represents composite debuginfo.Camille GILLOT-32/+26
2023-09-04interpret: make MemPlace, Place, Operand types private to the interpreterRalf Jung-225/+306
2023-08-31miri ABI check: fix handling of 1-ZST; don't accept sign differencesRalf Jung-24/+23
2023-08-30miri function ABI check: specifically look for repr(transparent)Ralf Jung-71/+102
2023-08-30interpret: make sure we accept transparent newtypes as ABI-compatibleRalf Jung-16/+36
also we were missing the case for Vector arguments, so handle those as well
2023-08-30storage_live: avoid computing the layout unless necessaryRalf Jung-14/+65
2023-08-30unify passing of sized and unsized function arguments :-)Ralf Jung-31/+35
2023-08-30a bit of meta-related cleanup on ProjectableRalf Jung-36/+32
2023-08-30move marking-locals-live out of push_stack_frame, so it happens with ↵Ralf Jung-86/+150
argument passing this entirely avoids even creating unsized locals in Immediate::Uninitialized state
2023-08-30interpret: fix projecting into an unsized field of a localRalf Jung-97/+100
new invariant: Place::Local never refers to something unsized
2023-08-30Rollup merge of #115272 - RalfJung:miri-error-print, r=saethlinMatthias Krüger-5/+28
miri/diagnostics: don't forget to print_backtrace when ICEing on unexpected errors This should fix the missing output encountered [here](https://github.com/rust-lang/rust/issues/115145#issuecomment-1694334410). r? `@saethlin`
2023-08-29const_eval and codegen: audit uses of is_zstRalf Jung-12/+17
2023-08-28Auto merge of #115182 - RalfJung:abi-compat-sign, r=b-naberbors-15/+29
miri ABI compatibility check: accept u32 and i32 If only the sign differs, then surely these types are compatible. (We do still check that `arg_ext` is the same, just in case.) Also I made it so that the ABI check must *imply* that size and alignment are the same, but it doesn't actively check that itself. With how crazy ABI constraints get, having equal size and align really shouldn't be used as a signal for anything I think...
2023-08-28Rollup merge of #115164 - RalfJung:no-in-place-packed, r=b-naberMatthias Krüger-3/+29
MIR validation: reject in-place argument/return for packed fields As discussed [here](https://rust-lang.zulipchat.com/#narrow/stream/136281-t-opsem/topic/Packed.20fields.20and.20in-place.20function.20argument.2Freturn.20passing).
2023-08-27miri/diagnostics: don't forget to print_backtrace when ICEing on unexpected ↵Ralf Jung-5/+28
errors then also use the new helper in a few other places
2023-08-25Auto merge of #115184 - saethlin:local-allocated-spans, r=RalfJungbors-5/+18
Record allocation spans inside force_allocation This expands https://github.com/rust-lang/miri/pull/2940 to cover locals r? `@RalfJung`
2023-08-25Add a doc comment for the new hookBen Kimock-0/+3
Co-authored-by: Ralf Jung <post@ralfj.de>
2023-08-25Record allocation spans inside force_allocationBen Kimock-5/+15
2023-08-25Auto merge of #115138 - cjgillot:dse-move-packed, r=compiler-errorsbors-2/+2
Do not convert copies of packed projections to moves. This code path was introduced in https://github.com/rust-lang/rust/pull/113758 After seeing https://rust-lang.zulipchat.com/#narrow/stream/136281-t-opsem/topic/Packed.20fields.20and.20in-place.20function.20argument.2Freturn.20passing, this may be UB, so should be disallowed. This should not appear in normally-built MIR, which introduces temporary copies for packed projections.
2023-08-24miri ABI compatibility check: accept u32 and i32Ralf Jung-15/+29
2023-08-24Only check packed ADT.Camille GILLOT-2/+2
2023-08-24when terminating during unwinding, show the reason whyRalf Jung-13/+30
2023-08-24MIR validation: reject in-place argument/return for packed fieldsRalf Jung-5/+31
2023-08-20avoid return in tail positionRalf Jung-1/+1
Co-authored-by: fee1-dead <ent3rm4n@gmail.com>
2023-08-20interpret: have assert_* intrinsics call the panic machinery instead of a ↵Ralf Jung-21/+16
direct abort
2023-08-20interpret/miri: call panic_cannot_unwind lang item instead of hard-coding ↵Ralf Jung-3/+14
the same message
2023-08-20give some unwind-related terminators a more clear nameRalf Jung-13/+13
2023-08-20Auto merge of #113124 - nbdd0121:eh_frame, r=cjgillotbors-8/+42
Add MIR validation for unwind out from nounwind functions + fixes to make validation pass `@Nilstrieb` This is the MIR validation you asked in https://github.com/rust-lang/rust/pull/112403#discussion_r1222739722. Two passes need to be fixed to get the validation to pass: * `RemoveNoopLandingPads` currently unconditionally introduce a resume block (even there is none to begin with!), changed to not do that * Generator state transform introduces a `assert` which may unwind, and its drop elaboration also introduces many new `UnwindAction`s, so in this case run the AbortUnwindingCalls after the transformation. I believe this PR should also fix Rust-for-Linux/linux#1016, cc `@ojeda` r? `@Nilstrieb`
2023-08-19const-eval: ensure we never const-execute a function marked ↵Ralf Jung-32/+21
rustc_do_not_const_check
2023-08-18Add missing instantiation of generator ty in validatorGary Guo-1/+1
2023-08-18Add MIR validation for unwind out from nounwind functionsGary Guo-7/+41
2023-08-17Revert "Implement references VarDebugInfo."Camille GILLOT-6/+0
This reverts commit 2ec007191348ef7cc13eb55e44e007b02cf75cf3.
2023-08-16Make TerminatorEdge plural.Camille GILLOT-2/+2
2023-08-16Allow apply_terminator_effect to customize edges.Camille GILLOT-5/+8
2023-08-14Remove constness from `ImplSource::Param`Deadbeef-3/+2
2023-08-08Auto merge of #114637 - matthiaskrgr:rollup-544y8p5, r=matthiaskrgrbors-11/+2
Rollup of 11 pull requests Successful merges: - #106425 (Make ExitStatus implement Default) - #113480 (add aarch64-unknown-teeos target) - #113586 (Mention style for new syntax in tracking issue template) - #113593 (CFI: Fix error compiling core with LLVM CFI enabled) - #114612 (update llvm-wrapper include to silence deprecation warning) - #114613 (Prevent constant rebuilds of `rustc-main` (and thus everything else)) - #114615 (interpret: remove incomplete protection against invalid where clauses) - #114628 (Allowing re-implementation of mir_drops_elaborated query) - #114629 (tests: Uncomment now valid GAT code behind FIXME) - #114630 (Migrate GUI colors test to original CSS color format) - #114631 (add provisional cache test for new solver) r? `@ghost` `@rustbot` modify labels: rollup
2023-08-08Rollup merge of #114615 - RalfJung:interpret-invalid-where, r=lcnrMatthias Krüger-11/+2
interpret: remove incomplete protection against invalid where clauses Cc https://github.com/rust-lang/rust/issues/97477, https://github.com/rust-lang/project-const-generics/issues/37 r? ``@lcnr``
2023-08-08Auto merge of #114545 - fee1-dead-contrib:lower-impl-effect, r=oli-obkbors-12/+8
correctly lower `impl const` to bind to host effect param r? `@oli-obk`