Skip to content

Commit e31b1a0

Browse files
HS index unroller simple update (#2975)
1 parent 611d418 commit e31b1a0

File tree

2 files changed

+8
-7
lines changed

2 files changed

+8
-7
lines changed

midend/hsIndexSimplify.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ IR::Node* HSIndexSimplifier::preorder(IR::P4Parser* parser) {
181181
}
182182

183183
IR::Node* HSIndexSimplifier::preorder(IR::BlockStatement* blockStatement) {
184-
generatedVariablesMap blockGeneratedVariables;
184+
GeneratedVariablesMap blockGeneratedVariables;
185185
HSIndexFinder aiFinder(locals, refMap, typeMap, &blockGeneratedVariables);
186186
blockStatement->apply(aiFinder);
187187
if (aiFinder.arrayIndex == nullptr) {

midend/hsIndexSimplify.h

+7-6
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
namespace P4 {
1010

11-
typedef std::map<cstring, const IR::PathExpression*> generatedVariablesMap;
11+
typedef std::map<cstring, const IR::PathExpression*> GeneratedVariablesMap;
1212

1313
/// This class finds innermost header stack with non-concrete index.
1414
/// For each found innermost header stack it generates new local variable and
@@ -21,13 +21,13 @@ class HSIndexFinder : public Inspector {
2121
TypeMap* typeMap;
2222
const IR::ArrayIndex* arrayIndex;
2323
const IR::PathExpression* newVariable;
24-
generatedVariablesMap* generatedVariables;
24+
GeneratedVariablesMap* generatedVariables;
2525
std::set<cstring> storedMember;
2626
std::list<IR::Member*> dependedMembers;
2727

2828
public:
2929
HSIndexFinder(IR::IndexedVector<IR::Declaration>* locals, ReferenceMap* refMap,
30-
TypeMap* typeMap, generatedVariablesMap* generatedVariables)
30+
TypeMap* typeMap, GeneratedVariablesMap* generatedVariables)
3131
: locals(locals),
3232
refMap(refMap),
3333
typeMap(typeMap),
@@ -54,6 +54,7 @@ class HSIndexTransform : public Transform {
5454
/// This class eliminates all non-concrete indexes of the header stacks in the controls.
5555
/// It generates new variables for all expressions in the header stacks indexes and
5656
/// checks their values for substitution of concrete values.
57+
/// Each new variable is unique in a scope.
5758
/// Restriction : in/out parameters should be replaced by correspondent assignments.
5859
/// Let
5960
/// header h_index { bit<32> index;}
@@ -69,14 +70,14 @@ class HSIndexSimplifier : public Transform {
6970
ReferenceMap* refMap;
7071
TypeMap* typeMap;
7172
IR::IndexedVector<IR::Declaration>* locals;
72-
generatedVariablesMap* generatedVariables;
73+
GeneratedVariablesMap* generatedVariables;
7374

7475
public:
7576
HSIndexSimplifier(ReferenceMap* refMap, TypeMap* typeMap,
7677
IR::IndexedVector<IR::Declaration>* locals = nullptr,
77-
generatedVariablesMap* generatedVariables = nullptr)
78+
GeneratedVariablesMap* generatedVariables = nullptr)
7879
: refMap(refMap), typeMap(typeMap), locals(locals), generatedVariables(generatedVariables) {
79-
if (generatedVariables == nullptr) generatedVariables = new generatedVariablesMap();
80+
if (generatedVariables == nullptr) generatedVariables = new GeneratedVariablesMap();
8081
}
8182
IR::Node* preorder(IR::IfStatement* ifStatement) override;
8283
IR::Node* preorder(IR::AssignmentStatement* assignmentStatement) override;

0 commit comments

Comments
 (0)