diff options
| author | bors <bors@rust-lang.org> | 2022-12-24 14:00:37 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2022-12-24 14:00:37 +0000 |
| commit | f5c3dfdbbf06d5997079ac7339de5002f7ced2a3 (patch) | |
| tree | 12dde3af79aba65b86e36f5e2ad34af74effc367 /compiler/rustc_const_eval/src/transform | |
| parent | 8766bbdc30a297aaa249193f5513fb261ccef17c (diff) | |
| parent | b4a6047e4b4facf0662687b2c8c948421072526a (diff) | |
| download | rust-f5c3dfdbbf06d5997079ac7339de5002f7ced2a3.tar.gz rust-f5c3dfdbbf06d5997079ac7339de5002f7ced2a3.zip | |
Auto merge of #105085 - oli-obk:stop_promoting_all_the_things, r=RalfJung
Stop promoting all the things fixes #91009 r? `@RalfJung`
Diffstat (limited to 'compiler/rustc_const_eval/src/transform')
| -rw-r--r-- | compiler/rustc_const_eval/src/transform/promote_consts.rs | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/compiler/rustc_const_eval/src/transform/promote_consts.rs b/compiler/rustc_const_eval/src/transform/promote_consts.rs index 6777fae74f1..04ce701452b 100644 --- a/compiler/rustc_const_eval/src/transform/promote_consts.rs +++ b/compiler/rustc_const_eval/src/transform/promote_consts.rs @@ -216,12 +216,6 @@ impl<'tcx> Validator<'_, 'tcx> { return Err(Unpromotable); } - // We cannot promote things that need dropping, since the promoted value - // would not get dropped. - if self.qualif_local::<qualifs::NeedsDrop>(place.local) { - return Err(Unpromotable); - } - Ok(()) } _ => bug!(), @@ -262,13 +256,17 @@ impl<'tcx> Validator<'_, 'tcx> { } } } else { - let span = self.body.local_decls[local].source_info.span; - span_bug!(span, "{:?} not promotable, qualif_local shouldn't have been called", local); + false } } fn validate_local(&mut self, local: Local) -> Result<(), Unpromotable> { if let TempState::Defined { location: loc, uses, valid } = self.temps[local] { + // We cannot promote things that need dropping, since the promoted value + // would not get dropped. + if self.qualif_local::<qualifs::NeedsDrop>(local) { + return Err(Unpromotable); + } valid.or_else(|_| { let ok = { let block = &self.body[loc.block]; |
