diff options
author | Christian Speckner <christian.speckner@mayflower.de> | 2024-07-16 01:04:37 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-15 16:04:37 -0700 |
commit | fd8b2bd43d73cf1976426e60c22c5261fa343510 (patch) | |
tree | 79d1fbc91d65ba0f8a4a6b3db0ca070b0628ebda /src/passes/Asyncify.cpp | |
parent | aec516f1259c3fec92982db92dc0e4e67ab2251a (diff) | |
download | binaryen-fd8b2bd43d73cf1976426e60c22c5261fa343510.tar.gz binaryen-fd8b2bd43d73cf1976426e60c22c5261fa343510.tar.bz2 binaryen-fd8b2bd43d73cf1976426e60c22c5261fa343510.zip |
Allow different arguments for multiple instances of a pass (#6687)
Each pass instance can now store an argument for it, which can be different.
This may be a breaking change for the corner case of running a pass multiple
times and setting the pass's argument multiple times as well (before, the last
pass argument affected them all; now, it affects the last instance only). This
only affects arguments with the name of a pass; others remain global, as
before (and multiple passes can read them, in fact). See the CHANGELOG for
details.
Fixes #6646
Diffstat (limited to 'src/passes/Asyncify.cpp')
-rw-r--r-- | src/passes/Asyncify.cpp | 39 |
1 files changed, 17 insertions, 22 deletions
diff --git a/src/passes/Asyncify.cpp b/src/passes/Asyncify.cpp index 1ba764387..7ac9cf489 100644 --- a/src/passes/Asyncify.cpp +++ b/src/passes/Asyncify.cpp @@ -1608,54 +1608,49 @@ struct Asyncify : public Pass { bool addsEffects() override { return true; } void run(Module* module) override { - auto& options = getPassOptions(); - bool optimize = options.optimizeLevel > 0; + bool optimize = getPassOptions().optimizeLevel > 0; // Find which things can change the state. auto stateChangingImports = String::trim(read_possible_response_file( - options.getArgumentOrDefault("asyncify-imports", ""))); - auto ignoreImports = - options.getArgumentOrDefault("asyncify-ignore-imports", ""); + getArgumentOrDefault("asyncify-imports", ""))); + auto ignoreImports = getArgumentOrDefault("asyncify-ignore-imports", ""); bool allImportsCanChangeState = stateChangingImports == "" && ignoreImports == ""; String::Split listedImports(stateChangingImports, String::Split::NewLineOr(",")); // canIndirectChangeState is the default. asyncify-ignore-indirect sets it // to false. - auto canIndirectChangeState = - !options.hasArgument("asyncify-ignore-indirect"); + auto canIndirectChangeState = !hasArgument("asyncify-ignore-indirect"); std::string removeListInput = - options.getArgumentOrDefault("asyncify-removelist", ""); + getArgumentOrDefault("asyncify-removelist", ""); if (removeListInput.empty()) { // Support old name for now to avoid immediate breakage TODO remove - removeListInput = options.getArgumentOrDefault("asyncify-blacklist", ""); + removeListInput = getArgumentOrDefault("asyncify-blacklist", ""); } String::Split removeList( String::trim(read_possible_response_file(removeListInput)), String::Split::NewLineOr(",")); - String::Split addList( - String::trim(read_possible_response_file( - options.getArgumentOrDefault("asyncify-addlist", ""))), - String::Split::NewLineOr(",")); - std::string onlyListInput = - options.getArgumentOrDefault("asyncify-onlylist", ""); + String::Split addList(String::trim(read_possible_response_file( + getArgumentOrDefault("asyncify-addlist", ""))), + String::Split::NewLineOr(",")); + std::string onlyListInput = getArgumentOrDefault("asyncify-onlylist", ""); if (onlyListInput.empty()) { // Support old name for now to avoid immediate breakage TODO remove - onlyListInput = options.getArgumentOrDefault("asyncify-whitelist", ""); + onlyListInput = getArgumentOrDefault("asyncify-whitelist", ""); } String::Split onlyList( String::trim(read_possible_response_file(onlyListInput)), String::Split::NewLineOr(",")); - auto asserts = options.hasArgument("asyncify-asserts"); - auto verbose = options.hasArgument("asyncify-verbose"); - auto relocatable = options.hasArgument("asyncify-relocatable"); - auto secondaryMemory = options.hasArgument("asyncify-in-secondary-memory"); - auto propagateAddList = options.hasArgument("asyncify-propagate-addlist"); + auto asserts = hasArgument("asyncify-asserts"); + auto verbose = hasArgument("asyncify-verbose"); + auto relocatable = hasArgument("asyncify-relocatable"); + auto secondaryMemory = hasArgument("asyncify-in-secondary-memory"); + auto propagateAddList = hasArgument("asyncify-propagate-addlist"); // Ensure there is a memory, as we need it. if (secondaryMemory) { auto secondaryMemorySizeString = - options.getArgumentOrDefault("asyncify-secondary-memory-size", "1"); + getArgumentOrDefault("asyncify-secondary-memory-size", "1"); Address secondaryMemorySize = std::stoi(secondaryMemorySizeString); asyncifyMemory = createSecondaryMemory(module, secondaryMemorySize); } else { |