Hello Benjamin, It looks like this commit added warnings to the builder:
http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast/builds/3596 C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\ppltasks.h(1531): warning C4530: C++ exception handler used, but unwind semantics are not enabled. Specify /EHsc C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\ppltasks.h(1531): warning C4530: C++ exception handler used, but unwind semantics are not enabled. Specify /EHsc C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\ppltasks.h(1531): warning C4530: C++ exception handler used, but unwind semantics are not enabled. Specify /EHsc C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\ppltasks.h(1531): warning C4530: C++ exception handler used, but unwind semantics are not enabled. Specify /EHsc C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\ppltasks.h(1531): warning C4530: C++ exception handler used, but unwind semantics are not enabled. Specify /EHsc Please have a look at this? Thanks Galina On Mon, Jan 9, 2017 at 7:18 AM, Benjamin Kramer via cfe-commits < cfe-commits@lists.llvm.org> wrote: > Author: d0k > Date: Mon Jan 9 09:18:28 2017 > New Revision: 291446 > > URL: http://llvm.org/viewvc/llvm-project?rev=291446&view=rev > Log: > [include-fixer] Load symbol index asynchronously. > > We don't actually need the index until parse time, so fetch it in the > background and start parsing. By the time it is actually needed it's > likely that the loading phase has completed in the background. > > Modified: > clang-tools-extra/trunk/include-fixer/SymbolIndexManager.cpp > clang-tools-extra/trunk/include-fixer/SymbolIndexManager.h > clang-tools-extra/trunk/include-fixer/plugin/IncludeFixerPlugin.cpp > clang-tools-extra/trunk/include-fixer/tool/ClangIncludeFixer.cpp > clang-tools-extra/trunk/unittests/include-fixer/IncludeFixerTest.cpp > > Modified: clang-tools-extra/trunk/include-fixer/SymbolIndexManager.cpp > URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/ > trunk/include-fixer/SymbolIndexManager.cpp?rev=291446&r1=291445&r2=291446& > view=diff > ============================================================ > ================== > --- clang-tools-extra/trunk/include-fixer/SymbolIndexManager.cpp > (original) > +++ clang-tools-extra/trunk/include-fixer/SymbolIndexManager.cpp Mon Jan > 9 09:18:28 2017 > @@ -64,7 +64,7 @@ SymbolIndexManager::search(llvm::StringR > do { > std::vector<clang::find_all_symbols::SymbolInfo> Symbols; > for (const auto &DB : SymbolIndices) { > - auto Res = DB->search(Names.back().str()); > + auto Res = DB.get()->search(Names.back()); > Symbols.insert(Symbols.end(), Res.begin(), Res.end()); > } > > > Modified: clang-tools-extra/trunk/include-fixer/SymbolIndexManager.h > URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/ > trunk/include-fixer/SymbolIndexManager.h?rev=291446&r1=291445&r2=291446& > view=diff > ============================================================ > ================== > --- clang-tools-extra/trunk/include-fixer/SymbolIndexManager.h (original) > +++ clang-tools-extra/trunk/include-fixer/SymbolIndexManager.h Mon Jan 9 > 09:18:28 2017 > @@ -13,6 +13,7 @@ > #include "SymbolIndex.h" > #include "find-all-symbols/SymbolInfo.h" > #include "llvm/ADT/StringRef.h" > +#include <future> > > namespace clang { > namespace include_fixer { > @@ -21,8 +22,8 @@ namespace include_fixer { > /// to an indentifier in the source code from multiple symbol databases. > class SymbolIndexManager { > public: > - void addSymbolIndex(std::unique_ptr<SymbolIndex> DB) { > - SymbolIndices.push_back(std::move(DB)); > + void addSymbolIndex(std::function<std::unique_ptr<SymbolIndex>()> F) { > + SymbolIndices.push_back(std::async(std::launch::async, F)); > } > > /// Search for header files to be included for an identifier. > @@ -39,7 +40,7 @@ public: > search(llvm::StringRef Identifier, bool IsNestedSearch = true) const; > > private: > - std::vector<std::unique_ptr<SymbolIndex>> SymbolIndices; > + std::vector<std::shared_future<std::unique_ptr<SymbolIndex>>> > SymbolIndices; > }; > > } // namespace include_fixer > > Modified: clang-tools-extra/trunk/include-fixer/plugin/ > IncludeFixerPlugin.cpp > URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/ > trunk/include-fixer/plugin/IncludeFixerPlugin.cpp?rev= > 291446&r1=291445&r2=291446&view=diff > ============================================================ > ================== > --- clang-tools-extra/trunk/include-fixer/plugin/IncludeFixerPlugin.cpp > (original) > +++ clang-tools-extra/trunk/include-fixer/plugin/IncludeFixerPlugin.cpp > Mon Jan 9 09:18:28 2017 > @@ -61,23 +61,26 @@ public: > Input = Arg.substr(strlen("-input=")); > } > > - llvm::ErrorOr<std::unique_ptr<include_fixer::YamlSymbolIndex>> > SymbolIdx( > - nullptr); > - if (DB == "yaml") { > - if (!Input.empty()) { > - SymbolIdx = include_fixer::YamlSymbolIndex:: > createFromFile(Input); > - } else { > - // If we don't have any input file, look in the directory of the > first > - // file and its parents. > - const FrontendOptions &FO = CI.getFrontendOpts(); > - SmallString<128> AbsolutePath( > - tooling::getAbsolutePath(FO.Inputs[0].getFile())); > - StringRef Directory = llvm::sys::path::parent_path(AbsolutePath); > - SymbolIdx = include_fixer::YamlSymbolIndex::createFromDirectory( > - Directory, "find_all_symbols_db.yaml"); > + std::string InputFile = CI.getFrontendOpts().Inputs[0].getFile(); > + auto CreateYamlIdx = [=]() -> std::unique_ptr<include_fixer::SymbolIndex> > { > + llvm::ErrorOr<std::unique_ptr<include_fixer::YamlSymbolIndex>> > SymbolIdx( > + nullptr); > + if (DB == "yaml") { > + if (!Input.empty()) { > + SymbolIdx = include_fixer::YamlSymbolIndex:: > createFromFile(Input); > + } else { > + // If we don't have any input file, look in the directory of > the first > + // file and its parents. > + SmallString<128> AbsolutePath(tooling:: > getAbsolutePath(InputFile)); > + StringRef Directory = llvm::sys::path::parent_path( > AbsolutePath); > + SymbolIdx = include_fixer::YamlSymbolIndex:: > createFromDirectory( > + Directory, "find_all_symbols_db.yaml"); > + } > } > - } > - SymbolIndexMgr->addSymbolIndex(std::move(*SymbolIdx)); > + return std::move(*SymbolIdx); > + }; > + > + SymbolIndexMgr->addSymbolIndex(std::move(CreateYamlIdx)); > return true; > } > > > Modified: clang-tools-extra/trunk/include-fixer/tool/ClangIncludeFixer.cpp > URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/ > trunk/include-fixer/tool/ClangIncludeFixer.cpp?rev= > 291446&r1=291445&r2=291446&view=diff > ============================================================ > ================== > --- clang-tools-extra/trunk/include-fixer/tool/ClangIncludeFixer.cpp > (original) > +++ clang-tools-extra/trunk/include-fixer/tool/ClangIncludeFixer.cpp Mon > Jan 9 09:18:28 2017 > @@ -179,30 +179,36 @@ createSymbolIndexManager(StringRef FileP > find_all_symbols::SymbolInfo::SymbolKind::Unknown, > CommaSplits[I].trim(), 1, {}, /*NumOccurrences=*/E - I)); > } > - SymbolIndexMgr->addSymbolIndex( > - llvm::make_unique<include_fixer::InMemorySymbolIndex>(Symbols)); > + SymbolIndexMgr->addSymbolIndex([=]() { > + return llvm::make_unique<include_fixer::InMemorySymbolIndex>( > Symbols); > + }); > break; > } > case yaml: { > - llvm::ErrorOr<std::unique_ptr<include_fixer::YamlSymbolIndex>> > DB(nullptr); > - if (!Input.empty()) { > - DB = include_fixer::YamlSymbolIndex::createFromFile(Input); > - } else { > - // If we don't have any input file, look in the directory of the > first > - // file and its parents. > - SmallString<128> AbsolutePath(tooling::getAbsolutePath(FilePath)); > - StringRef Directory = llvm::sys::path::parent_path(AbsolutePath); > - DB = include_fixer::YamlSymbolIndex::createFromDirectory( > - Directory, "find_all_symbols_db.yaml"); > - } > + auto CreateYamlIdx = [=]() -> std::unique_ptr<include_fixer::SymbolIndex> > { > + llvm::ErrorOr<std::unique_ptr<include_fixer::YamlSymbolIndex>> DB( > + nullptr); > + if (!Input.empty()) { > + DB = include_fixer::YamlSymbolIndex::createFromFile(Input); > + } else { > + // If we don't have any input file, look in the directory of the > + // first > + // file and its parents. > + SmallString<128> AbsolutePath(tooling:: > getAbsolutePath(FilePath)); > + StringRef Directory = llvm::sys::path::parent_path(AbsolutePath); > + DB = include_fixer::YamlSymbolIndex::createFromDirectory( > + Directory, "find_all_symbols_db.yaml"); > + } > > - if (!DB) { > - llvm::errs() << "Couldn't find YAML db: " << DB.getError().message() > - << '\n'; > - return nullptr; > - } > + if (!DB) { > + llvm::errs() << "Couldn't find YAML db: " << > DB.getError().message() > + << '\n'; > + return nullptr; > + } > + return std::move(*DB); > + }; > > - SymbolIndexMgr->addSymbolIndex(std::move(*DB)); > + SymbolIndexMgr->addSymbolIndex(std::move(CreateYamlIdx)); > break; > } > } > > Modified: clang-tools-extra/trunk/unittests/include-fixer/ > IncludeFixerTest.cpp > URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/ > trunk/unittests/include-fixer/IncludeFixerTest.cpp?rev= > 291446&r1=291445&r2=291446&view=diff > ============================================================ > ================== > --- clang-tools-extra/trunk/unittests/include-fixer/IncludeFixerTest.cpp > (original) > +++ clang-tools-extra/trunk/unittests/include-fixer/IncludeFixerTest.cpp > Mon Jan 9 09:18:28 2017 > @@ -85,8 +85,9 @@ static std::string runIncludeFixer( > 1, {}), > }; > auto SymbolIndexMgr = llvm::make_unique<include_ > fixer::SymbolIndexManager>(); > - SymbolIndexMgr->addSymbolIndex( > - llvm::make_unique<include_fixer::InMemorySymbolIndex>(Symbols)); > + SymbolIndexMgr->addSymbolIndex([=]() { > + return llvm::make_unique<include_fixer::InMemorySymbolIndex>( > Symbols); > + }); > > std::vector<IncludeFixerContext> FixerContexts; > IncludeFixerActionFactory Factory(*SymbolIndexMgr, FixerContexts, > "llvm"); > > > _______________________________________________ > cfe-commits mailing list > cfe-commits@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits