[clang-tools-extra] r291446 - [include-fixer] Load symbol index asynchronously.

Galina Kistanova via cfe-commits cfe-commits at lists.llvm.org
Tue Jan 10 13:01:41 PST 2017


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 at 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 at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20170110/9a8481ea/attachment-0001.html>


More information about the cfe-commits mailing list