8template<
bool>
class CFG;
33 Sym
sym()
const {
return entry_->
sym(); }
59 void calc_bound()
const;
60 void calc_free()
const;
63 Def* entry_ =
nullptr;
65 mutable bool has_bound_ =
false;
66 mutable bool has_free_ =
false;
71 mutable std::unique_ptr<const CFA> cfa_;
A Scope represents a region of Defs that are live from the view of an entry's Var.
Scope(const Scope &)=delete
Scope & operator=(Scope)=delete
const DefSet & bound() const
All Defs within this Scope.
const B_CFG & b_cfg() const
const DefSet & free_defs() const
All non-const Defs directly referenced but not bound within this Scope. May also include Vars or muts...
const VarSet & free_vars() const
All Vars that occurr free in this Scope. Does not transitively contain any free Vars from muts.
const F_CFG & f_cfg() const
const MutSet & free_muts() const
All muts that occurr free in this Scope.
static bool is_free(Def *mut, const Def *def)
Does mut's Var occurr free in def?
bool bound(const Def *def) const
The World represents the whole program and manages creation of MimIR nodes (Defs).
GIDSet< const Var * > VarSet
GIDSet< const Def * > DefSet