Skip to content

Commit 2a36ef6

Browse files
committed
Merge branch 'sycl' of https://github.com/otcshare/llvm into akp1
2 parents a16091a + 4f0a3df commit 2a36ef6

File tree

2,395 files changed

+102460
-28958
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

2,395 files changed

+102460
-28958
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for details.
2222
## Sub-projects Documentation
2323

2424
* oneAPI Data Parallel C++ compiler - See
25-
[GetStartedGuide.md](sycl/doc/GetStartedGuide.md)
25+
[DPC++ Documentation](https://intel.github.io/llvm-docs/)
2626

2727
## DPC++ extensions
2828

buildbot/dependency.conf

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
ocl_cpu_rt_ver=2020.10.4.0.15
44
# https://github.com/intel/llvm/releases/download/2020-03/win-oclcpuexp-2020.10.4.0.15_rel.zip
55
ocl_cpu_rt_ver_win=2020.10.4.0.15
6-
# https://github.com/intel/compute-runtime/releases/tag/20.12.16259
7-
ocl_gpu_rt_ver=l0-20.12.16259
6+
# https://github.com/intel/compute-runtime/releases/tag/20.19.16754
7+
ocl_gpu_rt_ver=20.19.16754
88
# https://downloadcenter.intel.com/download/29557/Intel-Graphics-Windows-10-DCH-Drivers
99
ocl_gpu_rt_ver_win=ci-neo-015900
1010
intel_sycl_ver=build
@@ -20,7 +20,7 @@ fpga_ver_win=20200216_000000
2020
[DRIVER VERSIONS]
2121
cpu_driver_lin=2020.10.4.0.15
2222
cpu_driver_win=2020.10.4.0.15
23-
gpu_driver_lin=20.12.16259
23+
gpu_driver_lin=20.19.16754
2424
gpu_driver_win=ci-neo-015900
2525
fpga_driver_lin=2020.9.2.0
2626
fpga_driver_win=2020.9.2.0

clang-tools-extra/clang-doc/Generators.cpp

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -27,20 +27,6 @@ findGeneratorByName(llvm::StringRef Format) {
2727

2828
// Enum conversion
2929

30-
std::string getAccess(AccessSpecifier AS) {
31-
switch (AS) {
32-
case AccessSpecifier::AS_public:
33-
return "public";
34-
case AccessSpecifier::AS_protected:
35-
return "protected";
36-
case AccessSpecifier::AS_private:
37-
return "private";
38-
case AccessSpecifier::AS_none:
39-
return {};
40-
}
41-
llvm_unreachable("Unknown AccessSpecifier");
42-
}
43-
4430
std::string getTagType(TagTypeKind AS) {
4531
switch (AS) {
4632
case TagTypeKind::TTK_Class:

clang-tools-extra/clang-doc/Generators.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,6 @@ typedef llvm::Registry<Generator> GeneratorRegistry;
4242
llvm::Expected<std::unique_ptr<Generator>>
4343
findGeneratorByName(llvm::StringRef Format);
4444

45-
std::string getAccess(AccessSpecifier AS);
46-
4745
std::string getTagType(TagTypeKind AS);
4846

4947
} // namespace doc

clang-tools-extra/clang-doc/HTMLGenerator.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -402,7 +402,7 @@ genRecordMembersBlock(const llvm::SmallVector<MemberTypeInfo, 4> &Members,
402402
Out.emplace_back(std::make_unique<TagNode>(HTMLTag::TAG_UL));
403403
auto &ULBody = Out.back();
404404
for (const auto &M : Members) {
405-
std::string Access = getAccess(M.Access);
405+
std::string Access = getAccessSpelling(M.Access).str();
406406
if (Access != "")
407407
Access = Access + " ";
408408
auto LIBody = std::make_unique<TagNode>(HTMLTag::TAG_LI);
@@ -679,7 +679,7 @@ genHTML(const FunctionInfo &I, const ClangDocContext &CDCtx,
679679
Out.emplace_back(std::make_unique<TagNode>(HTMLTag::TAG_P));
680680
auto &FunctionHeader = Out.back();
681681

682-
std::string Access = getAccess(I.Access);
682+
std::string Access = getAccessSpelling(I.Access).str();
683683
if (Access != "")
684684
FunctionHeader->Children.emplace_back(
685685
std::make_unique<TextNode>(Access + " "));

clang-tools-extra/clang-doc/MDGenerator.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ static void genMarkdown(const ClangDocContext &CDCtx, const FunctionInfo &I,
157157
First = false;
158158
}
159159
writeHeader(I.Name, 3, OS);
160-
std::string Access = getAccess(I.Access);
160+
std::string Access = getAccessSpelling(I.Access).str();
161161
if (Access != "")
162162
writeLine(genItalic(Access + " " + I.ReturnType.Type.Name + " " + I.Name +
163163
"(" + Stream.str() + ")"),
@@ -250,7 +250,7 @@ static void genMarkdown(const ClangDocContext &CDCtx, const RecordInfo &I,
250250
if (!I.Members.empty()) {
251251
writeHeader("Members", 2, OS);
252252
for (const auto &Member : I.Members) {
253-
std::string Access = getAccess(Member.Access);
253+
std::string Access = getAccessSpelling(Member.Access).str();
254254
if (Access != "")
255255
writeLine(Access + " " + Member.Type.Name + " " + Member.Name, OS);
256256
else

clang-tools-extra/clang-query/tool/ClangQuery.cpp

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
#include "llvm/Support/CommandLine.h"
3636
#include "llvm/Support/MemoryBuffer.h"
3737
#include "llvm/Support/Signals.h"
38+
#include "llvm/Support/WithColor.h"
3839
#include <fstream>
3940
#include <string>
4041

@@ -86,7 +87,14 @@ bool runCommandsInFile(const char *ExeName, std::string const &FileName,
8687
int main(int argc, const char **argv) {
8788
llvm::sys::PrintStackTraceOnErrorSignal(argv[0]);
8889

89-
CommonOptionsParser OptionsParser(argc, argv, ClangQueryCategory);
90+
llvm::Expected<CommonOptionsParser> OptionsParser =
91+
CommonOptionsParser::create(argc, argv, ClangQueryCategory,
92+
llvm::cl::OneOrMore);
93+
94+
if (!OptionsParser) {
95+
llvm::WithColor::error() << llvm::toString(OptionsParser.takeError());
96+
return 1;
97+
}
9098

9199
if (!Commands.empty() && !CommandFiles.empty()) {
92100
llvm::errs() << argv[0] << ": cannot specify both -c and -f\n";
@@ -99,8 +107,8 @@ int main(int argc, const char **argv) {
99107
return 1;
100108
}
101109

102-
ClangTool Tool(OptionsParser.getCompilations(),
103-
OptionsParser.getSourcePathList());
110+
ClangTool Tool(OptionsParser->getCompilations(),
111+
OptionsParser->getSourcePathList());
104112
std::vector<std::unique_ptr<ASTUnit>> ASTs;
105113
int Status = Tool.buildASTs(ASTs);
106114
int ASTStatus = 0;

clang-tools-extra/clang-tidy/abseil/AbseilTidyModule.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,9 @@
2121
#include "NoInternalDependenciesCheck.h"
2222
#include "NoNamespaceCheck.h"
2323
#include "RedundantStrcatCallsCheck.h"
24-
#include "StringFindStartswithCheck.h"
2524
#include "StrCatAppendCheck.h"
25+
#include "StringFindStartswithCheck.h"
26+
#include "StringFindStrContainsCheck.h"
2627
#include "TimeComparisonCheck.h"
2728
#include "TimeSubtractionCheck.h"
2829
#include "UpgradeDurationConversionsCheck.h"
@@ -61,6 +62,8 @@ class AbseilModule : public ClangTidyModule {
6162
"abseil-str-cat-append");
6263
CheckFactories.registerCheck<StringFindStartswithCheck>(
6364
"abseil-string-find-startswith");
65+
CheckFactories.registerCheck<StringFindStrContainsCheck>(
66+
"abseil-string-find-str-contains");
6467
CheckFactories.registerCheck<TimeComparisonCheck>(
6568
"abseil-time-comparison");
6669
CheckFactories.registerCheck<TimeSubtractionCheck>(

clang-tools-extra/clang-tidy/abseil/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ add_clang_library(clangTidyAbseilModule
2020
RedundantStrcatCallsCheck.cpp
2121
StrCatAppendCheck.cpp
2222
StringFindStartswithCheck.cpp
23+
StringFindStrContainsCheck.cpp
2324
TimeComparisonCheck.cpp
2425
TimeSubtractionCheck.cpp
2526
UpgradeDurationConversionsCheck.cpp
@@ -32,4 +33,5 @@ add_clang_library(clangTidyAbseilModule
3233
clangTidy
3334
clangTidyUtils
3435
clangTooling
36+
clangTransformer
3537
)
Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
//===--- StringFindStrContainsCheck.cc - clang-tidy------------------------===//
2+
//
3+
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4+
// See https://llvm.org/LICENSE.txt for license information.
5+
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6+
//
7+
//===----------------------------------------------------------------------===//
8+
9+
#include "StringFindStrContainsCheck.h"
10+
11+
#include "../utils/OptionsUtils.h"
12+
#include "clang/AST/ASTContext.h"
13+
#include "clang/ASTMatchers/ASTMatchers.h"
14+
#include "clang/Frontend/CompilerInstance.h"
15+
#include "clang/Tooling/Transformer/RewriteRule.h"
16+
#include "clang/Tooling/Transformer/Stencil.h"
17+
18+
using namespace clang::ast_matchers;
19+
20+
namespace clang {
21+
namespace tidy {
22+
namespace abseil {
23+
24+
using ::clang::transformer::applyFirst;
25+
using ::clang::transformer::cat;
26+
using ::clang::transformer::change;
27+
using ::clang::transformer::makeRule;
28+
using ::clang::transformer::node;
29+
30+
static const char DefaultStringLikeClasses[] = "::std::basic_string;"
31+
"::std::basic_string_view;"
32+
"::absl::string_view";
33+
static const char DefaultAbseilStringsMatchHeader[] = "absl/strings/match.h";
34+
35+
static llvm::Optional<transformer::RewriteRule>
36+
MakeRule(const LangOptions &LangOpts,
37+
const ClangTidyCheck::OptionsView &Options) {
38+
// Parse options.
39+
//
40+
// FIXME(tdl-g): These options are being parsed redundantly with the
41+
// constructor because TransformerClangTidyCheck forces us to provide MakeRule
42+
// before "this" is fully constructed, but StoreOptions requires us to store
43+
// the parsed options in "this". We need to fix TransformerClangTidyCheck and
44+
// then we can clean this up.
45+
const std::vector<std::string> StringLikeClassNames =
46+
utils::options::parseStringList(
47+
Options.get("StringLikeClasses", DefaultStringLikeClasses));
48+
const std::string AbseilStringsMatchHeader =
49+
Options.get("AbseilStringsMatchHeader", DefaultAbseilStringsMatchHeader);
50+
51+
auto StringLikeClass = cxxRecordDecl(hasAnyName(SmallVector<StringRef, 4>(
52+
StringLikeClassNames.begin(), StringLikeClassNames.end())));
53+
auto StringType =
54+
hasUnqualifiedDesugaredType(recordType(hasDeclaration(StringLikeClass)));
55+
auto CharStarType =
56+
hasUnqualifiedDesugaredType(pointerType(pointee(isAnyCharacter())));
57+
auto StringNpos = declRefExpr(
58+
to(varDecl(hasName("npos"), hasDeclContext(StringLikeClass))));
59+
auto StringFind = cxxMemberCallExpr(
60+
callee(cxxMethodDecl(
61+
hasName("find"),
62+
hasParameter(0, parmVarDecl(anyOf(hasType(StringType),
63+
hasType(CharStarType)))))),
64+
on(hasType(StringType)), hasArgument(0, expr().bind("parameter_to_find")),
65+
anyOf(hasArgument(1, integerLiteral(equals(0))),
66+
hasArgument(1, cxxDefaultArgExpr())),
67+
onImplicitObjectArgument(expr().bind("string_being_searched")));
68+
69+
tooling::RewriteRule rule = applyFirst(
70+
{makeRule(binaryOperator(hasOperatorName("=="),
71+
hasOperands(ignoringParenImpCasts(StringNpos),
72+
ignoringParenImpCasts(StringFind))),
73+
change(cat("!absl::StrContains(", node("string_being_searched"),
74+
", ", node("parameter_to_find"), ")")),
75+
cat("use !absl::StrContains instead of find() == npos")),
76+
makeRule(binaryOperator(hasOperatorName("!="),
77+
hasOperands(ignoringParenImpCasts(StringNpos),
78+
ignoringParenImpCasts(StringFind))),
79+
change(cat("absl::StrContains(", node("string_being_searched"),
80+
", ", node("parameter_to_find"), ")")),
81+
cat("use absl::StrContains instead of find() != npos"))});
82+
addInclude(rule, AbseilStringsMatchHeader);
83+
return rule;
84+
}
85+
86+
StringFindStrContainsCheck::StringFindStrContainsCheck(
87+
StringRef Name, ClangTidyContext *Context)
88+
: TransformerClangTidyCheck(&MakeRule, Name, Context),
89+
StringLikeClassesOption(utils::options::parseStringList(
90+
Options.get("StringLikeClasses", DefaultStringLikeClasses))),
91+
AbseilStringsMatchHeaderOption(Options.get(
92+
"AbseilStringsMatchHeader", DefaultAbseilStringsMatchHeader)) {}
93+
94+
bool StringFindStrContainsCheck::isLanguageVersionSupported(
95+
const LangOptions &LangOpts) const {
96+
return LangOpts.CPlusPlus11;
97+
}
98+
99+
void StringFindStrContainsCheck::storeOptions(
100+
ClangTidyOptions::OptionMap &Opts) {
101+
TransformerClangTidyCheck::storeOptions(Opts);
102+
Options.store(Opts, "StringLikeClasses",
103+
utils::options::serializeStringList(StringLikeClassesOption));
104+
Options.store(Opts, "AbseilStringsMatchHeader",
105+
AbseilStringsMatchHeaderOption);
106+
}
107+
108+
} // namespace abseil
109+
} // namespace tidy
110+
} // namespace clang
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
//===--- StringFindStrContainsCheck.h - clang-tidy---------------*- C++ -*-===//
2+
//
3+
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4+
// See https://llvm.org/LICENSE.txt for license information.
5+
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6+
//
7+
//===----------------------------------------------------------------------===//
8+
9+
#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_ABSEIL_STRINGFINDSTRCONTAINSCHECK_H
10+
#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_ABSEIL_STRINGFINDSTRCONTAINSCHECK_H
11+
12+
#include "../ClangTidy.h"
13+
#include "../utils/TransformerClangTidyCheck.h"
14+
15+
namespace clang {
16+
namespace tidy {
17+
namespace abseil {
18+
19+
/// Finds s.find(...) == string::npos comparisons (for various string-like
20+
/// types) and suggests replacing with absl::StrContains.
21+
///
22+
/// For the user-facing documentation see:
23+
/// http://clang.llvm.org/extra/clang-tidy/checks/abseil-string-find-str-contains.html
24+
class StringFindStrContainsCheck : public utils::TransformerClangTidyCheck {
25+
public:
26+
StringFindStrContainsCheck(StringRef Name, ClangTidyContext *Context);
27+
bool isLanguageVersionSupported(const LangOptions &LangOpts) const override;
28+
void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
29+
30+
private:
31+
const std::vector<std::string> StringLikeClassesOption;
32+
const std::string AbseilStringsMatchHeaderOption;
33+
};
34+
35+
} // namespace abseil
36+
} // namespace tidy
37+
} // namespace clang
38+
39+
#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_ABSEIL_STRINGFINDSTRCONTAINSCHECK_H

clang-tools-extra/clang-tidy/misc/NonPrivateMemberVariablesInClassesCheck.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,9 @@ void NonPrivateMemberVariablesInClassesCheck::registerMatchers(
5959
// If we are ok with public fields, then we only want to complain about
6060
// protected fields, else we want to complain about all non-private fields.
6161
// We can ignore public member variables in structs/classes, in unions.
62-
auto InterestingField = fieldDecl(
63-
IgnorePublicMemberVariables ? isProtected() : unless(isPrivate()));
62+
auto InterestingField = IgnorePublicMemberVariables
63+
? fieldDecl(isProtected())
64+
: fieldDecl(unless(isPrivate()));
6465

6566
// We only want the records that not only contain the mutable data (non-static
6667
// member variables), but also have some logic (non-static, non-implicit

clang-tools-extra/clang-tidy/tool/ClangTidyMain.cpp

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
#include "llvm/Support/Process.h"
2424
#include "llvm/Support/Signals.h"
2525
#include "llvm/Support/TargetSelect.h"
26+
#include "llvm/Support/WithColor.h"
2627

2728
using namespace clang::ast_matchers;
2829
using namespace clang::driver;
@@ -333,8 +334,14 @@ getVfsFromFile(const std::string &OverlayFile,
333334

334335
int clangTidyMain(int argc, const char **argv) {
335336
llvm::InitLLVM X(argc, argv);
336-
CommonOptionsParser OptionsParser(argc, argv, ClangTidyCategory,
337-
cl::ZeroOrMore);
337+
llvm::Expected<CommonOptionsParser> OptionsParser =
338+
CommonOptionsParser::create(argc, argv, ClangTidyCategory,
339+
cl::ZeroOrMore);
340+
if (!OptionsParser) {
341+
llvm::WithColor::error() << llvm::toString(OptionsParser.takeError());
342+
return 1;
343+
}
344+
338345
llvm::IntrusiveRefCntPtr<vfs::OverlayFileSystem> BaseFS(
339346
new vfs::OverlayFileSystem(vfs::getRealFileSystem()));
340347

@@ -365,7 +372,7 @@ int clangTidyMain(int argc, const char **argv) {
365372
SmallString<256> ProfilePrefix = MakeAbsolute(StoreCheckProfile);
366373

367374
StringRef FileName("dummy");
368-
auto PathList = OptionsParser.getSourcePathList();
375+
auto PathList = OptionsParser->getSourcePathList();
369376
if (!PathList.empty()) {
370377
FileName = PathList.front();
371378
}
@@ -433,7 +440,7 @@ int clangTidyMain(int argc, const char **argv) {
433440
ClangTidyContext Context(std::move(OwningOptionsProvider),
434441
AllowEnablingAnalyzerAlphaCheckers);
435442
std::vector<ClangTidyError> Errors =
436-
runClangTidy(Context, OptionsParser.getCompilations(), PathList, BaseFS,
443+
runClangTidy(Context, OptionsParser->getCompilations(), PathList, BaseFS,
437444
EnableCheckProfile, ProfilePrefix);
438445
bool FoundErrors = llvm::find_if(Errors, [](const ClangTidyError &E) {
439446
return E.DiagLevel == ClangTidyError::Error;

clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,14 @@ class RenamerClangTidyCheckPPCallbacks : public PPCallbacks {
7373
/// MacroDefined calls checkMacro for macros in the main file
7474
void MacroDefined(const Token &MacroNameTok,
7575
const MacroDirective *MD) override {
76+
if (MD->getMacroInfo()->isBuiltinMacro())
77+
return;
78+
if (PP->getSourceManager().isWrittenInBuiltinFile(
79+
MacroNameTok.getLocation()))
80+
return;
81+
if (PP->getSourceManager().isWrittenInCommandLineFile(
82+
MacroNameTok.getLocation()))
83+
return;
7684
Check->checkMacro(PP->getSourceManager(), MacroNameTok, MD->getMacroInfo());
7785
}
7886

0 commit comments

Comments
 (0)