diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2022-12-02 08:28:10 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-12-02 08:28:10 +0100 |
| commit | 46c50af977c4dc0642bee000a6ccf99a17759b7b (patch) | |
| tree | eaa6256c86af5301ffc16273f40321c44452412e | |
| parent | f95385b5d42c56a8c6cc2453a1f4b0f83f38a029 (diff) | |
| parent | b7f2b1cd5cd08e4805bb3df0e8153445acfb04c7 (diff) | |
| download | rust-46c50af977c4dc0642bee000a6ccf99a17759b7b.tar.gz rust-46c50af977c4dc0642bee000a6ccf99a17759b7b.zip | |
Rollup merge of #105136 - RalfJung:deref-promotion-comment, r=oli-obk
clarify comment on Deref promotion r? `@oli-obk`
| -rw-r--r-- | compiler/rustc_const_eval/src/transform/promote_consts.rs | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/compiler/rustc_const_eval/src/transform/promote_consts.rs b/compiler/rustc_const_eval/src/transform/promote_consts.rs index f48bcd90809..6777fae74f1 100644 --- a/compiler/rustc_const_eval/src/transform/promote_consts.rs +++ b/compiler/rustc_const_eval/src/transform/promote_consts.rs @@ -318,14 +318,14 @@ impl<'tcx> Validator<'_, 'tcx> { match elem { ProjectionElem::Deref => { let mut promotable = false; + // When a static is used by-value, that gets desugared to `*STATIC_ADDR`, + // and we need to be able to promote this. So check if this deref matches + // that specific pattern. + // We need to make sure this is a `Deref` of a local with no further projections. // Discussion can be found at // https://github.com/rust-lang/rust/pull/74945#discussion_r463063247 if let Some(local) = place_base.as_local() { - // This is a special treatment for cases like *&STATIC where STATIC is a - // global static variable. - // This pattern is generated only when global static variables are directly - // accessed and is qualified for promotion safely. if let TempState::Defined { location, .. } = self.temps[local] { let def_stmt = self.body[location.block] .statements |
