|
|
| ComputeWriteSet (AllDefinitions *allDefinitions) |
| |
|
bool | preorder (const IR::ArrayIndex *expression) override |
| |
|
bool | preorder (const IR::AssignmentStatement *statement) override |
| |
|
bool | preorder (const IR::BlockStatement *statement) override |
| |
|
bool | preorder (const IR::DefaultExpression *expression) override |
| |
|
bool | preorder (const IR::EmptyStatement *statement) override |
| |
|
bool | preorder (const IR::ExitStatement *statement) override |
| |
|
bool | preorder (const IR::Expression *expression) override |
| | For expressions we maintain the write-set in the writes std::map.
|
| |
|
bool | preorder (const IR::Function *function) override |
| |
|
bool | preorder (const IR::HeaderStackExpression *expression) override |
| |
|
bool | preorder (const IR::IfStatement *statement) override |
| |
|
bool | preorder (const IR::InvalidHeader *expression) override |
| |
|
bool | preorder (const IR::InvalidHeaderUnion *expression) override |
| |
|
bool | preorder (const IR::ListExpression *expression) override |
| |
|
bool | preorder (const IR::Literal *expression) override |
| |
|
bool | preorder (const IR::Member *expression) override |
| |
|
bool | preorder (const IR::MethodCallExpression *expression) override |
| |
|
bool | preorder (const IR::MethodCallStatement *statement) override |
| |
|
bool | preorder (const IR::Mux *expression) override |
| |
|
bool | preorder (const IR::Operation_Binary *expression) override |
| |
|
bool | preorder (const IR::Operation_Unary *expression) override |
| |
|
bool | preorder (const IR::P4Action *action) override |
| |
|
bool | preorder (const IR::P4Control *control) override |
| |
|
bool | preorder (const IR::P4ListExpression *expression) override |
| |
|
bool | preorder (const IR::P4Parser *parser) override |
| |
|
bool | preorder (const IR::P4Table *table) override |
| |
|
bool | preorder (const IR::PathExpression *expression) override |
| |
|
bool | preorder (const IR::ReturnStatement *statement) override |
| |
|
bool | preorder (const IR::SelectExpression *expression) override |
| |
|
bool | preorder (const IR::Slice *expression) override |
| |
|
bool | preorder (const IR::StructExpression *expression) override |
| |
|
bool | preorder (const IR::SwitchStatement *statement) override |
| |
|
bool | preorder (const IR::TypeNameExpression *expression) override |
| |
|
const LocationSet * | writtenLocations (const IR::Expression *expression) |
| |
|
void | print () const |
| |
|
| | ComputeWriteSet (const ComputeWriteSet *source, ProgramPoint context, Definitions *definitions) |
| |
| void | dbprint (std::ostream &out) const override |
| |
|
void | end_apply () override |
| |
|
void | enterScope (const IR::ParameterList *parameters, const IR::IndexedVector< IR::Declaration > *locals, ProgramPoint startPoint, bool clear=true) |
| |
|
void | exitScope (const IR::ParameterList *parameters, const IR::IndexedVector< IR::Declaration > *locals) |
| |
|
void | expressionWrites (const IR::Expression *expression, const LocationSet *loc) |
| |
|
Definitions * | getDefinitionsAfter (const IR::ParserState *state) |
| |
|
ProgramPoint | getProgramPoint (const IR::Node *node=nullptr) const |
| |
|
const LocationSet * | getWrites (const IR::Expression *expression) const |
| |
|
profile_t | init_apply (const IR::Node *root) override |
| |
|
bool | setDefinitions (Definitions *defs, const IR::Node *who=nullptr, bool overwrite=false) |
| |
|
void | visitVirtualMethods (const IR::IndexedVector< IR::Declaration > &locals) |
| | Statements and other control structures.
|
| |
Computes the write set for each expression and statement.
This pass is run for each parser and control separately. It controls precisely the visit order — to simulate a simbolic execution of the program.
- Precondition
- Must be executed after variable initializers have been removed.