Skip to content

Commit b330a0b

Browse files
Merge branch 'main' into patch-1
2 parents 3b893d1 + 81eb7de commit b330a0b

File tree

415 files changed

+53525
-4187
lines changed

Some content is hidden

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

415 files changed

+53525
-4187
lines changed

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

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ static auto SerializeReferenceLambda = [](const auto &Ref, Object &Object) {
4545

4646
static json::Object
4747
serializeLocation(const Location &Loc,
48-
const std::optional<StringRef> &RepositoryUrl) {
48+
const std::optional<StringRef> RepositoryUrl) {
4949
Object LocationObj = Object();
5050
LocationObj["LineNumber"] = Loc.StartLineNumber;
5151
LocationObj["Filename"] = Loc.Filename;
@@ -169,7 +169,7 @@ static json::Value serializeComment(const CommentInfo &I) {
169169

170170
static void
171171
serializeCommonAttributes(const Info &I, json::Object &Obj,
172-
const std::optional<StringRef> &RepositoryUrl) {
172+
const std::optional<StringRef> RepositoryUrl) {
173173
Obj["Name"] = I.Name;
174174
Obj["USR"] = toHex(toStringRef(I.USR));
175175

@@ -211,9 +211,9 @@ static void serializeReference(const Reference &Ref, Object &ReferenceObj) {
211211
// differently. Only enums, records, and typedefs are handled here.
212212
static void
213213
serializeCommonChildren(const ScopeChildren &Children, json::Object &Obj,
214-
const std::optional<StringRef> &RepositoryUrl) {
215-
static auto SerializeInfo = [&RepositoryUrl](const auto &Info,
216-
Object &Object) {
214+
const std::optional<StringRef> RepositoryUrl) {
215+
static auto SerializeInfo = [RepositoryUrl](const auto &Info,
216+
Object &Object) {
217217
serializeInfo(Info, Object, RepositoryUrl);
218218
};
219219

@@ -304,7 +304,7 @@ static void serializeInfo(const FieldTypeInfo &I, Object &Obj) {
304304
}
305305

306306
static void serializeInfo(const FunctionInfo &F, json::Object &Obj,
307-
const std::optional<StringRef> &RepositoryURL) {
307+
const std::optional<StringRef> RepositoryURL) {
308308
serializeCommonAttributes(F, Obj, RepositoryURL);
309309
Obj["IsStatic"] = F.IsStatic;
310310

@@ -459,7 +459,7 @@ static void serializeInfo(const RecordInfo &I, json::Object &Obj,
459459
}
460460

461461
static void serializeInfo(const VarInfo &I, json::Object &Obj,
462-
const std::optional<StringRef> &RepositoryUrl) {
462+
const std::optional<StringRef> RepositoryUrl) {
463463
serializeCommonAttributes(I, Obj, RepositoryUrl);
464464
Obj["IsStatic"] = I.IsStatic;
465465
auto TypeObj = Object();
@@ -468,15 +468,15 @@ static void serializeInfo(const VarInfo &I, json::Object &Obj,
468468
}
469469

470470
static void serializeInfo(const NamespaceInfo &I, json::Object &Obj,
471-
const std::optional<StringRef> &RepositoryUrl) {
471+
const std::optional<StringRef> RepositoryUrl) {
472472
serializeCommonAttributes(I, Obj, RepositoryUrl);
473473

474474
if (!I.Children.Namespaces.empty())
475475
serializeArray(I.Children.Namespaces, Obj, "Namespaces",
476476
SerializeReferenceLambda);
477477

478-
static auto SerializeInfo = [&RepositoryUrl](const auto &Info,
479-
Object &Object) {
478+
static auto SerializeInfo = [RepositoryUrl](const auto &Info,
479+
Object &Object) {
480480
serializeInfo(Info, Object, RepositoryUrl);
481481
};
482482

clang/docs/ReleaseNotes.rst

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -674,7 +674,7 @@ Improvements to Clang's diagnostics
674674
#GH142457, #GH139913, #GH138850, #GH137867, #GH137860, #GH107840, #GH93308,
675675
#GH69470, #GH59391, #GH58172, #GH46215, #GH45915, #GH45891, #GH44490,
676676
#GH36703, #GH32903, #GH23312, #GH69874.
677-
677+
678678
- Clang no longer emits a spurious -Wdangling-gsl warning in C++23 when
679679
iterating over an element of a temporary container in a range-based
680680
for loop.(#GH109793, #GH145164)
@@ -710,6 +710,12 @@ Improvements to Clang's diagnostics
710710
pointer, provided it can be proven that the pointer only points to
711711
``[[noreturn]]`` functions.
712712

713+
- Added a separate diagnostic group ``-Wfunction-effect-redeclarations``, for the more pedantic
714+
diagnostics for function effects (``[[clang::nonblocking]]`` and ``[[clang::nonallocating]]``).
715+
Moved the warning for a missing (though implied) attribute on a redeclaration into this group.
716+
Added a new warning in this group for the case where the attribute is missing/implicit on
717+
an override of a virtual method.
718+
713719
Improvements to Clang's time-trace
714720
----------------------------------
715721

@@ -970,6 +976,7 @@ Bug Fixes to C++ Support
970976
- Fixed a crash involving list-initialization of an empty class with a
971977
non-empty initializer list. (#GH147949)
972978
- Fixed constant evaluation of equality comparisons of constexpr-unknown references. (#GH147663)
979+
- Diagnose binding a reference to ``*nullptr`` during constant evaluation. (#GH48665)
973980

974981
Bug Fixes to AST Handling
975982
^^^^^^^^^^^^^^^^^^^^^^^^^

clang/include/clang-c/Index.h

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6953,6 +6953,21 @@ clang_getCursorUnaryOperatorKind(CXCursor cursor);
69536953
* @}
69546954
*/
69556955

6956+
CINDEX_DEPRECATED
6957+
typedef void *CXRemapping;
6958+
6959+
CINDEX_DEPRECATED CINDEX_LINKAGE CXRemapping clang_getRemappings(const char *);
6960+
6961+
CINDEX_DEPRECATED CINDEX_LINKAGE CXRemapping
6962+
clang_getRemappingsFromFileList(const char **, unsigned);
6963+
6964+
CINDEX_DEPRECATED CINDEX_LINKAGE unsigned clang_remap_getNumFiles(CXRemapping);
6965+
6966+
CINDEX_DEPRECATED CINDEX_LINKAGE void
6967+
clang_remap_getFilenames(CXRemapping, unsigned, CXString *, CXString *);
6968+
6969+
CINDEX_DEPRECATED CINDEX_LINKAGE void clang_remap_dispose(CXRemapping);
6970+
69566971
LLVM_CLANG_C_EXTERN_C_END
69576972

69586973
#endif

clang/include/clang/Basic/BuiltinsAMDGPU.def

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,7 @@ BUILTIN(__builtin_amdgcn_raw_buffer_load_b96, "V3UiQbiiIi", "n")
164164
BUILTIN(__builtin_amdgcn_raw_buffer_load_b128, "V4UiQbiiIi", "n")
165165

166166
TARGET_BUILTIN(__builtin_amdgcn_raw_ptr_buffer_load_lds, "vQbv*3IUiiiIiIi", "t", "vmem-to-lds-load-insts")
167+
TARGET_BUILTIN(__builtin_amdgcn_struct_ptr_buffer_load_lds, "vQbv*3IUiiiiIiIi", "t", "vmem-to-lds-load-insts")
167168

168169
//===----------------------------------------------------------------------===//
169170
// Ballot builtins.
@@ -670,6 +671,8 @@ TARGET_BUILTIN(__builtin_amdgcn_s_wait_tensorcnt, "vIUs", "n", "gfx1250-insts")
670671

671672
TARGET_BUILTIN(__builtin_amdgcn_tanh_bf16, "yy", "nc", "bf16-trans-insts")
672673
TARGET_BUILTIN(__builtin_amdgcn_rcp_bf16, "yy", "nc", "bf16-trans-insts")
674+
TARGET_BUILTIN(__builtin_amdgcn_rsq_bf16, "yy", "nc", "bf16-trans-insts")
675+
TARGET_BUILTIN(__builtin_amdgcn_log_bf16, "yy", "nc", "bf16-trans-insts")
673676

674677
TARGET_BUILTIN(__builtin_amdgcn_cvt_f16_fp8, "hiIi", "nc", "gfx1250-insts")
675678
TARGET_BUILTIN(__builtin_amdgcn_cvt_f16_bf8, "hiIi", "nc", "gfx1250-insts")

clang/include/clang/Basic/BuiltinsSPIRVVK.td

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,4 @@ include "clang/Basic/BuiltinsSPIRVBase.td"
1111

1212
def reflect : SPIRVBuiltin<"void(...)", [NoThrow, Const]>;
1313
def faceforward : SPIRVBuiltin<"void(...)", [NoThrow, Const, CustomTypeChecking]>;
14+
def refract : SPIRVBuiltin<"void(...)", [NoThrow, Const, CustomTypeChecking]>;

clang/include/clang/Basic/CodeGenOptions.def

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@ CODEGENOPT(XCOFFReadOnlyPointers, 1, 0, Benign) ///< Set for -mxcoff-roptr.
5656
CODEGENOPT(AllTocData, 1, 0, Benign) ///< AIX -mtocdata
5757
ENUM_CODEGENOPT(FramePointer, FramePointerKind, 2, FramePointerKind::None, Benign) /// frame-pointer: all,non-leaf,reserved,none
5858

59+
ENUM_CODEGENOPT(ExceptionHandling, ExceptionHandlingKind, 3, ExceptionHandlingKind::None, NotCompatible)
60+
5961
CODEGENOPT(ClearASTBeforeBackend , 1, 0, Benign) ///< Free the AST before running backend code generation. Only works with -disable-free.
6062
CODEGENOPT(DisableFree , 1, 0, Benign) ///< Don't free memory.
6163
CODEGENOPT(DiscardValueNames , 1, 0, Benign) ///< Discard Value Names from the IR (LLVMContext flag)

clang/include/clang/Basic/CodeGenOptions.h

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,9 @@ class CodeGenOptions : public CodeGenOptionsBase {
176176
llvm_unreachable("invalid FramePointerKind");
177177
}
178178

179+
/// Possible exception handling behavior.
180+
enum class ExceptionHandlingKind { None, SjLj, WinEH, DwarfCFI, Wasm };
181+
179182
enum class SwiftAsyncFramePointerKind {
180183
Auto, // Choose Swift async extended frame info based on deployment target.
181184
Always, // Unconditionally emit Swift async extended frame info.
@@ -552,6 +555,22 @@ class CodeGenOptions : public CodeGenOptionsBase {
552555
return NoBuiltinFuncs;
553556
}
554557

558+
bool hasSjLjExceptions() const {
559+
return getExceptionHandling() == ExceptionHandlingKind::SjLj;
560+
}
561+
562+
bool hasSEHExceptions() const {
563+
return getExceptionHandling() == ExceptionHandlingKind::WinEH;
564+
}
565+
566+
bool hasDWARFExceptions() const {
567+
return getExceptionHandling() == ExceptionHandlingKind::DwarfCFI;
568+
}
569+
570+
bool hasWasmExceptions() const {
571+
return getExceptionHandling() == ExceptionHandlingKind::Wasm;
572+
}
573+
555574
/// Check if Clang profile instrumenation is on.
556575
bool hasProfileClangInstr() const {
557576
return getProfileInstr() ==

clang/include/clang/Basic/DiagnosticASTKinds.td

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -174,10 +174,11 @@ def note_constexpr_heap_alloc_limit_exceeded : Note<
174174
def note_constexpr_this : Note<
175175
"%select{|implicit }0use of 'this' pointer is only allowed within the "
176176
"evaluation of a call to a 'constexpr' member function">;
177-
def access_kind : TextSubstitution<
178-
"%select{read of|read of|assignment to|increment of|decrement of|"
179-
"member call on|dynamic_cast of|typeid applied to|construction of|"
180-
"destruction of|read of}0">;
177+
def access_kind
178+
: TextSubstitution<
179+
"%select{read of|read of|assignment to|increment of|decrement of|"
180+
"member call on|dynamic_cast of|typeid applied to|construction of|"
181+
"destruction of|read of|read of}0">;
181182
def access_kind_subobject : TextSubstitution<
182183
"%select{read of|read of|assignment to|increment of|decrement of|"
183184
"member call on|dynamic_cast of|typeid applied to|"
@@ -222,6 +223,9 @@ def note_constexpr_ltor_incomplete_type : Note<
222223
def note_constexpr_access_null : Note<
223224
"%sub{access_kind}0 "
224225
"dereferenced null pointer is not allowed in a constant expression">;
226+
def note_constexpr_dereferencing_null
227+
: Note<"dereferencing a null pointer is not allowed in a constant "
228+
"expression">;
225229
def note_constexpr_access_past_end : Note<
226230
"%sub{access_kind}0 dereferenced one-past-the-end pointer "
227231
"is not allowed in a constant expression">;

clang/include/clang/Basic/DiagnosticGroups.td

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1293,6 +1293,7 @@ def ThreadSafetyBeta : DiagGroup<"thread-safety-beta">;
12931293
// Warnings and notes related to the function effects system which underlies
12941294
// the nonblocking and nonallocating attributes.
12951295
def FunctionEffects : DiagGroup<"function-effects">;
1296+
def FunctionEffectRedeclarations : DiagGroup<"function-effect-redeclarations">;
12961297
def PerfConstraintImpliesNoexcept : DiagGroup<"perf-constraint-implies-noexcept">;
12971298

12981299
// Uniqueness Analysis warnings

clang/include/clang/Basic/DiagnosticSemaKinds.td

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11530,17 +11530,28 @@ def note_in_evaluating_default_argument : Note<
1153011530
def warn_invalid_add_func_effects : Warning<
1153111531
"attribute '%0' should not be added via type conversion">,
1153211532
InGroup<FunctionEffects>, DefaultIgnore;
11533-
def warn_mismatched_func_effect_override : Warning<
11534-
"attribute '%0' on overriding function does not match base declaration">,
11535-
InGroup<FunctionEffects>, DefaultIgnore;
11536-
def warn_mismatched_func_effect_redeclaration : Warning<
11537-
"attribute '%0' on function does not match previous declaration">,
11538-
InGroup<FunctionEffects>, DefaultIgnore;
11533+
def warn_conflicting_func_effect_override
11534+
: Warning<"attribute '%0' on overriding function conflicts with base "
11535+
"declaration">,
11536+
InGroup<FunctionEffects>,
11537+
DefaultIgnore;
1153911538
def warn_conflicting_func_effects : Warning<
1154011539
"effects conflict when merging declarations; kept '%0', discarded '%1'">,
1154111540
InGroup<FunctionEffects>, DefaultIgnore;
1154211541
def err_func_with_effects_no_prototype : Error<
1154311542
"'%0' function must have a prototype">;
11543+
// These are more pedantic: in redeclarations and virtual method overrides,
11544+
// the effect attribute(s) should be restated.
11545+
def warn_mismatched_func_effect_override
11546+
: Warning<"overriding function is missing '%0' attribute from base "
11547+
"declaration">,
11548+
InGroup<FunctionEffectRedeclarations>,
11549+
DefaultIgnore;
11550+
def warn_mismatched_func_effect_redeclaration
11551+
: Warning<
11552+
"redeclaration is missing '%0' attribute from previous declaration">,
11553+
InGroup<FunctionEffectRedeclarations>,
11554+
DefaultIgnore;
1154411555

1154511556
} // end of sema category
1154611557

@@ -12357,7 +12368,7 @@ def err_export_using_internal : Error<
1235712368
"using declaration referring to %1 with %select{internal|module|unknown}0 "
1235812369
"linkage cannot be exported">;
1235912370
def err_export_not_in_module_interface : Error<
12360-
"export declaration can only be used within a module purview">;
12371+
"export declaration can only be used within a module interface">;
1236112372
def err_export_inline_not_defined : Error<
1236212373
"inline function not defined%select{| before the private module fragment}0">;
1236312374
def err_export_partition_impl : Error<
@@ -13478,6 +13489,12 @@ def err_acc_invalid_default_type
1347813489
def err_acc_device_type_multiple_archs
1347913490
: Error<"OpenACC 'device_type' clause on a 'set' construct only permits "
1348013491
"one architecture">;
13492+
def warn_acc_var_referenced_lacks_op
13493+
: Warning<"variable of type %0 referenced in OpenACC '%1' clause does not "
13494+
"have a %enum_select<AccVarReferencedReason>{%DefCtor{default "
13495+
"constructor}|%Dtor{destructor}}2; reference has no effect">,
13496+
InGroup<DiagGroup<"openacc-var-lacks-operation">>,
13497+
DefaultError;
1348113498

1348213499
// AMDGCN builtins diagnostics
1348313500
def err_amdgcn_load_lds_size_invalid_value : Error<"invalid size value">;

0 commit comments

Comments
 (0)