diff --git a/clang/lib/Lex/HeaderSearch.cpp b/clang/lib/Lex/HeaderSearch.cpp --- a/clang/lib/Lex/HeaderSearch.cpp +++ b/clang/lib/Lex/HeaderSearch.cpp @@ -378,15 +378,17 @@ llvm::StringMap Index(SearchDirs.size()); // Iterate over all filename keys and associate them with the index i. - unsigned i = 0; - for (; i != SearchDirs.size(); ++i) { + for (unsigned i = 0; i != SearchDirs.size(); ++i) { auto &Dir = SearchDirs[i]; // We're concerned with only the initial contiguous run of header // maps within SearchDirs, which can be 99% of SearchDirs when // SearchDirs.size() is ~10000. - if (!Dir.isHeaderMap()) + if (!Dir.isHeaderMap()) { + SearchDirHeaderMapIndex = std::move(Index); + FirstNonHeaderMapSearchDirIdx = i; break; + } // Give earlier keys precedence over identical later keys. auto Callback = [&](StringRef Filename) { @@ -394,9 +396,6 @@ }; Dir.getHeaderMap()->forEachKey(Callback); } - - SearchDirHeaderMapIndex = std::move(Index); - FirstNonHeaderMapSearchDirIdx = i; } //===----------------------------------------------------------------------===// @@ -1929,7 +1928,7 @@ llvm::StringRef File, llvm::StringRef WorkingDir, llvm::StringRef MainFile, bool *IsSystem) { using namespace llvm::sys; - + llvm::SmallString<32> FilePath = File; // remove_dots switches to backslashes on windows as a side-effect! // We always want to suggest forward slashes for includes.