#include "config.h" #include "system.h" #include "coretypes.h" #include "backend.h" #include "tree.h" #include "gimple-expr.h" #include "predict.h" #include "alloc-pool.h" #include "tree-pass.h" #include "cgraph.h" #include "diagnostic.h" #include "fold-const.h" #include "gimple-fold.h" #include "symbol-summary.h" #include "tree-vrp.h" #include "ipa-prop.h" #include "tree-pretty-print.h" #include "tree-inline.h" #include "ipa-fnsummary.h" #include "ipa-utils.h" #include "tree-ssa-ccp.h" #include "stringpool.h" #include "attribs.h" #include "tree-ssa-alias.h" #include "tree-ssanames.h" #include "gimple.h" #include "cfg.h" // needed for gimple-iterator.h #include "gimple-iterator.h" #include "gimple-ssa.h" #include #include "types-inlines.h" #include "type-escaper.hpp" #include "expr-escaper.hpp" void ExprEscaper::update(const_tree t, Reason r) { gcc_assert(t); _r = r; walk(t); } void ExprEscaper::_walk_pre(const_tree e) { const_tree t = TREE_TYPE(e); gcc_assert(t); typeEscaper.update(t, _r); } void ExprEscaper::_walk_CONSTRUCTOR_pre(const_tree e) { if (TREE_CLOBBER_P(e)) return; _r.global_is_visible = true; // just for now... const_tree t = TREE_TYPE(e); typeEscaper.update(t, _r); }