]> git.proxmox.com Git - rustc.git/blame - compiler/rustc_mir/src/dataflow/mod.rs
New upstream version 1.55.0+dfsg1
[rustc.git] / compiler / rustc_mir / src / dataflow / mod.rs
CommitLineData
3dfed10e 1use rustc_ast::{self as ast, MetaItem};
ba9703b0 2use rustc_middle::ty;
3dfed10e 3use rustc_session::Session;
dfeec247 4use rustc_span::symbol::{sym, Symbol};
041b39d2 5
dfeec247 6pub(crate) use self::drop_flag_effects::*;
ba9703b0 7pub use self::framework::{
1b1a35ee
XL
8 fmt, lattice, visit_results, Analysis, AnalysisDomain, Backward, BorrowckFlowState,
9 BorrowckResults, Engine, Forward, GenKill, GenKillAnalysis, JoinSemiLattice, Results,
136023e0 10 ResultsCursor, ResultsRefCursor, ResultsVisitor, SwitchIntEdgeEffects,
ba9703b0 11};
041b39d2 12
3b2f2976
XL
13use self::move_paths::MoveData;
14
b7449926 15pub mod drop_flag_effects;
ba9703b0 16mod framework;
f9f354fc 17pub mod impls;
041b39d2
XL
18pub mod move_paths;
19
48663c56
XL
20pub(crate) mod indexes {
21 pub(crate) use super::{
48663c56 22 impls::borrows::BorrowIndex,
dfeec247 23 move_paths::{InitIndex, MoveOutIndex, MovePathIndex},
48663c56
XL
24 };
25}
041b39d2 26
ba9703b0
XL
27pub struct MoveDataParamEnv<'tcx> {
28 pub(crate) move_data: MoveData<'tcx>,
29 pub(crate) param_env: ty::ParamEnv<'tcx>,
3b2f2976
XL
30}
31
3dfed10e
XL
32pub(crate) fn has_rustc_mir_with(
33 sess: &Session,
34 attrs: &[ast::Attribute],
35 name: Symbol,
36) -> Option<MetaItem> {
3b2f2976 37 for attr in attrs {
3dfed10e 38 if sess.check_name(attr, sym::rustc_mir) {
3b2f2976
XL
39 let items = attr.meta_item_list();
40 for item in items.iter().flat_map(|l| l.iter()) {
41 match item.meta_item() {
3dfed10e 42 Some(mi) if mi.has_name(name) => return Some(mi.clone()),
dfeec247 43 _ => continue,
3b2f2976
XL
44 }
45 }
46 }
47 }
ba9703b0 48 None
3157f602 49}