From 878d154322504b4bd912247a350471869ad62e3a Mon Sep 17 00:00:00 2001 From: Eduard Voronkin Date: Mon, 10 Nov 2025 14:47:14 -0800 Subject: [PATCH] FASTBuild: fix multi-language PCHs Fixes: #27371 --- Source/cmFastbuildNormalTargetGenerator.cxx | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Source/cmFastbuildNormalTargetGenerator.cxx b/Source/cmFastbuildNormalTargetGenerator.cxx index 0ee97d7aee..efeabaeb60 100644 --- a/Source/cmFastbuildNormalTargetGenerator.cxx +++ b/Source/cmFastbuildNormalTargetGenerator.cxx @@ -1499,11 +1499,13 @@ void cmFastbuildNormalTargetGenerator::GenerateObjects(FastbuildTarget& target) objects.reserve(nodesPermutations.size()); for (auto& val : nodesPermutations) { auto& node = val.second; - objects.emplace_back(std::move(node)); - if (!objects.back().PCHInputFile.empty()) { + if (!node.PCHInputFile.empty()) { // Node that produces PCH should be the first one, since other nodes // might reuse this PCH. - std::swap(*objects.begin(), objects.back()); + // Note: we might have several such nodes for different languages. + objects.insert(objects.begin(), std::move(node)); + } else { + objects.emplace_back(std::move(node)); } } if (useUnity) {