Skip to content

Commit bbf6775

Browse files
committed
Merge remote-tracking branch 'refs/remotes/upstream/main' into adding-mlir-models
2 parents 1272578 + 118bfcd commit bbf6775

File tree

856 files changed

+45283
-11346
lines changed

Some content is hidden

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

856 files changed

+45283
-11346
lines changed

.github/new-prs-labeler.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -777,6 +777,10 @@ backend:NVPTX:
777777
- 'llvm/**/*nvptx*/**'
778778
- 'llvm/**/*NVPTX*/**'
779779

780+
backend:MIPS:
781+
- '**/*mips*'
782+
- '**/*Mips*'
783+
780784
backend:RISC-V:
781785
- clang/**/*riscv*
782786
- clang/**/*RISCV*

.github/workflows/libcxx-restart-preempted-jobs.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ jobs:
3333
with:
3434
script: |
3535
const failure_regex = /Process completed with exit code 1./
36-
const preemption_regex = /The runner has received a shutdown signal/
36+
const preemption_regex = /(The runner has received a shutdown signal)|(The operation was canceled)/
3737
3838
const wf_run = context.payload.workflow_run
3939
core.notice(`Running on "${wf_run.display_title}" by @${wf_run.actor.login} (event: ${wf_run.event})\nWorkflow run URL: ${wf_run.html_url}`)

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ add_clang_library(clangTidyCppCoreGuidelinesModule STATIC
3333
RvalueReferenceParamNotMovedCheck.cpp
3434
SlicingCheck.cpp
3535
SpecialMemberFunctionsCheck.cpp
36+
UseEnumClassCheck.cpp
3637
VirtualClassDestructorCheck.cpp
3738

3839
LINK_LIBS

clang-tools-extra/clang-tidy/cppcoreguidelines/CppCoreGuidelinesTidyModule.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
#include "RvalueReferenceParamNotMovedCheck.h"
4949
#include "SlicingCheck.h"
5050
#include "SpecialMemberFunctionsCheck.h"
51+
#include "UseEnumClassCheck.h"
5152
#include "VirtualClassDestructorCheck.h"
5253

5354
namespace clang::tidy {
@@ -131,6 +132,8 @@ class CppCoreGuidelinesModule : public ClangTidyModule {
131132
CheckFactories.registerCheck<SlicingCheck>("cppcoreguidelines-slicing");
132133
CheckFactories.registerCheck<modernize::UseDefaultMemberInitCheck>(
133134
"cppcoreguidelines-use-default-member-init");
135+
CheckFactories.registerCheck<UseEnumClassCheck>(
136+
"cppcoreguidelines-use-enum-class");
134137
CheckFactories.registerCheck<misc::UnconventionalAssignOperatorCheck>(
135138
"cppcoreguidelines-c-copy-assignment-signature");
136139
CheckFactories.registerCheck<VirtualClassDestructorCheck>(
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
//===--- UseEnumClassCheck.cpp - 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 "UseEnumClassCheck.h"
10+
#include "clang/ASTMatchers/ASTMatchFinder.h"
11+
12+
using namespace clang::ast_matchers;
13+
14+
namespace clang::tidy::cppcoreguidelines {
15+
16+
UseEnumClassCheck::UseEnumClassCheck(StringRef Name, ClangTidyContext *Context)
17+
: ClangTidyCheck(Name, Context),
18+
IgnoreUnscopedEnumsInClasses(
19+
Options.get("IgnoreUnscopedEnumsInClasses", false)) {}
20+
21+
void UseEnumClassCheck::storeOptions(ClangTidyOptions::OptionMap &Opts) {
22+
Options.store(Opts, "IgnoreUnscopedEnumsInClasses",
23+
IgnoreUnscopedEnumsInClasses);
24+
}
25+
26+
void UseEnumClassCheck::registerMatchers(MatchFinder *Finder) {
27+
auto EnumDecl =
28+
IgnoreUnscopedEnumsInClasses
29+
? enumDecl(unless(isScoped()), unless(hasParent(recordDecl())))
30+
: enumDecl(unless(isScoped()));
31+
Finder->addMatcher(EnumDecl.bind("unscoped_enum"), this);
32+
}
33+
34+
void UseEnumClassCheck::check(const MatchFinder::MatchResult &Result) {
35+
const auto *UnscopedEnum = Result.Nodes.getNodeAs<EnumDecl>("unscoped_enum");
36+
37+
diag(UnscopedEnum->getLocation(),
38+
"enum %0 is unscoped, use 'enum class' instead")
39+
<< UnscopedEnum;
40+
}
41+
42+
} // namespace clang::tidy::cppcoreguidelines
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
//===--- UseEnumClassCheck.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_CPPCOREGUIDELINES_USEENUMCLASSCHECK_H
10+
#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_CPPCOREGUIDELINES_USEENUMCLASSCHECK_H
11+
12+
#include "../ClangTidyCheck.h"
13+
14+
namespace clang::tidy::cppcoreguidelines {
15+
16+
/// Finds unscoped (non-class) enum declarations and suggests using enum class
17+
/// instead.
18+
///
19+
/// For the user-facing documentation see:
20+
/// http://clang.llvm.org/extra/clang-tidy/checks/cppcoreguidelines/use-enum-class.html
21+
class UseEnumClassCheck : public ClangTidyCheck {
22+
public:
23+
UseEnumClassCheck(StringRef Name, ClangTidyContext *Context);
24+
void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
25+
void registerMatchers(ast_matchers::MatchFinder *Finder) override;
26+
void check(const ast_matchers::MatchFinder::MatchResult &Result) override;
27+
bool isLanguageVersionSupported(const LangOptions &LangOpts) const override {
28+
return LangOpts.CPlusPlus11;
29+
}
30+
std::optional<TraversalKind> getCheckTraversalKind() const override {
31+
return TraversalKind::TK_IgnoreUnlessSpelledInSource;
32+
}
33+
34+
private:
35+
const bool IgnoreUnscopedEnumsInClasses;
36+
};
37+
38+
} // namespace clang::tidy::cppcoreguidelines
39+
40+
#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_CPPCOREGUIDELINES_USEENUMCLASSCHECK_H

clang-tools-extra/clangd/ClangdLSPServer.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -494,9 +494,9 @@ static std::vector<llvm::StringRef> semanticTokenModifiers() {
494494
void ClangdLSPServer::onInitialize(const InitializeParams &Params,
495495
Callback<llvm::json::Value> Reply) {
496496
// Determine character encoding first as it affects constructed ClangdServer.
497-
if (Params.capabilities.offsetEncoding && !Opts.Encoding) {
497+
if (Params.capabilities.PositionEncodings && !Opts.Encoding) {
498498
Opts.Encoding = OffsetEncoding::UTF16; // fallback
499-
for (OffsetEncoding Supported : *Params.capabilities.offsetEncoding)
499+
for (OffsetEncoding Supported : *Params.capabilities.PositionEncodings)
500500
if (Supported != OffsetEncoding::UnsupportedEncoding) {
501501
Opts.Encoding = Supported;
502502
break;
@@ -686,13 +686,19 @@ void ClangdLSPServer::onInitialize(const InitializeParams &Params,
686686
ServerCaps["executeCommandProvider"] =
687687
llvm::json::Object{{"commands", Commands}};
688688

689+
if (Opts.Encoding)
690+
ServerCaps["positionEncoding"] = *Opts.Encoding;
691+
689692
llvm::json::Object Result{
690693
{{"serverInfo",
691694
llvm::json::Object{
692695
{"name", "clangd"},
693696
{"version", llvm::formatv("{0} {1} {2}", versionString(),
694697
featureString(), platformString())}}},
695698
{"capabilities", std::move(ServerCaps)}}};
699+
700+
// TODO: offsetEncoding capability is a deprecated clangd extension and should
701+
// be deleted.
696702
if (Opts.Encoding)
697703
Result["offsetEncoding"] = *Opts.Encoding;
698704
Reply(std::move(Result));

clang-tools-extra/clangd/Protocol.cpp

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -497,10 +497,19 @@ bool fromJSON(const llvm::json::Value &Params, ClientCapabilities &R,
497497
if (auto Cancel = StaleRequestSupport->getBoolean("cancel"))
498498
R.CancelsStaleRequests = *Cancel;
499499
}
500+
if (auto *PositionEncodings = General->get("positionEncodings")) {
501+
R.PositionEncodings.emplace();
502+
if (!fromJSON(*PositionEncodings, *R.PositionEncodings,
503+
P.field("general").field("positionEncodings")))
504+
return false;
505+
}
500506
}
501507
if (auto *OffsetEncoding = O->get("offsetEncoding")) {
502-
R.offsetEncoding.emplace();
503-
if (!fromJSON(*OffsetEncoding, *R.offsetEncoding,
508+
R.PositionEncodings.emplace();
509+
elog("offsetEncoding capability is a deprecated clangd extension that'll "
510+
"go away with clangd 23. Migrate to standard positionEncodings "
511+
"capability introduced by LSP 3.17");
512+
if (!fromJSON(*OffsetEncoding, *R.PositionEncodings,
504513
P.field("offsetEncoding")))
505514
return false;
506515
}
@@ -536,8 +545,11 @@ bool fromJSON(const llvm::json::Value &Params, ClientCapabilities &R,
536545
}
537546
}
538547
if (auto *OffsetEncoding = Experimental->get("offsetEncoding")) {
539-
R.offsetEncoding.emplace();
540-
if (!fromJSON(*OffsetEncoding, *R.offsetEncoding,
548+
R.PositionEncodings.emplace();
549+
elog("offsetEncoding capability is a deprecated clangd extension that'll "
550+
"go away with clangd 23. Migrate to standard positionEncodings "
551+
"capability introduced by LSP 3.17");
552+
if (!fromJSON(*OffsetEncoding, *R.PositionEncodings,
541553
P.field("offsetEncoding")))
542554
return false;
543555
}

clang-tools-extra/clangd/Protocol.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -528,8 +528,9 @@ struct ClientCapabilities {
528528
/// textDocument.semanticHighlightingCapabilities.semanticHighlighting
529529
bool TheiaSemanticHighlighting = false;
530530

531-
/// Supported encodings for LSP character offsets. (clangd extension).
532-
std::optional<std::vector<OffsetEncoding>> offsetEncoding;
531+
/// Supported encodings for LSP character offsets.
532+
/// general.positionEncodings
533+
std::optional<std::vector<OffsetEncoding>> PositionEncodings;
533534

534535
/// The content format that should be used for Hover requests.
535536
/// textDocument.hover.contentEncoding
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# RUN: clangd -lit-test < %s | FileCheck -strict-whitespace %s
2+
# This test verifies that we can negotiate UTF-8 offsets via the positionEncodings capability introduced in LSP 3.17.
3+
{"jsonrpc":"2.0","id":0,"method":"initialize","params":{"processId":123,"rootPath":"clangd","capabilities":{"general":{"positionEncodings":["utf-8","utf-16"]}},"trace":"off"}}
4+
# CHECK: "positionEncoding": "utf-8"
5+
---
6+
{"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"uri":"test:///main.cpp","languageId":"cpp","version":1,"text":"/*ö*/int x;\nint y=x;"}}}
7+
---
8+
{"jsonrpc":"2.0","id":1,"method":"textDocument/definition","params":{"textDocument":{"uri":"test:///main.cpp"},"position":{"line":1,"character":6}}}
9+
# /*ö*/int x;
10+
# 01234567890
11+
# x is character (and utf-16) range [9,10) but byte range [10,11).
12+
# CHECK: "id": 1,
13+
# CHECK-NEXT: "jsonrpc": "2.0",
14+
# CHECK-NEXT: "result": [
15+
# CHECK-NEXT: {
16+
# CHECK-NEXT: "range": {
17+
# CHECK-NEXT: "end": {
18+
# CHECK-NEXT: "character": 11,
19+
# CHECK-NEXT: "line": 0
20+
# CHECK-NEXT: },
21+
# CHECK-NEXT: "start": {
22+
# CHECK-NEXT: "character": 10,
23+
# CHECK-NEXT: "line": 0
24+
# CHECK-NEXT: }
25+
# CHECK-NEXT: },
26+
# CHECK-NEXT: "uri": "file://{{.*}}/main.cpp"
27+
# CHECK-NEXT: }
28+
# CHECK-NEXT: ]
29+
---
30+
{"jsonrpc":"2.0","id":10000,"method":"shutdown"}
31+
---
32+
{"jsonrpc":"2.0","method":"exit"}

0 commit comments

Comments
 (0)