diff options
| author | Ralf Jung <post@ralfj.de> | 2023-09-05 15:12:18 +0200 |
|---|---|---|
| committer | Ralf Jung <post@ralfj.de> | 2023-10-15 18:13:31 +0200 |
| commit | f3f9b795bdaccd8284baba295810e87646754c28 (patch) | |
| tree | 850bc64dc61769301b12001add54ac4ef672e76d /compiler/rustc_const_eval/src/const_eval | |
| parent | ea9a24e32e5ce4d049c1ac0d85613f9f100fa7fb (diff) | |
place evaluation: require the original pointer to be aligned if an access happens
Diffstat (limited to 'compiler/rustc_const_eval/src/const_eval')
| -rw-r--r-- | compiler/rustc_const_eval/src/const_eval/eval_queries.rs | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/compiler/rustc_const_eval/src/const_eval/eval_queries.rs b/compiler/rustc_const_eval/src/const_eval/eval_queries.rs index 4adfbe336af..6b612c34837 100644 --- a/compiler/rustc_const_eval/src/const_eval/eval_queries.rs +++ b/compiler/rustc_const_eval/src/const_eval/eval_queries.rs @@ -1,3 +1,5 @@ +use std::mem; + use either::{Left, Right}; use rustc_hir::def::DefKind; @@ -73,9 +75,9 @@ fn eval_body_using_ecx<'mir, 'tcx>( None => InternKind::Constant, } }; - ecx.machine.check_alignment = CheckAlignment::No; // interning doesn't need to respect alignment + let check_alignment = mem::replace(&mut ecx.machine.check_alignment, CheckAlignment::No); // interning doesn't need to respect alignment intern_const_alloc_recursive(ecx, intern_kind, &ret)?; - // we leave alignment checks off, since this `ecx` will not be used for further evaluation anyway + ecx.machine.check_alignment = check_alignment; debug!("eval_body_using_ecx done: {:?}", ret); Ok(ret) |
