Encode less consts.
This commit is contained in:
parent
0658d8c097
commit
09ac459bc7
1 changed files with 16 additions and 7 deletions
|
@ -801,8 +801,8 @@ fn should_encode_mir(tcx: TyCtxt<'_>, def_id: LocalDefId) -> (bool, bool) {
|
||||||
DefKind::AnonConst | DefKind::AssocConst | DefKind::Static | DefKind::Const => {
|
DefKind::AnonConst | DefKind::AssocConst | DefKind::Static | DefKind::Const => {
|
||||||
(true, false)
|
(true, false)
|
||||||
}
|
}
|
||||||
// Closures and functions
|
// Full-fledged functions
|
||||||
DefKind::Closure | DefKind::AssocFn | DefKind::Fn => {
|
DefKind::AssocFn | DefKind::Fn => {
|
||||||
let generics = tcx.generics_of(def_id);
|
let generics = tcx.generics_of(def_id);
|
||||||
let needs_inline = (generics.requires_monomorphization(tcx)
|
let needs_inline = (generics.requires_monomorphization(tcx)
|
||||||
|| tcx.codegen_fn_attrs(def_id).requests_inline())
|
|| tcx.codegen_fn_attrs(def_id).requests_inline())
|
||||||
|
@ -812,6 +812,15 @@ fn should_encode_mir(tcx: TyCtxt<'_>, def_id: LocalDefId) -> (bool, bool) {
|
||||||
let always_encode_mir = tcx.sess.opts.debugging_opts.always_encode_mir;
|
let always_encode_mir = tcx.sess.opts.debugging_opts.always_encode_mir;
|
||||||
(is_const_fn, needs_inline || always_encode_mir)
|
(is_const_fn, needs_inline || always_encode_mir)
|
||||||
}
|
}
|
||||||
|
// Closures can't be const fn.
|
||||||
|
DefKind::Closure => {
|
||||||
|
let generics = tcx.generics_of(def_id);
|
||||||
|
let needs_inline = (generics.requires_monomorphization(tcx)
|
||||||
|
|| tcx.codegen_fn_attrs(def_id).requests_inline())
|
||||||
|
&& tcx.sess.opts.output_types.should_codegen();
|
||||||
|
let always_encode_mir = tcx.sess.opts.debugging_opts.always_encode_mir;
|
||||||
|
(false, needs_inline || always_encode_mir)
|
||||||
|
}
|
||||||
// Generators require optimized MIR to compute layout.
|
// Generators require optimized MIR to compute layout.
|
||||||
DefKind::Generator => (false, true),
|
DefKind::Generator => (false, true),
|
||||||
// The others don't have MIR.
|
// The others don't have MIR.
|
||||||
|
@ -1206,6 +1215,11 @@ impl EncodeContext<'a, 'tcx> {
|
||||||
}
|
}
|
||||||
if encode_const {
|
if encode_const {
|
||||||
record!(self.tables.mir_for_ctfe[def_id.to_def_id()] <- self.tcx.mir_for_ctfe(def_id));
|
record!(self.tables.mir_for_ctfe[def_id.to_def_id()] <- self.tcx.mir_for_ctfe(def_id));
|
||||||
|
|
||||||
|
let abstract_const = self.tcx.mir_abstract_const(def_id);
|
||||||
|
if let Ok(Some(abstract_const)) = abstract_const {
|
||||||
|
record!(self.tables.mir_abstract_consts[def_id.to_def_id()] <- abstract_const);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
record!(self.tables.promoted_mir[def_id.to_def_id()] <- self.tcx.promoted_mir(def_id));
|
record!(self.tables.promoted_mir[def_id.to_def_id()] <- self.tcx.promoted_mir(def_id));
|
||||||
|
|
||||||
|
@ -1213,11 +1227,6 @@ impl EncodeContext<'a, 'tcx> {
|
||||||
if !unused.is_empty() {
|
if !unused.is_empty() {
|
||||||
record!(self.tables.unused_generic_params[def_id.to_def_id()] <- unused);
|
record!(self.tables.unused_generic_params[def_id.to_def_id()] <- unused);
|
||||||
}
|
}
|
||||||
|
|
||||||
let abstract_const = self.tcx.mir_abstract_const(def_id);
|
|
||||||
if let Ok(Some(abstract_const)) = abstract_const {
|
|
||||||
record!(self.tables.mir_abstract_consts[def_id.to_def_id()] <- abstract_const);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue