17#ifndef MIDEND_COMPLEXCOMPARISON_H_
18#define MIDEND_COMPLEXCOMPARISON_H_
20#include "frontends/p4/typeChecking/typeChecker.h"
36 const IR::Expression *left,
const IR::Type *rightType,
37 const IR::Expression *right);
41 : refMap(refMap), typeMap(typeMap) {
44 setName(
"RemoveComplexComparisons");
46 const IR::Node *postorder(IR::Operation_Binary *expression)
override;
49class SimplifyComparisons final :
public PassManager {
53 if (!typeChecking) typeChecking =
new TypeChecking(refMap, typeMap);
54 passes.push_back(typeChecking);
56 setName(
"SimplifyComparisons");
Class used to encode maps from paths to declarations.
Definition referenceMap.h:66
Definition complexComparison.h:29
const IR::Expression * explode(Util::SourceInfo srcInfo, const IR::Type *leftType, const IR::Expression *left, const IR::Type *rightType, const IR::Expression *right)
Expands left == right into sub-field comparisons.
Definition complexComparison.cpp:21
Definition typeChecker.h:55
Definition source_file.h:124
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:24