diff options
author | Jeongik Cha <jeongik@google.com> | 2023-05-18 21:20:08 +0900 |
---|---|---|
committer | Jeongik Cha <jeongik@google.com> | 2023-05-22 11:40:24 +0900 |
commit | 3bed7b3ce5e93bfa2933f8ff987d599ba517d182 (patch) | |
tree | 21d674699e516c40e511cbae3bcb4892da3c8a81 | |
parent | 2f4ecd1728f9620adeea31d498abea7c8e66b3bf (diff) | |
download | ninja-3bed7b3ce5e93bfa2933f8ff987d599ba517d182.tar.gz |
Skip if the next node isn't dirty
In priority calculation, a clean node doesn't need to be visited.
Bug: 271527305
Test: ninja build
Change-Id: Id6c238c717554040cacef8db3a8ed6eedb98994b
-rw-r--r-- | src/build.cc | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/build.cc b/src/build.cc index d0d0681..6c66eb2 100644 --- a/src/build.cc +++ b/src/build.cc @@ -677,7 +677,8 @@ void Builder::RefreshPriority(const std::vector<Node*>& start_nodes) { std::set<Edge*, EdgeCmp> next_edges; for (auto* next_node : e->inputs_) { - if (!next_node) { + // Skip if the next node isn't dirty because actual build also skips the node. + if (!next_node || !next_node->dirty()) { continue; } auto* next_e = next_node->in_edge(); |