2 * Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 #include "ModulePhase.h"
22 void PhaseRunner<logo::PhaseStrategy::Saturate>::run(const Phase &phase) const
26 for (bool changed = true; changed;)
30 for (auto &pass : phase)
32 notifyPassBegin(pass.get());
34 bool pass_changed = pass->run(_module);
35 changed = changed || pass_changed;
37 notifyPassEnd(pass.get(), pass_changed);
44 void PhaseRunner<logo::PhaseStrategy::Restart>::run(const Phase &phase) const
48 for (bool changed = true; changed;)
52 for (auto &pass : phase)
54 notifyPassBegin(pass.get());
56 bool pass_changed = pass->run(_module);
57 changed = changed || pass_changed;
59 notifyPassEnd(pass.get(), pass_changed);