Skip to content

Commit d59fffd

Browse files
committed
Merge from 'main' to 'sycl-web' (129 commits)
CONFLICT (content): Merge conflict in clang/include/clang/Serialization/ASTBitCodes.h CONFLICT (content): Merge conflict in clang/test/Modules/no-external-type-id.cppm
2 parents f7e72fc + 6dad29a commit d59fffd

File tree

541 files changed

+23827
-13372
lines changed

Some content is hidden

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

541 files changed

+23827
-13372
lines changed

bolt/lib/Core/DIEBuilder.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -281,8 +281,7 @@ void DIEBuilder::buildTypeUnits(DebugStrOffsetsWriter *StrOffsetWriter,
281281
for (auto &Row : TUIndex.getRows()) {
282282
uint64_t Signature = Row.getSignature();
283283
// manually populate TypeUnit to UnitVector
284-
DwarfContext->getTypeUnitForHash(DwarfContext->getMaxVersion(), Signature,
285-
true);
284+
DwarfContext->getTypeUnitForHash(Signature, true);
286285
}
287286
}
288287
const unsigned int CUNum = getCUNum(DwarfContext, isDWO());

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

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,11 @@ void ProTypeUnionAccessCheck::registerMatchers(MatchFinder *Finder) {
2323

2424
void ProTypeUnionAccessCheck::check(const MatchFinder::MatchResult &Result) {
2525
const auto *Matched = Result.Nodes.getNodeAs<MemberExpr>("expr");
26-
diag(Matched->getMemberLoc(),
27-
"do not access members of unions; use (boost::)variant instead");
26+
SourceLocation Loc = Matched->getMemberLoc();
27+
if (Loc.isInvalid())
28+
Loc = Matched->getBeginLoc();
29+
diag(Loc, "do not access members of unions; consider using (boost::)variant "
30+
"instead");
2831
}
2932

3033
} // namespace clang::tidy::cppcoreguidelines

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -172,25 +172,25 @@ void ConstCorrectnessCheck::check(const MatchFinder::MatchResult &Result) {
172172

173173
using namespace utils::fixit;
174174
if (VC == VariableCategory::Value && TransformValues) {
175-
Diag << addQualifierToVarDecl(*Variable, *Result.Context,
176-
DeclSpec::TQ_const, QualifierTarget::Value,
175+
Diag << addQualifierToVarDecl(*Variable, *Result.Context, Qualifiers::Const,
176+
QualifierTarget::Value,
177177
QualifierPolicy::Right);
178178
// FIXME: Add '{}' for default initialization if no user-defined default
179179
// constructor exists and there is no initializer.
180180
return;
181181
}
182182

183183
if (VC == VariableCategory::Reference && TransformReferences) {
184-
Diag << addQualifierToVarDecl(*Variable, *Result.Context,
185-
DeclSpec::TQ_const, QualifierTarget::Value,
184+
Diag << addQualifierToVarDecl(*Variable, *Result.Context, Qualifiers::Const,
185+
QualifierTarget::Value,
186186
QualifierPolicy::Right);
187187
return;
188188
}
189189

190190
if (VC == VariableCategory::Pointer) {
191191
if (WarnPointersAsValues && TransformPointersAsValues) {
192192
Diag << addQualifierToVarDecl(*Variable, *Result.Context,
193-
DeclSpec::TQ_const, QualifierTarget::Value,
193+
Qualifiers::Const, QualifierTarget::Value,
194194
QualifierPolicy::Right);
195195
}
196196
return;

clang-tools-extra/clang-tidy/performance/ForRangeCopyCheck.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ bool ForRangeCopyCheck::handleConstValueCopy(const VarDecl &LoopVar,
9191
<< utils::fixit::changeVarDeclToReference(LoopVar, Context);
9292
if (!LoopVar.getType().isConstQualified()) {
9393
if (std::optional<FixItHint> Fix = utils::fixit::addQualifierToVarDecl(
94-
LoopVar, Context, DeclSpec::TQ::TQ_const))
94+
LoopVar, Context, Qualifiers::Const))
9595
Diagnostic << *Fix;
9696
}
9797
return true;
@@ -129,7 +129,7 @@ bool ForRangeCopyCheck::handleCopyIsOnlyConstReferenced(
129129
"making it a const reference");
130130

131131
if (std::optional<FixItHint> Fix = utils::fixit::addQualifierToVarDecl(
132-
LoopVar, Context, DeclSpec::TQ::TQ_const))
132+
LoopVar, Context, Qualifiers::Const))
133133
Diag << *Fix << utils::fixit::changeVarDeclToReference(LoopVar, Context);
134134

135135
return true;

clang-tools-extra/clang-tidy/performance/UnnecessaryCopyInitialization.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ void recordFixes(const VarDecl &Var, ASTContext &Context,
3636
Diagnostic << utils::fixit::changeVarDeclToReference(Var, Context);
3737
if (!Var.getType().isLocalConstQualified()) {
3838
if (std::optional<FixItHint> Fix = utils::fixit::addQualifierToVarDecl(
39-
Var, Context, DeclSpec::TQ::TQ_const))
39+
Var, Context, Qualifiers::Const))
4040
Diagnostic << *Fix;
4141
}
4242
}

clang-tools-extra/clang-tidy/performance/UnnecessaryValueParamCheck.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ void UnnecessaryValueParamCheck::handleConstRefFix(const FunctionDecl &Function,
172172
// declaration.
173173
if (!CurrentParam.getType().getCanonicalType().isConstQualified()) {
174174
if (std::optional<FixItHint> Fix = utils::fixit::addQualifierToVarDecl(
175-
CurrentParam, Context, DeclSpec::TQ::TQ_const))
175+
CurrentParam, Context, Qualifiers::Const))
176176
Diag << *Fix;
177177
}
178178
}

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

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
#include "clang/AST/ASTContext.h"
1212
#include "clang/AST/ExprCXX.h"
1313
#include "clang/AST/Type.h"
14+
#include "clang/Sema/DeclSpec.h"
1415
#include "clang/Tooling/FixIt.h"
1516
#include <optional>
1617

@@ -71,15 +72,17 @@ static std::optional<FixItHint> fixIfNotDangerous(SourceLocation Loc,
7172

7273
// Build a string that can be emitted as FixIt with either a space in before
7374
// or after the qualifier, either ' const' or 'const '.
74-
static std::string buildQualifier(DeclSpec::TQ Qualifier,
75+
static std::string buildQualifier(Qualifiers::TQ Qualifier,
7576
bool WhitespaceBefore = false) {
7677
if (WhitespaceBefore)
77-
return (llvm::Twine(' ') + DeclSpec::getSpecifierName(Qualifier)).str();
78-
return (llvm::Twine(DeclSpec::getSpecifierName(Qualifier)) + " ").str();
78+
return (llvm::Twine(' ') + Qualifiers::fromCVRMask(Qualifier).getAsString())
79+
.str();
80+
return (llvm::Twine(Qualifiers::fromCVRMask(Qualifier).getAsString()) + " ")
81+
.str();
7982
}
8083

8184
static std::optional<FixItHint> changeValue(const VarDecl &Var,
82-
DeclSpec::TQ Qualifier,
85+
Qualifiers::TQ Qualifier,
8386
QualifierTarget QualTarget,
8487
QualifierPolicy QualPolicy,
8588
const ASTContext &Context) {
@@ -99,7 +102,7 @@ static std::optional<FixItHint> changeValue(const VarDecl &Var,
99102
}
100103

101104
static std::optional<FixItHint> changePointerItself(const VarDecl &Var,
102-
DeclSpec::TQ Qualifier,
105+
Qualifiers::TQ Qualifier,
103106
const ASTContext &Context) {
104107
if (locDangerous(Var.getLocation()))
105108
return std::nullopt;
@@ -112,7 +115,7 @@ static std::optional<FixItHint> changePointerItself(const VarDecl &Var,
112115
}
113116

114117
static std::optional<FixItHint>
115-
changePointer(const VarDecl &Var, DeclSpec::TQ Qualifier, const Type *Pointee,
118+
changePointer(const VarDecl &Var, Qualifiers::TQ Qualifier, const Type *Pointee,
116119
QualifierTarget QualTarget, QualifierPolicy QualPolicy,
117120
const ASTContext &Context) {
118121
// The pointer itself shall be marked as `const`. This is always to the right
@@ -163,7 +166,7 @@ changePointer(const VarDecl &Var, DeclSpec::TQ Qualifier, const Type *Pointee,
163166
}
164167

165168
static std::optional<FixItHint>
166-
changeReferencee(const VarDecl &Var, DeclSpec::TQ Qualifier, QualType Pointee,
169+
changeReferencee(const VarDecl &Var, Qualifiers::TQ Qualifier, QualType Pointee,
167170
QualifierTarget QualTarget, QualifierPolicy QualPolicy,
168171
const ASTContext &Context) {
169172
if (QualPolicy == QualifierPolicy::Left && isValueType(Pointee))
@@ -183,7 +186,7 @@ changeReferencee(const VarDecl &Var, DeclSpec::TQ Qualifier, QualType Pointee,
183186

184187
std::optional<FixItHint> addQualifierToVarDecl(const VarDecl &Var,
185188
const ASTContext &Context,
186-
DeclSpec::TQ Qualifier,
189+
Qualifiers::TQ Qualifier,
187190
QualifierTarget QualTarget,
188191
QualifierPolicy QualPolicy) {
189192
assert((QualPolicy == QualifierPolicy::Left ||

clang-tools-extra/clang-tidy/utils/FixItHintUtils.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
#include "clang/AST/ASTContext.h"
1313
#include "clang/AST/Decl.h"
14-
#include "clang/Sema/DeclSpec.h"
14+
#include "clang/AST/Type.h"
1515
#include <optional>
1616

1717
namespace clang::tidy::utils::fixit {
@@ -41,7 +41,7 @@ enum class QualifierTarget {
4141
/// Requires that `Var` is isolated in written code like in `int foo = 42;`.
4242
std::optional<FixItHint>
4343
addQualifierToVarDecl(const VarDecl &Var, const ASTContext &Context,
44-
DeclSpec::TQ Qualifier,
44+
Qualifiers::TQ Qualifier,
4545
QualifierTarget QualTarget = QualifierTarget::Pointee,
4646
QualifierPolicy QualPolicy = QualifierPolicy::Left);
4747

clang-tools-extra/docs/ReleaseNotes.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,10 @@ Changes in existing checks
180180
avoid false positive when member initialization depends on a structured
181181
binding variable.
182182

183+
- Fixed :doc:`cppcoreguidelines-pro-type-union-access
184+
<clang-tidy/checks/cppcoreguidelines/pro-type-union-access>` check to
185+
report a location even when the member location is not valid.
186+
183187
- Improved :doc:`misc-definitions-in-headers
184188
<clang-tidy/checks/misc/definitions-in-headers>` check by rewording the
185189
diagnostic note that suggests adding ``inline``.

clang-tools-extra/docs/clang-tidy/checks/bugprone/unchecked-optional-access.rst

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,16 @@ For example:
7676
}
7777
}
7878
79+
Exception: accessor methods
80+
```````````````````````````
81+
82+
The check assumes *accessor* methods of a class are stable, with a heuristic to
83+
determine which methods are accessors. Specifically, parameter-free ``const``
84+
methods are treated as accessors. Note that this is not guaranteed to be safe
85+
-- but, it is widely used (safely) in practice, and so we have chosen to treat
86+
it as generally safe. Calls to non ``const`` methods are assumed to modify
87+
the state of the object and affect the stability of earlier accessor calls.
88+
7989
Rely on invariants of uncommon APIs
8090
-----------------------------------
8191

0 commit comments

Comments
 (0)