Function sequant::eval::detail::set_residency_flags¶
Defined in File cell_table_builder.hpp
Function Documentation¶
-
inline void sequant::eval::detail::set_residency_flags(TableCell &cell, bool volatile_value, container::svector<std::pair<LoopKey, int>> const &path)¶
Sets the
produce_if_absentflag and the persistence candidacy ofcellfrom its bound instances (bound_instances) against the currentpath:a cell is a persistence candidate iff it carries no volatile leaf and is bound to none of its enclosing loops; it is produced only on first visit (produce_if_absent) iff its scope is nested inside a loop it is not bound to on that loop’s own instance.Note
Candidacy, not the final answer: persistence is the frontier of the invariant region, not all of it, and the remaining condition (at least one volatile consumer, or no consumer at all) can only be decided once the table’s reads exist.
apply_persistence_frontierdemotes the rest at the end ofbuild_cell_table.