summaryrefslogtreecommitdiff
path: root/src/passes/Asyncify.cpp
diff options
context:
space:
mode:
authorChristian Speckner <christian.speckner@mayflower.de>2024-07-16 01:04:37 +0200
committerGitHub <noreply@github.com>2024-07-15 16:04:37 -0700
commitfd8b2bd43d73cf1976426e60c22c5261fa343510 (patch)
tree79d1fbc91d65ba0f8a4a6b3db0ca070b0628ebda /src/passes/Asyncify.cpp
parentaec516f1259c3fec92982db92dc0e4e67ab2251a (diff)
downloadbinaryen-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.cpp39
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 {