P4C
The P4 Compiler
Loading...
Searching...
No Matches
removeAssertAssume.h
1#ifndef MIDEND_REMOVEASSERTASSUME_H_
2#define MIDEND_REMOVEASSERTASSUME_H_
3
4#include "frontends/common/resolveReferences/resolveReferences.h"
5#include "frontends/p4/typeChecking/typeChecker.h"
6#include "frontends/p4/typeMap.h"
7#include "ir/ir.h"
8
9namespace P4 {
10// Removes assert and assume statements if it is not in debug mode
12 P4::ReferenceMap *refMap;
13 P4::TypeMap *typeMap;
14
15 public:
16 explicit DoRemoveAssertAssume(P4::ReferenceMap *refMap, P4::TypeMap *typeMap)
17 : refMap(refMap), typeMap(typeMap) {
18 CHECK_NULL(refMap);
19 CHECK_NULL(typeMap);
20 setName("DoRemoveAssertAssume");
21 }
22
23 const IR::Node *preorder(IR::MethodCallStatement *statement) override;
24};
25
26class RemoveAssertAssume final : public PassManager {
27 public:
28 RemoveAssertAssume(ReferenceMap *refMap, TypeMap *typeMap,
29 TypeChecking *typeChecking = nullptr) {
30 if (!typeChecking) typeChecking = new TypeChecking(refMap, typeMap);
31 passes.push_back(typeChecking);
32 passes.push_back(new DoRemoveAssertAssume(refMap, typeMap));
33 setName("RemoveAssertAssume");
34 }
35};
36
37} // namespace P4
38
39#endif /* MIDEND_REMOVEASSERTASSUME_H_ */
Definition removeAssertAssume.h:11
Definition node.h:95
Definition pass_manager.h:40
Class used to encode maps from paths to declarations.
Definition referenceMap.h:66
Definition removeAssertAssume.h:26
Definition visitor.h:424
Definition typeChecker.h:55
Definition typeMap.h:41
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:24