PassManager: -= operator added, FIND_FUNC_TO_INCLUDE and CHECK_FUNC_TO_INCLUDE removed from INSERT_PARALLEL_DIRS_NODIST

This commit is contained in:
mkoch
2023-09-07 17:42:40 +03:00
parent 8c46b93123
commit aae81c0e87

View File

@@ -69,6 +69,61 @@ public:
return right_vec; return right_vec;
} }
friend void operator-=(const list& left_vec, const list& right_vec)
{
/* erase each pass in right_vec from dependency tree for each pass in left_vec */
set<passes> to_erase;
for(const auto& remove_pass : right_vec)
to_erase.insert(remove_pass.name);
set<passes> to_process, processed;
for (const auto& process_pass : left_vec)
to_process.insert(process_pass.name);
while (!to_process.empty()) {
set<passes> next_to_process;
for (const auto& pass_name : to_process) {
processed.insert(pass_name);
auto pass_deps = (*passDeps).find(pass_name);
if (pass_deps != (*passDeps).end()) {
for (auto dep = pass_deps->second.begin(); dep != pass_deps->second.end();) {
if (to_erase.find(*dep) != to_erase.end()) {
dep = pass_deps->second.erase(dep);
}
else {
if (processed.find(*dep) == processed.end())
next_to_process.insert(*dep);
dep++;
}
}
if(pass_deps->second.empty())
pass_deps = (*passDeps).erase(pass_deps);
}
}
to_process = next_to_process;
}
}
friend void operator-=(const list& left_vec, const Pass& right)
{
left_vec -= list({right});
}
void operator-=(const list& right_vec) const
{
list({ *this }) -= right_vec;
}
void operator-=(const Pass& right) const
{
list({ *this }) -= list({ right });
}
Pass(passes name) : name(name) { } Pass(passes name) : name(name) { }
}; };
@@ -98,6 +153,8 @@ void InitPassesDependencies(map<passes, vector<passes>> &passDepsIn, set<passes>
passDeps = &passDepsIn; passDeps = &passDepsIn;
/* Insertions */
Pass(PREPROC_SPF) <= Pass(CREATE_INTER_TREE); Pass(PREPROC_SPF) <= Pass(CREATE_INTER_TREE);
list({ CREATE_INTER_TREE, CORRECT_VAR_DECL }) << list({ GCOV_PARSER, PREDICT_SCHEME, INSERT_INTER_TREE }); list({ CREATE_INTER_TREE, CORRECT_VAR_DECL }) << list({ GCOV_PARSER, PREDICT_SCHEME, INSERT_INTER_TREE });
@@ -200,6 +257,10 @@ void InitPassesDependencies(map<passes, vector<passes>> &passDepsIn, set<passes>
Pass(CALL_GRAPH2) <= Pass(FIX_COMMON_BLOCKS); Pass(CALL_GRAPH2) <= Pass(FIX_COMMON_BLOCKS);
/* Removals */
Pass(INSERT_PARALLEL_DIRS_NODIST) -= list({ FIND_FUNC_TO_INCLUDE, CHECK_FUNC_TO_INCLUDE });
passesIgnoreStateDone.insert({ CREATE_PARALLEL_DIRS, INSERT_PARALLEL_DIRS, INSERT_SHADOW_DIRS, EXTRACT_PARALLEL_DIRS, passesIgnoreStateDone.insert({ CREATE_PARALLEL_DIRS, INSERT_PARALLEL_DIRS, INSERT_SHADOW_DIRS, EXTRACT_PARALLEL_DIRS,
EXTRACT_SHADOW_DIRS, CREATE_REMOTES, UNPARSE_FILE, REMOVE_AND_CALC_SHADOW, EXTRACT_SHADOW_DIRS, CREATE_REMOTES, UNPARSE_FILE, REMOVE_AND_CALC_SHADOW,
REVERSE_CREATED_NESTED_LOOPS, PREDICT_SCHEME, CALCULATE_STATS_SCHEME, REVERT_SPF_DIRS, CLEAR_SPF_DIRS, TRANSFORM_SHADOW_IF_FULL, REVERSE_CREATED_NESTED_LOOPS, PREDICT_SCHEME, CALCULATE_STATS_SCHEME, REVERT_SPF_DIRS, CLEAR_SPF_DIRS, TRANSFORM_SHADOW_IF_FULL,