about summary refs log tree commit diff
path: root/compiler/rustc_const_eval/src/util
AgeCommit message (Collapse)AuthorLines
2024-09-30panic when an interpreter error gets unintentionally discardedRalf Jung-1/+3
2024-09-22Reformat using the new identifier sorting from rustfmtMichael Goulet-1/+1
2024-09-16layout computation: eagerly error for unexpected unsized fieldsLukas Markeffsky-3/+5
2024-09-16make `LayoutCx` not genericLukas Markeffsky-2/+2
2024-09-08clarify comments and names in check_validity_requirementRalf Jung-9/+11
2024-09-08interpret: reset padding during validationRalf Jung-1/+1
2024-09-08interpret: reset provenance on typed copiesRalf Jung-4/+8
2024-08-14Auto merge of #128812 - nnethercote:shrink-TyKind-FnPtr, r=compiler-errorsbors-1/+1
Shrink `TyKind::FnPtr`. By splitting the `FnSig` within `TyKind::FnPtr` into `FnSigTys` and `FnHeader`, which can be packed more efficiently. This reduces the size of the hot `TyKind` type from 32 bytes to 24 bytes on 64-bit platforms. This reduces peak memory usage by a few percent on some benchmarks. It also reduces cache misses and page faults similarly, though this doesn't translate to clear cycles or wall-time improvements on CI. r? `@compiler-errors`
2024-08-09Shrink `TyKind::FnPtr`.Nicholas Nethercote-1/+1
By splitting the `FnSig` within `TyKind::FnPtr` into `FnSigTys` and `FnHeader`, which can be packed more efficiently. This reduces the size of the hot `TyKind` type from 32 bytes to 24 bytes on 64-bit platforms. This reduces peak memory usage by a few percent on some benchmarks. It also reduces cache misses and page faults similarly, though this doesn't translate to clear cycles or wall-time improvements on CI.
2024-08-08Rename struct_tail_erasing_lifetimes to struct_tail_for_codegenMichael Goulet-1/+1
2024-08-08Normalize struct tail properly in disalignment checkMichael Goulet-1/+1
2024-08-06pass the right `ParamEnv` to `might_permit_raw_init_strict`y21-5/+5
2024-08-03Miri: add a flag to do recursive validity checkingRalf Jung-1/+1
2024-07-29Reformat `use` declarations.Nicholas Nethercote-8/+5
The previous commit updated `rustfmt.toml` appropriately. This commit is the outcome of running `x fmt --all` with the new formatting options.
2024-06-13rename CompileTimeInterpreter -> CompileTimeMachine, CompileTimeEvalContext ↵Ralf Jung-4/+4
-> CompileTimeInterpCx to match the terms used in the shared interpreter infrastructure
2024-05-27interpret: get rid of 'mir lifetime everywhereRalf Jung-2/+2
2024-05-23Remove `#[macro_use] extern crate tracing` from `rustc_const_eval`.Nicholas Nethercote-0/+2
2024-05-17Remove `Rvalue::CheckedBinaryOp`Scott McMurray-3/+6
2024-05-13Remove `extern crate rustc_middle` from `rustc_const_eval`.Nicholas Nethercote-0/+3
This requires exporting the interpreter macros so they can be used with `use crate::interpret::*`.
2024-05-09Make builtin_deref just return a TyMichael Goulet-1/+1
2024-04-08Actually create ranged int types in the type system.Oli Scherer-0/+1
2024-03-23Add+Use `mir::BinOp::Cmp`Scott McMurray-2/+2
2024-03-22Programmatically convert some of the pat ctorsMichael Goulet-1/+1
2024-03-02Rollup merge of #121731 - oli-obk:eager_opaque_checks, r=compiler-errorsGuillaume Boisseau-22/+3
Now that inlining, mir validation and const eval all use reveal-all, we won't be constraining hidden types here anymore r? `@compiler-errors` one bubble down, two more to go the test is unrelated, just something I noticed would be good to test in both the old solver and the new.
2024-02-28Now that inlining, mir validation and const eval all use reveal-all, we ↵Oli Scherer-22/+3
won't be constraining hidden types here anymore
2024-02-27Split rustc_type_ir to avoid rustc_ast from depending on itOli Scherer-2/+1
2024-02-21make it possible for outside crates to inspect a mir::ConstValue with the ↵Ralf Jung-2/+7
interpreter
2024-02-10unstably allow constants to refer to statics and read from immutable staticsRalf Jung-4/+4
2024-02-06Add CoroutineClosure to TyKind, AggregateKind, UpvarArgsMichael Goulet-0/+1
2024-01-25Auto merge of #119627 - oli-obk:const_prop_lint_n̵o̵n̵sense, r=cjgillotbors-2/+2
Remove all ConstPropNonsense We track all locals and projections on them ourselves within the const propagator and only use the InterpCx to actually do some low level operations or read from constants (via `OpTy` we get for said constants). This helps moving the const prop lint out from the normal pipeline and running it just based on borrowck information. This in turn allows us to make progress on https://github.com/rust-lang/rust/pull/108730#issuecomment-1875557745 there are various follow up cleanups that can be done after this PR (e.g. not matching on Rvalue twice and doing binop checks twice), but lets try landing this one first. r? `@RalfJung`
2024-01-23partially inline `eval_rvalue_into_place` for const prop lintOli Scherer-2/+2
2024-01-22const-eval interner: from-scratch rewrite using mutability information from ↵Ralf Jung-0/+1
provenance rather than types
2023-12-28Remove movability from TyKind::CoroutineMichael Goulet-1/+1
2023-12-10Revert "Don't print host effect param in pretty path_generic_args"Deadbeef-1/+0
This reverts commit f1bf874fb13703d706fc8184407c6df12555d8e9.
2023-12-09Don't print host effect param in pretty path_generic_argsMichael Goulet-0/+1
2023-10-31Turn const_caller_location from a query to a hookOli Scherer-5/+8
2023-10-28interpret: call caller_location logic the same way codegen does, and share ↵Ralf Jung-0/+64
some code
2023-10-21Make `ty::print::Printer` take `&mut self` instead of `self`Nilstrieb-37/+39
This simplifies the code by removing all the `self` assignments and makes the flow of data clearer - always into the printer. Especially in v0 mangling, which already used `&mut self` in some places, it gets a lot more uniform.
2023-10-20s/Generator/Coroutine/Oli Scherer-2/+2
2023-10-17Remove `Print::Error`Nilstrieb-1/+1
All printing goes through `fmt::Error` now.
2023-10-17Remove `Printer::Error`Nilstrieb-19/+17
It's always a `fmt::Error` except in some cases where it was `!`, but we're not really winning anything in that case.
2023-10-17Remove `Print::Output`Nilstrieb-1/+1
Now that `Printer` doesn't have subprinters anymore, the output of a printing operation is always the same.
2023-10-17Remove "subprinter" types from `Printer`Nilstrieb-18/+12
These are `Self` in almost all printers except one, which can just store the state as a field instead. This simplifies the printer and allows for further simplifications, for example using `&mut self` instead of passing around the printer.
2023-10-07Auto merge of #115583 - RalfJung:packed-unsized, r=lcnrbors-1/+9
fix detecting references to packed unsized fields Fixes https://github.com/rust-lang/rust/issues/115396 This is a breaking change, but permitted as a soundness fix.
2023-10-02have better explanation for `relate_types`ouz-a-3/+3
2023-10-02change is_subtype to relate_typesouz-a-5/+11
2023-09-23Remove GeneratorWitness and rename GeneratorWitnessMIR.Camille GILLOT-2/+1
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-04interpret: make MemPlace, Place, Operand types private to the interpreterRalf Jung-1/+1