Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
10 changes: 8 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -53,5 +53,11 @@ autoconf/autom4te.cache
# VS2017 and VSCode config files.
.vscode
.vs
# clangd index
.clangd
# clangd index. (".clangd" is a config file now, thus trailing slash)
.clangd/
.cache
# static analyzer regression testing project files
/clang/utils/analyzer/projects/*/CachedSource
/clang/utils/analyzer/projects/*/PatchedSource
/clang/utils/analyzer/projects/*/ScanBuildResults
/clang/utils/analyzer/projects/*/RefScanBuildResults
3 changes: 3 additions & 0 deletions clang-tools-extra/clang-change-namespace/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@ set(LLVM_LINK_COMPONENTS

add_clang_library(clangChangeNamespace
ChangeNamespace.cpp

DEPENDS
omp_gen
)

clang_target_link_libraries(clangChangeNamespace
Expand Down
10 changes: 2 additions & 8 deletions clang-tools-extra/clang-change-namespace/ChangeNamespace.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,8 @@ namespace change_namespace {

namespace {

inline std::string
joinNamespaces(const llvm::SmallVectorImpl<StringRef> &Namespaces) {
if (Namespaces.empty())
return "";
std::string Result(Namespaces.front());
for (auto I = Namespaces.begin() + 1, E = Namespaces.end(); I != E; ++I)
Result += ("::" + *I).str();
return Result;
inline std::string joinNamespaces(ArrayRef<StringRef> Namespaces) {
return llvm::join(Namespaces, "::");
}

// Given "a::b::c", returns {"a", "b", "c"}.
Expand Down
3 changes: 3 additions & 0 deletions clang-tools-extra/clang-doc/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ add_clang_library(clangDoc
Representation.cpp
Serialize.cpp
YAMLGenerator.cpp

DEPENDS
omp_gen
)

clang_target_link_libraries(clangDoc
Expand Down
3 changes: 3 additions & 0 deletions clang-tools-extra/clang-include-fixer/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ add_clang_library(clangIncludeFixer

LINK_LIBS
findAllSymbols

DEPENDS
omp_gen
)

clang_target_link_libraries(clangIncludeFixer
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ add_clang_library(findAllSymbols
PragmaCommentHandler.cpp
STLPostfixHeaderMap.cpp
SymbolInfo.cpp

DEPENDS
omp_gen
)

clang_target_link_libraries(findAllSymbols
Expand Down
3 changes: 3 additions & 0 deletions clang-tools-extra/clang-include-fixer/plugin/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,7 @@ add_clang_library(clangIncludeFixerPlugin
clangSema
clangTooling
${LLVM_PTHREAD_LIB}

DEPENDS
omp_gen
)
3 changes: 3 additions & 0 deletions clang-tools-extra/clang-move/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ set(LLVM_LINK_COMPONENTS
add_clang_library(clangMove
Move.cpp
HelperDeclRefGraph.cpp

DEPENDS
omp_gen
)

clang_target_link_libraries(clangMove
Expand Down
40 changes: 21 additions & 19 deletions clang-tools-extra/clang-move/Move.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -552,20 +552,22 @@ void ClangMoveTool::registerMatchers(ast_matchers::MatchFinder *Finder) {

// Match static functions/variable definitions which are defined in named
// namespaces.
Optional<ast_matchers::internal::Matcher<NamedDecl>> HasAnySymbolNames;
SmallVector<std::string, 4> QualNames;
QualNames.reserve(Context->Spec.Names.size());
for (StringRef SymbolName : Context->Spec.Names) {
llvm::StringRef GlobalSymbolName = SymbolName.trim().ltrim(':');
const auto HasName = hasName(("::" + GlobalSymbolName).str());
HasAnySymbolNames =
HasAnySymbolNames ? anyOf(*HasAnySymbolNames, HasName) : HasName;
QualNames.push_back(("::" + SymbolName.trim().ltrim(':')).str());
}

if (!HasAnySymbolNames) {
if (QualNames.empty()) {
llvm::errs() << "No symbols being moved.\n";
return;
}

ast_matchers::internal::Matcher<NamedDecl> HasAnySymbolNames =
hasAnyName(SmallVector<StringRef, 4>(QualNames.begin(), QualNames.end()));

auto InMovedClass =
hasOutermostEnclosingClass(cxxRecordDecl(*HasAnySymbolNames));
hasOutermostEnclosingClass(cxxRecordDecl(HasAnySymbolNames));

// Matchers for helper declarations in old.cc.
auto InAnonymousNS = hasParent(namespaceDecl(isAnonymous()));
Expand Down Expand Up @@ -612,38 +614,38 @@ void ClangMoveTool::registerMatchers(ast_matchers::MatchFinder *Finder) {
// Create a MatchCallback for class declarations.
MatchCallbacks.push_back(std::make_unique<ClassDeclarationMatch>(this));
// Match moved class declarations.
auto MovedClass = cxxRecordDecl(InOldFiles, *HasAnySymbolNames,
isDefinition(), TopLevelDecl)
.bind("moved_class");
auto MovedClass =
cxxRecordDecl(InOldFiles, HasAnySymbolNames, isDefinition(), TopLevelDecl)
.bind("moved_class");
Finder->addMatcher(MovedClass, MatchCallbacks.back().get());
// Match moved class methods (static methods included) which are defined
// outside moved class declaration.
Finder->addMatcher(
cxxMethodDecl(InOldFiles, ofOutermostEnclosingClass(*HasAnySymbolNames),
isDefinition())
.bind("class_method"),
MatchCallbacks.back().get());
Finder->addMatcher(cxxMethodDecl(InOldFiles,
ofOutermostEnclosingClass(HasAnySymbolNames),
isDefinition())
.bind("class_method"),
MatchCallbacks.back().get());
// Match static member variable definition of the moved class.
Finder->addMatcher(
varDecl(InMovedClass, InOldFiles, isDefinition(), isStaticDataMember())
.bind("class_static_var_decl"),
MatchCallbacks.back().get());

MatchCallbacks.push_back(std::make_unique<FunctionDeclarationMatch>(this));
Finder->addMatcher(functionDecl(InOldFiles, *HasAnySymbolNames, TopLevelDecl)
Finder->addMatcher(functionDecl(InOldFiles, HasAnySymbolNames, TopLevelDecl)
.bind("function"),
MatchCallbacks.back().get());

MatchCallbacks.push_back(std::make_unique<VarDeclarationMatch>(this));
Finder->addMatcher(
varDecl(InOldFiles, *HasAnySymbolNames, TopLevelDecl).bind("var"),
varDecl(InOldFiles, HasAnySymbolNames, TopLevelDecl).bind("var"),
MatchCallbacks.back().get());

// Match enum definition in old.h. Enum helpers (which are defined in old.cc)
// will not be moved for now no matter whether they are used or not.
MatchCallbacks.push_back(std::make_unique<EnumDeclarationMatch>(this));
Finder->addMatcher(
enumDecl(InOldHeader, *HasAnySymbolNames, isDefinition(), TopLevelDecl)
enumDecl(InOldHeader, HasAnySymbolNames, isDefinition(), TopLevelDecl)
.bind("enum"),
MatchCallbacks.back().get());

Expand All @@ -653,7 +655,7 @@ void ClangMoveTool::registerMatchers(ast_matchers::MatchFinder *Finder) {
MatchCallbacks.push_back(std::make_unique<TypeAliasMatch>(this));
Finder->addMatcher(namedDecl(anyOf(typedefDecl().bind("typedef"),
typeAliasDecl().bind("type_alias")),
InOldHeader, *HasAnySymbolNames, TopLevelDecl),
InOldHeader, HasAnySymbolNames, TopLevelDecl),
MatchCallbacks.back().get());
}

Expand Down
3 changes: 3 additions & 0 deletions clang-tools-extra/clang-query/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@ set(LLVM_LINK_COMPONENTS
add_clang_library(clangQuery
Query.cpp
QueryParser.cpp

DEPENDS
omp_gen
)

clang_target_link_libraries(clangQuery
Expand Down
9 changes: 4 additions & 5 deletions clang-tools-extra/clang-query/Query.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -46,12 +46,12 @@ bool HelpQuery::run(llvm::raw_ostream &OS, QuerySession &QS) const {
" set traversal <kind> "
"Set traversal kind of clang-query session. Available kinds are:\n"
" AsIs "
"Print and match the AST as clang sees it.\n"
"Print and match the AST as clang sees it. This mode is the "
"default.\n"
" IgnoreImplicitCastsAndParentheses "
"Omit implicit casts and parens in matching and dumping.\n"
" IgnoreUnlessSpelledInSource "
"Omit AST nodes unless spelled in the source. This mode is the "
"default.\n"
"Omit AST nodes unless spelled in the source.\n"
" set output <feature> "
"Set whether to output only <feature> content.\n"
" enable output <feature> "
Expand Down Expand Up @@ -157,8 +157,7 @@ bool MatchQuery::run(llvm::raw_ostream &OS, QuerySession &QS) const {
OS << "Binding for \"" << BI->first << "\":\n";
const ASTContext &Ctx = AST->getASTContext();
const SourceManager &SM = Ctx.getSourceManager();
ASTDumper Dumper(OS, &Ctx.getCommentCommandTraits(), &SM,
SM.getDiagnostics().getShowColors(), Ctx.getPrintingPolicy());
ASTDumper Dumper(OS, Ctx, SM.getDiagnostics().getShowColors());
Dumper.SetTraversalKind(QS.TK);
Dumper.Visit(BI->second);
OS << "\n";
Expand Down
2 changes: 1 addition & 1 deletion clang-tools-extra/clang-query/QuerySession.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ class QuerySession {
QuerySession(llvm::ArrayRef<std::unique_ptr<ASTUnit>> ASTs)
: ASTs(ASTs), PrintOutput(false), DiagOutput(true),
DetailedASTOutput(false), BindRoot(true), PrintMatcher(false),
Terminate(false), TK(ast_type_traits::TK_IgnoreUnlessSpelledInSource) {}
Terminate(false), TK(ast_type_traits::TK_AsIs) {}

llvm::ArrayRef<std::unique_ptr<ASTUnit>> ASTs;

Expand Down
3 changes: 3 additions & 0 deletions clang-tools-extra/clang-reorder-fields/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@ set(LLVM_LINK_COMPONENTS

add_clang_library(clangReorderFields
ReorderFieldsAction.cpp

DEPENDS
omp_gen
)

clang_target_link_libraries(clangReorderFields
Expand Down
1 change: 1 addition & 0 deletions clang-tools-extra/clang-tidy/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ add_clang_library(clangTidy

DEPENDS
ClangSACheckers
omp_gen
)

clang_target_link_libraries(clangTidy
Expand Down
1 change: 1 addition & 0 deletions clang-tools-extra/clang-tidy/ClangTidy.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
//===----------------------------------------------------------------------===//

#include "ClangTidy.h"
#include "ClangTidyCheck.h"
#include "ClangTidyDiagnosticConsumer.h"
#include "ClangTidyModuleRegistry.h"
#include "ClangTidyProfiling.h"
Expand Down
9 changes: 6 additions & 3 deletions clang-tools-extra/clang-tidy/ClangTidy.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,19 +9,22 @@
#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_CLANGTIDY_H
#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_CLANGTIDY_H

#include "ClangTidyCheck.h"
#include "ClangTidyDiagnosticConsumer.h"
#include "ClangTidyOptions.h"
#include "llvm/Support/raw_ostream.h"
#include <memory>
#include <vector>

namespace llvm {
class raw_ostream;
} // namespace llvm

namespace clang {

class ASTConsumer;
class CompilerInstance;
namespace tooling {
class CompilationDatabase;
}
} // namespace tooling

namespace tidy {

Expand Down
65 changes: 35 additions & 30 deletions clang-tools-extra/clang-tidy/ClangTidyCheck.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -76,16 +76,25 @@ ClangTidyCheck::OptionsView::get(StringRef LocalName) const {
return llvm::make_error<MissingOptionError>((NamePrefix + LocalName).str());
}

static ClangTidyOptions::OptionMap::const_iterator
findPriorityOption(const ClangTidyOptions::OptionMap &Options, StringRef NamePrefix,
StringRef LocalName) {
auto IterLocal = Options.find((NamePrefix + LocalName).str());
auto IterGlobal = Options.find(LocalName.str());
if (IterLocal == Options.end())
return IterGlobal;
if (IterGlobal == Options.end())
return IterLocal;
if (IterLocal->second.Priority >= IterGlobal->second.Priority)
return IterLocal;
return IterGlobal;
}

llvm::Expected<std::string>
ClangTidyCheck::OptionsView::getLocalOrGlobal(StringRef LocalName) const {
auto IterLocal = CheckOptions.find(NamePrefix + LocalName.str());
auto IterGlobal = CheckOptions.find(LocalName.str());
if (IterLocal != CheckOptions.end() &&
(IterGlobal == CheckOptions.end() ||
IterLocal->second.Priority >= IterGlobal->second.Priority))
return IterLocal->second.Value;
if (IterGlobal != CheckOptions.end())
return IterGlobal->second.Value;
auto Iter = findPriorityOption(CheckOptions, NamePrefix, LocalName);
if (Iter != CheckOptions.end())
return Iter->second.Value;
return llvm::make_error<MissingOptionError>((NamePrefix + LocalName).str());
}

Expand Down Expand Up @@ -124,14 +133,9 @@ bool ClangTidyCheck::OptionsView::get<bool>(StringRef LocalName,
template <>
llvm::Expected<bool>
ClangTidyCheck::OptionsView::getLocalOrGlobal<bool>(StringRef LocalName) const {
auto IterLocal = CheckOptions.find(NamePrefix + LocalName.str());
auto IterGlobal = CheckOptions.find(LocalName.str());
if (IterLocal != CheckOptions.end() &&
(IterGlobal == CheckOptions.end() ||
IterLocal->second.Priority >= IterGlobal->second.Priority))
return getAsBool(IterLocal->second.Value, NamePrefix + LocalName);
if (IterGlobal != CheckOptions.end())
return getAsBool(IterGlobal->second.Value, llvm::Twine(LocalName));
auto Iter = findPriorityOption(CheckOptions, NamePrefix, LocalName);
if (Iter != CheckOptions.end())
return getAsBool(Iter->second.Value, Iter->first);
return llvm::make_error<MissingOptionError>((NamePrefix + LocalName).str());
}

Expand All @@ -157,12 +161,13 @@ void ClangTidyCheck::OptionsView::store(ClangTidyOptions::OptionMap &Options,
store(Options, LocalName, llvm::itostr(Value));
}

llvm::Expected<int64_t> ClangTidyCheck::OptionsView::getEnumInt(
StringRef LocalName, ArrayRef<std::pair<StringRef, int64_t>> Mapping,
bool CheckGlobal, bool IgnoreCase) {
auto Iter = CheckOptions.find((NamePrefix + LocalName).str());
if (CheckGlobal && Iter == CheckOptions.end())
Iter = CheckOptions.find(LocalName.str());
llvm::Expected<int64_t>
ClangTidyCheck::OptionsView::getEnumInt(StringRef LocalName,
ArrayRef<NameAndValue> Mapping,
bool CheckGlobal, bool IgnoreCase) {
auto Iter = CheckGlobal
? findPriorityOption(CheckOptions, NamePrefix, LocalName)
: CheckOptions.find((NamePrefix + LocalName).str());
if (Iter == CheckOptions.end())
return llvm::make_error<MissingOptionError>((NamePrefix + LocalName).str());

Expand All @@ -171,19 +176,19 @@ llvm::Expected<int64_t> ClangTidyCheck::OptionsView::getEnumInt(
unsigned EditDistance = -1;
for (const auto &NameAndEnum : Mapping) {
if (IgnoreCase) {
if (Value.equals_lower(NameAndEnum.first))
return NameAndEnum.second;
} else if (Value.equals(NameAndEnum.first)) {
return NameAndEnum.second;
} else if (Value.equals_lower(NameAndEnum.first)) {
Closest = NameAndEnum.first;
if (Value.equals_lower(NameAndEnum.second))
return NameAndEnum.first;
} else if (Value.equals(NameAndEnum.second)) {
return NameAndEnum.first;
} else if (Value.equals_lower(NameAndEnum.second)) {
Closest = NameAndEnum.second;
EditDistance = 0;
continue;
}
unsigned Distance = Value.edit_distance(NameAndEnum.first);
unsigned Distance = Value.edit_distance(NameAndEnum.second);
if (Distance < EditDistance) {
EditDistance = Distance;
Closest = NameAndEnum.first;
Closest = NameAndEnum.second;
}
}
if (EditDistance < 3)
Expand Down
Loading