diff options
| author | Ralf Jung <post@ralfj.de> | 2024-03-21 13:53:00 +0100 |
|---|---|---|
| committer | Ralf Jung <post@ralfj.de> | 2024-04-23 23:02:54 +0200 |
| commit | 173d1bd36be1925c0cb0b0bf55740c26db4ac476 (patch) | |
| tree | a4ecdef1b76bd546deb5d3346ad378310c62868b /compiler/rustc_const_eval/src/const_eval | |
| parent | bf021ea6258bcd886fae523e8448f3697dd041fe (diff) | |
| download | rust-173d1bd36be1925c0cb0b0bf55740c26db4ac476.tar.gz rust-173d1bd36be1925c0cb0b0bf55740c26db4ac476.zip | |
properly fill a promoted's required_consts
then we can also make all_required_consts_are_checked a constant instead of a function
Diffstat (limited to 'compiler/rustc_const_eval/src/const_eval')
| -rw-r--r-- | compiler/rustc_const_eval/src/const_eval/dummy_machine.rs | 7 | ||||
| -rw-r--r-- | compiler/rustc_const_eval/src/const_eval/machine.rs | 14 |
2 files changed, 2 insertions, 19 deletions
diff --git a/compiler/rustc_const_eval/src/const_eval/dummy_machine.rs b/compiler/rustc_const_eval/src/const_eval/dummy_machine.rs index de8de021b09..7b6828c6e18 100644 --- a/compiler/rustc_const_eval/src/const_eval/dummy_machine.rs +++ b/compiler/rustc_const_eval/src/const_eval/dummy_machine.rs @@ -46,11 +46,8 @@ impl<'mir, 'tcx: 'mir> interpret::Machine<'mir, 'tcx> for DummyMachine { type MemoryKind = !; const PANIC_ON_ALLOC_FAIL: bool = true; - #[inline(always)] - fn all_required_consts_are_checked(_ecx: &InterpCx<'mir, 'tcx, Self>) -> bool { - // We want to just eval random consts in the program, so `eval_mir_const` can fail. - false - } + // We want to just eval random consts in the program, so `eval_mir_const` can fail. + const ALL_CONSTS_ARE_PRECHECKED: bool = false; #[inline(always)] fn enforce_alignment(_ecx: &InterpCx<'mir, 'tcx, Self>) -> bool { diff --git a/compiler/rustc_const_eval/src/const_eval/machine.rs b/compiler/rustc_const_eval/src/const_eval/machine.rs index 2d06460f353..dd835279df3 100644 --- a/compiler/rustc_const_eval/src/const_eval/machine.rs +++ b/compiler/rustc_const_eval/src/const_eval/machine.rs @@ -375,20 +375,6 @@ impl<'mir, 'tcx> interpret::Machine<'mir, 'tcx> for CompileTimeInterpreter<'mir, const PANIC_ON_ALLOC_FAIL: bool = false; // will be raised as a proper error - #[inline] - fn all_required_consts_are_checked(ecx: &InterpCx<'mir, 'tcx, Self>) -> bool { - // Generally we expect required_consts to be properly filled, except for promoteds where - // storing these consts shows up negatively in benchmarks. A promoted can only be relevant - // if its parent MIR is relevant, and the consts in the promoted will be in the parent's - // `required_consts`, so we are still sure to catch any const-eval bugs, just a bit less - // directly. - if ecx.frame_idx() == 0 && ecx.frame().body.source.promoted.is_some() { - false - } else { - true - } - } - #[inline(always)] fn enforce_alignment(ecx: &InterpCx<'mir, 'tcx, Self>) -> bool { matches!(ecx.machine.check_alignment, CheckAlignment::Error) |
