1
Fork 0

Add new query just for static initializers

This commit is contained in:
Oli Scherer 2023-10-09 08:02:46 +00:00
parent fc9d1a8133
commit 95004e5ae2
13 changed files with 65 additions and 43 deletions

View file

@ -277,6 +277,7 @@ trivial! {
rustc_middle::mir::interpret::CtfeProvenance,
rustc_middle::mir::interpret::ErrorHandled,
rustc_middle::mir::interpret::LitToConstError,
rustc_middle::mir::interpret::EvalStaticInitializerRawResult,
rustc_middle::thir::ExprId,
rustc_middle::traits::CodegenObligationError,
rustc_middle::traits::EvaluationResult,

View file

@ -20,7 +20,8 @@ use crate::middle::stability::{self, DeprecationEntry};
use crate::mir;
use crate::mir::interpret::GlobalId;
use crate::mir::interpret::{
EvalToAllocationRawResult, EvalToConstValueResult, EvalToValTreeResult,
EvalStaticInitializerRawResult, EvalToAllocationRawResult, EvalToConstValueResult,
EvalToValTreeResult,
};
use crate::mir::interpret::{LitToConstError, LitToConstInput};
use crate::mir::mono::CodegenUnit;
@ -1061,7 +1062,7 @@ rustc_queries! {
/// Evaluates a constant and returns the computed allocation.
///
/// **Do not use this** directly, use the `tcx.eval_static_initializer` wrapper.
/// **Do not use this** directly, use the `eval_to_const_value` or `eval_to_valtree` instead.
query eval_to_allocation_raw(key: ty::ParamEnvAnd<'tcx, GlobalId<'tcx>>)
-> EvalToAllocationRawResult<'tcx> {
desc { |tcx|
@ -1071,6 +1072,15 @@ rustc_queries! {
cache_on_disk_if { true }
}
/// Evaluate a static's initializer, returning the allocation of the initializer's memory.
query eval_static_initializer_raw(key: DefId) -> EvalStaticInitializerRawResult {
desc { |tcx|
"evaluating initializer of static `{}`",
tcx.def_path_str(key)
}
cache_on_disk_if { key.is_local() }
}
/// Evaluates const items or anonymous constants
/// (such as enum variant explicit discriminants or array lengths)
/// into a representation suitable for the type system and const generics.