aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeongik Cha <jeongik@google.com>2023-05-18 21:20:08 +0900
committerJeongik Cha <jeongik@google.com>2023-05-22 11:40:24 +0900
commit3bed7b3ce5e93bfa2933f8ff987d599ba517d182 (patch)
tree21d674699e516c40e511cbae3bcb4892da3c8a81
parent2f4ecd1728f9620adeea31d498abea7c8e66b3bf (diff)
downloadninja-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.cc3
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();