P4C
The P4 Compiler
Loading...
Searching...
No Matches
coverage.h
1#ifndef MIDEND_COVERAGE_H_
2#define MIDEND_COVERAGE_H_
3
4#include <set>
5#include <vector>
6
7#include "ir/ir.h"
8#include "ir/visitor.h"
9#include "lib/source_file.h"
10
16
17namespace P4::Coverage {
18
21 bool operator()(const IR::Node *s1, const IR::Node *s2) const;
22};
23
27 bool coverStatements = false;
29 bool coverTableEntries = false;
31 bool coverActions = false;
33 bool coverParserStates = false;
34
36 bool onlyCoveringTests = false;
37};
38
41using CoverageSet = std::set<const IR::Node *, SourceIdCmp>;
42
45class CollectNodes : public Inspector {
47 CoverageSet coverableNodes;
48
50 CoverageOptions coverageOptions;
51
53 bool preorder(const IR::BaseAssignmentStatement *stmt) override;
54 bool preorder(const IR::MethodCallStatement *stmt) override;
55 bool preorder(const IR::ExitStatement *stmt) override;
56
58 bool preorder(const IR::Entry *entry) override;
59
61 bool preorder(const IR::P4Action *act) override;
62
64 bool preorder(const IR::ParserState *state) override;
65
66 public:
67 explicit CollectNodes(CoverageOptions coverageOptions);
68
71};
72
74void printCoverageReport(const CoverageSet &all, const CoverageSet &visited);
75
77void logCoverage(const CoverageSet &all, const CoverageSet &visited, const CoverageSet &new_);
78
79} // namespace P4::Coverage
80
81#endif /* MIDEND_COVERAGE_H_ */
const CoverageSet & getCoverableNodes()
Definition coverage.cpp:98
Definition node.h:94
Definition coverage.cpp:7
bool coverParserStates
Cover IR::ParserState.
Definition coverage.h:33
bool coverStatements
Cover IR::Statement.
Definition coverage.h:27
bool onlyCoveringTests
Skip tests which do not increase coverage.
Definition coverage.h:36
void printCoverageReport(const CoverageSet &all, const CoverageSet &visited)
Produces detailed final coverage log.
Definition coverage.cpp:66
bool coverActions
Cover IR::P4Action.
Definition coverage.h:31
std::set< const IR::Node *, SourceIdCmp > CoverageSet
Definition coverage.h:41
void logCoverage(const CoverageSet &all, const CoverageSet &visited, const CoverageSet &new_)
Logs nodes from new_ which have not yet been visited (are not members of visited).
Definition coverage.cpp:87
bool coverTableEntries
Cover IR::Entry.
Definition coverage.h:29
Specifies general options and which IR nodes to track with this particular visitor.
Definition coverage.h:25
Utility function to compare IR nodes in a set. We use their source info.
Definition coverage.h:20