36 std::set<std::pair<const IR::BFN::LoweredParserMatch *, unsigned>> visited_matches;
37 unsigned stack_offset = 0;
41 : phv(ph), parser_info(pi) {
46 bool preorder(IR::BFN::LoweredParserMatch *match)
override;
47 void postorder(IR::BFN::LoweredParserMatch *match)
override;
49 bool preorder(IR::BFN::LoweredParser *)
override;
53 bool has_non_mutex_writes(
const IR::BFN::LoweredParser *parser,
54 const std::set<const IR::BFN::LoweredParserMatch *> &matches);
56 void detect_multi_writes(
57 const IR::BFN::LoweredParser *parser,
58 const std::map<
PHV::Container, std::set<const IR::BFN::LoweredParserMatch *>> &writes,
59 std::set<PHV::Container> &write_containers,
const char *which);
61 void postorder(IR::BFN::LoweredParser *parser)
override;
63 std::map<PHV::Container, std::set<const IR::BFN::LoweredParserMatch *>> bitwise_or,
65 std::set<PHV::Container> bitwise_or_containers, clear_on_write_containers;