diff options
-rw-r--r-- | src/tools/fuzzing.h | 48 |
1 files changed, 15 insertions, 33 deletions
diff --git a/src/tools/fuzzing.h b/src/tools/fuzzing.h index de03e943b..8283fccd1 100644 --- a/src/tools/fuzzing.h +++ b/src/tools/fuzzing.h @@ -27,6 +27,7 @@ high chance for set at start of loop // TODO Generate exception handling instructions +#include "ir/branch-utils.h" #include "ir/memory-utils.h" #include <ir/find_all.h> #include <ir/literal-utils.h> @@ -865,39 +866,20 @@ private: void visitExpression(Expression* curr) { // Note all scope names, and fix up all uses. - -#define DELEGATE_ID curr->_id - -#define DELEGATE_START(id) \ - auto* cast = curr->cast<id>(); \ - WASM_UNUSED(cast); - -#define DELEGATE_GET_FIELD(id, name) cast->name - -#define DELEGATE_FIELD_SCOPE_NAME_DEF(id, name) \ - if (cast->name.is()) { \ - if (seen.count(cast->name)) { \ - replace(); \ - } else { \ - seen.insert(cast->name); \ - } \ - } - -#define DELEGATE_FIELD_SCOPE_NAME_USE(id, name) replaceIfInvalid(cast->name); - -#define DELEGATE_FIELD_CHILD(id, name) -#define DELEGATE_FIELD_OPTIONAL_CHILD(id, name) -#define DELEGATE_FIELD_INT(id, name) -#define DELEGATE_FIELD_INT_ARRAY(id, name) -#define DELEGATE_FIELD_LITERAL(id, name) -#define DELEGATE_FIELD_NAME(id, name) -#define DELEGATE_FIELD_NAME_VECTOR(id, name) -#define DELEGATE_FIELD_SCOPE_NAME_USE_VECTOR(id, name) -#define DELEGATE_FIELD_SIGNATURE(id, name) -#define DELEGATE_FIELD_TYPE(id, name) -#define DELEGATE_FIELD_ADDRESS(id, name) - -#include "wasm-delegations-fields.h" + BranchUtils::operateOnScopeNameDefs(curr, [&](Name& name) { + if (name.is()) { + if (seen.count(name)) { + replace(); + } else { + seen.insert(name); + } + } + }); + BranchUtils::operateOnScopeNameUses(curr, [&](Name& name) { + if (name.is()) { + replaceIfInvalid(name); + } + }); } bool replaceIfInvalid(Name target) { |