forked from p4lang/p4c
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathremoveAssertAssume.h
39 lines (33 loc) · 1.23 KB
/
removeAssertAssume.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#ifndef _MIDEND_REMOVEASSERTASSUME_H_
#define _MIDEND_REMOVEASSERTASSUME_H_
#include "frontends/common/resolveReferences/resolveReferences.h"
#include "frontends/p4/typeMap.h"
#include "frontends/p4/typeChecking/typeChecker.h"
#include "ir/ir.h"
namespace P4 {
// Removes assert and assume statements if it is not in debug mode
class DoRemoveAssertAssume : public Transform {
P4::ReferenceMap* refMap;
P4::TypeMap* typeMap;
public:
explicit DoRemoveAssertAssume(P4::ReferenceMap* refMap, P4::TypeMap* typeMap)
: refMap(refMap), typeMap(typeMap) {
CHECK_NULL(refMap);
CHECK_NULL(typeMap);
setName("DoRemoveAssertAssume");
}
const IR::Node* preorder(IR::MethodCallStatement* statement) override;
};
class RemoveAssertAssume final : public PassManager {
public:
RemoveAssertAssume(ReferenceMap* refMap, TypeMap* typeMap,
TypeChecking* typeChecking = nullptr) {
if (!typeChecking)
typeChecking = new TypeChecking(refMap, typeMap);
passes.push_back(typeChecking);
passes.push_back(new DoRemoveAssertAssume(refMap, typeMap));
setName("RemoveAssertAssume");
}
};
} // namespace P4
#endif /* _MIDEND_REMOVEASSERTASSUME_H_*/