diff --git a/compiler/rustc_middle/src/ty/query.rs b/compiler/rustc_middle/src/ty/query.rs index 73e4a39681e7..478617d055a8 100644 --- a/compiler/rustc_middle/src/ty/query.rs +++ b/compiler/rustc_middle/src/ty/query.rs @@ -63,6 +63,7 @@ use rustc_span::symbol::Symbol; use rustc_span::{Span, DUMMY_SP}; use rustc_target::abi; use rustc_target::spec::PanicStrategy; +use std::mem; use std::ops::Deref; use std::path::PathBuf; use std::sync::Arc; @@ -230,7 +231,13 @@ macro_rules! define_callbacks { value: query_provided::$name<'tcx>, ) -> query_values::$name<'tcx> { query_if_arena!([$($modifiers)*] - (&*_tcx.query_system.arenas.$name.alloc(value)) + { + if mem::needs_drop::>() { + &*_tcx.query_system.arenas.$name.alloc(value) + } else { + &*_tcx.arena.dropless.alloc(value) + } + } (value) ) }