Skip to content

Commit 17e31ab

Browse files
author
Jenkins
committed
merge main into amd-staging
Change-Id: I68ac042a56b35b443d8e6fe982dc21ba3a88b27f
2 parents 1b939f5 + bd4e0df commit 17e31ab

File tree

403 files changed

+24010
-11038
lines changed

Some content is hidden

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

403 files changed

+24010
-11038
lines changed

clang-tools-extra/docs/clang-tidy/Contributing.rst

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -344,18 +344,20 @@ matching expressions to simplify your matcher.
344344
clang-query> let c1 cxxRecordDecl()
345345
clang-query> match c1
346346
347-
Alternatively, pressing the tab key after a previous matcher's open parentheses would also
348-
show which matchers can be chained with the previous matcher, though some matchers that work
349-
may not be listed.
350-
351-
Just like breaking up a huge function into smaller chunks with intention-revealing names
352-
can help you understand a complex algorithm, breaking up a matcher into smaller matchers
353-
with intention-revealing names can help you understand a complicated matcher.
354-
355-
Once you have a working clang-query matcher, the C++ API matchers will be the same or similar
356-
to your interactively constructed matcher (there can be cases where they differ slightly).
357-
You can use local variables to preserve your intention-revealing names that you applied
358-
to nested matchers.
347+
Alternatively, pressing the tab key after a previous matcher's open parentheses
348+
would also show which matchers can be chained with the previous matcher,
349+
though some matchers that work may not be listed. Note that tab completion
350+
does not currently work on Windows.
351+
352+
Just like breaking up a huge function into smaller chunks with
353+
intention-revealing names can help you understand a complex algorithm, breaking
354+
up a matcher into smaller matchers with intention-revealing names can help
355+
you understand a complicated matcher.
356+
357+
Once you have a working :program:`clang-query` matcher, the C++ API matchers
358+
will be the same or similar to your interactively constructed matcher (there
359+
can be cases where they differ slightly). You can use local variables to preserve
360+
your intention-revealing names that you applied to nested matchers.
359361

360362
Creating private matchers
361363
^^^^^^^^^^^^^^^^^^^^^^^^^

clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/missing-std-forward.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -187,14 +187,14 @@ void lambda_value_reference_auxiliary_var(T&& t) {
187187
namespace deleted_functions {
188188

189189
template <typename T>
190-
void f(T &&) = delete;
190+
void f(T &&t) = delete;
191191

192192
struct S {
193193
template <typename T>
194-
S(T &&) = delete;
194+
S(T &&t) = delete;
195195

196196
template <typename T>
197-
void operator&(T &&) = delete;
197+
void operator&(T &&t) = delete;
198198
};
199199

200200
} // namespace deleted_functions

clang/docs/ReleaseNotes.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -323,6 +323,8 @@ Improvements to Clang's diagnostics
323323

324324
- Clang now warns for u8 character literals used in C23 with ``-Wpre-c23-compat`` instead of ``-Wpre-c++17-compat``.
325325

326+
- Clang now diagnoses cases where a dangling ``GSLOwner<GSLPointer>`` object is constructed, e.g. ``std::vector<string_view> v = {std::string()};`` (#GH100526).
327+
326328
Improvements to Clang's time-trace
327329
----------------------------------
328330

clang/include/clang/Basic/AArch64SVEACLETypes.def

Lines changed: 115 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -8,28 +8,48 @@
88
//
99
// This file defines various SVE builtin types. The macros are:
1010
//
11-
// SVE_TYPE(Name, Id, SingletonId) - A builtin type that has not been
12-
// covered by any other #define. Defining this macro covers all
13-
// the builtins.
11+
// SVE_TYPE:
12+
// - (Name, MangledName, Id, SingletonId)
13+
// A builtin type that has not been covered by any other #define. Defining
14+
// this macro covers all the builtin types.
1415
//
15-
// SVE_VECTOR_TYPE(Name, Id, SingletonId, ElKind, ElBits, IsSigned, IsFP) -
16-
// An SVE scalable vector.
16+
// SVE_VECTOR_TYPE, SVE_PREDICATE_TYPE, SVE_OPAQUE_TYPE:
17+
// - (Name, MangledName, Id, SingletonId)
18+
// A builtin type that has not been covered by any other #define. Defining
19+
// this macro covers the named subset of builtin types.
1720
//
18-
// SVE_PREDICATE_TYPE(Name, Id, SingletonId, ElKind) - An SVE scalable
19-
// predicate.
21+
// SVE_VECTOR_TYPE_INT
22+
// - (Name, MangledName, Id, SingletonId, NumEls, ElBits, NF, IsSigned)
23+
// Defining the macro covers the integer vector types.
24+
//
25+
// SVE_VECTOR_TYPE_FLOAT, SVE_VECTOR_TYPE_BFLOAT:
26+
// - (Name, MangledName, Id, SingletonId, NumEls, ElBits, NF)
27+
// Defining the macro covers the floating point vector types.
28+
//
29+
// SVE_PREDICATE_TYPE_ALL:
30+
// - (Name, MangledName, Id, SingletonId, NumEls, NF)
31+
// Defining the macro covers the boolean vector types.
2032
//
2133
// where:
2234
//
2335
// - Name is the name of the builtin type.
2436
//
37+
// - MangledName is the mangled name of the builtin type.
38+
//
2539
// - BuiltinType::Id is the enumerator defining the type.
2640
//
2741
// - Context.SingletonId is the global singleton of this type.
2842
//
2943
// - ElKind enumerates the type of the elements.
3044
//
45+
// - NumEls enumerates the number of the elements.
46+
//
3147
// - ElBits is the size of one element in bits.
3248
//
49+
// - NF enumerates the number of sub-vectors.
50+
// TODO: Tuple types are represented as a concatination of "NumEls x ElBits"
51+
// vectors. This will be changed to become a struct containing NF vectors.
52+
//
3353
// - IsSigned is true for vectors of signed integer elements and
3454
// for vectors of floating-point elements.
3555
//
@@ -39,102 +59,134 @@
3959
//===----------------------------------------------------------------------===//
4060

4161
#ifndef SVE_VECTOR_TYPE
42-
#define SVE_VECTOR_TYPE(Name, MangledName, Id, SingletonId, NumEls, ElBits, \
43-
IsSigned, IsFP, IsBF) \
62+
#define SVE_VECTOR_TYPE(Name, MangledName, Id, SingletonId) \
4463
SVE_TYPE(Name, Id, SingletonId)
4564
#endif
4665

66+
#ifndef SVE_VECTOR_TYPE_DETAILS
67+
#define SVE_VECTOR_TYPE_DETAILS(Name, MangledName, Id, SingletonId, NumEls, ElBits, NF, IsSigned, IsFP, IsBF) \
68+
SVE_VECTOR_TYPE(Name, MangledName, Id, SingletonId)
69+
#endif
70+
71+
#ifndef SVE_VECTOR_TYPE_BFLOAT
72+
#define SVE_VECTOR_TYPE_BFLOAT(Name, MangledName, Id, SingletonId, NumEls, ElBits, NF) \
73+
SVE_VECTOR_TYPE_DETAILS(Name, MangledName, Id, SingletonId, NumEls, ElBits, NF, false, false, true)
74+
#endif
75+
76+
#ifndef SVE_VECTOR_TYPE_FLOAT
77+
#define SVE_VECTOR_TYPE_FLOAT(Name, MangledName, Id, SingletonId, NumEls, ElBits, NF) \
78+
SVE_VECTOR_TYPE_DETAILS(Name, MangledName, Id, SingletonId, NumEls, ElBits, NF, false, true, false)
79+
#endif
80+
81+
#ifndef SVE_VECTOR_TYPE_INT
82+
#define SVE_VECTOR_TYPE_INT(Name, MangledName, Id, SingletonId, NumEls, ElBits, NF, IsSigned) \
83+
SVE_VECTOR_TYPE_DETAILS(Name, MangledName, Id, SingletonId, NumEls, ElBits, NF, IsSigned, false, false)
84+
#endif
85+
4786
#ifndef SVE_PREDICATE_TYPE
48-
#define SVE_PREDICATE_TYPE(Name, MangledName, Id, SingletonId, NumEls) \
87+
#define SVE_PREDICATE_TYPE(Name, MangledName, Id, SingletonId) \
4988
SVE_TYPE(Name, Id, SingletonId)
5089
#endif
5190

91+
#ifndef SVE_PREDICATE_TYPE_ALL
92+
#define SVE_PREDICATE_TYPE_ALL(Name, MangledName, Id, SingletonId, NumEls, NF) \
93+
SVE_PREDICATE_TYPE(Name, MangledName, Id, SingletonId)
94+
#endif
95+
5296
#ifndef SVE_OPAQUE_TYPE
53-
#define SVE_OPAQUE_TYPE(Name, MangledName, Id, SingletonId) \
97+
#define SVE_OPAQUE_TYPE(Name, MangledName, Id, SingletonId) \
5498
SVE_TYPE(Name, Id, SingletonId)
5599
#endif
56100

57101
//===- Vector point types -----------------------------------------------===//
58102

103+
SVE_VECTOR_TYPE_INT("__SVInt8_t", "__SVInt8_t", SveInt8, SveInt8Ty, 16, 8, 1, true)
104+
SVE_VECTOR_TYPE_INT("__SVInt16_t", "__SVInt16_t", SveInt16, SveInt16Ty, 8, 16, 1, true)
105+
SVE_VECTOR_TYPE_INT("__SVInt32_t", "__SVInt32_t", SveInt32, SveInt32Ty, 4, 32, 1, true)
106+
SVE_VECTOR_TYPE_INT("__SVInt64_t", "__SVInt64_t", SveInt64, SveInt64Ty, 2, 64, 1, true)
59107

60-
SVE_VECTOR_TYPE("__SVInt8_t", "__SVInt8_t", SveInt8, SveInt8Ty, 16, 8, true, false, false)
61-
SVE_VECTOR_TYPE("__SVInt16_t", "__SVInt16_t", SveInt16, SveInt16Ty, 8, 16, true, false, false)
62-
SVE_VECTOR_TYPE("__SVInt32_t", "__SVInt32_t", SveInt32, SveInt32Ty, 4, 32, true, false, false)
63-
SVE_VECTOR_TYPE("__SVInt64_t", "__SVInt64_t", SveInt64, SveInt64Ty, 2, 64, true, false, false)
64-
65-
SVE_VECTOR_TYPE("__SVUint8_t", "__SVUint8_t", SveUint8, SveUint8Ty, 16, 8, false, false, false)
66-
SVE_VECTOR_TYPE("__SVUint16_t", "__SVUint16_t", SveUint16, SveUint16Ty, 8, 16, false, false, false)
67-
SVE_VECTOR_TYPE("__SVUint32_t", "__SVUint32_t", SveUint32, SveUint32Ty, 4, 32, false, false, false)
68-
SVE_VECTOR_TYPE("__SVUint64_t", "__SVUint64_t", SveUint64, SveUint64Ty, 2, 64, false, false, false)
108+
SVE_VECTOR_TYPE_INT("__SVUint8_t", "__SVUint8_t", SveUint8, SveUint8Ty, 16, 8, 1, false)
109+
SVE_VECTOR_TYPE_INT("__SVUint16_t", "__SVUint16_t", SveUint16, SveUint16Ty, 8, 16, 1, false)
110+
SVE_VECTOR_TYPE_INT("__SVUint32_t", "__SVUint32_t", SveUint32, SveUint32Ty, 4, 32, 1, false)
111+
SVE_VECTOR_TYPE_INT("__SVUint64_t", "__SVUint64_t", SveUint64, SveUint64Ty, 2, 64, 1, false)
69112

70-
SVE_VECTOR_TYPE("__SVFloat16_t", "__SVFloat16_t", SveFloat16, SveFloat16Ty, 8, 16, true, true, false)
71-
SVE_VECTOR_TYPE("__SVFloat32_t", "__SVFloat32_t", SveFloat32, SveFloat32Ty, 4, 32, true, true, false)
72-
SVE_VECTOR_TYPE("__SVFloat64_t", "__SVFloat64_t", SveFloat64, SveFloat64Ty, 2, 64, true, true, false)
113+
SVE_VECTOR_TYPE_FLOAT("__SVFloat16_t", "__SVFloat16_t", SveFloat16, SveFloat16Ty, 8, 16, 1)
114+
SVE_VECTOR_TYPE_FLOAT("__SVFloat32_t", "__SVFloat32_t", SveFloat32, SveFloat32Ty, 4, 32, 1)
115+
SVE_VECTOR_TYPE_FLOAT("__SVFloat64_t", "__SVFloat64_t", SveFloat64, SveFloat64Ty, 2, 64, 1)
73116

74-
SVE_VECTOR_TYPE("__SVBfloat16_t", "__SVBfloat16_t", SveBFloat16, SveBFloat16Ty, 8, 16, true, false, true)
117+
SVE_VECTOR_TYPE_BFLOAT("__SVBfloat16_t", "__SVBfloat16_t", SveBFloat16, SveBFloat16Ty, 8, 16, 1)
75118

76119
//
77120
// x2
78121
//
79-
SVE_VECTOR_TYPE("__clang_svint8x2_t", "svint8x2_t", SveInt8x2, SveInt8x2Ty, 32, 8, true, false, false)
80-
SVE_VECTOR_TYPE("__clang_svint16x2_t", "svint16x2_t", SveInt16x2, SveInt16x2Ty, 16, 16, true, false, false)
81-
SVE_VECTOR_TYPE("__clang_svint32x2_t", "svint32x2_t", SveInt32x2, SveInt32x2Ty, 8, 32, true, false, false)
82-
SVE_VECTOR_TYPE("__clang_svint64x2_t", "svint64x2_t", SveInt64x2, SveInt64x2Ty, 4, 64, true, false, false)
83122

84-
SVE_VECTOR_TYPE("__clang_svuint8x2_t", "svuint8x2_t", SveUint8x2, SveUint8x2Ty, 32, 8, false, false, false)
85-
SVE_VECTOR_TYPE("__clang_svuint16x2_t", "svuint16x2_t", SveUint16x2, SveUint16x2Ty, 16, 16, false, false, false)
86-
SVE_VECTOR_TYPE("__clang_svuint32x2_t", "svuint32x2_t", SveUint32x2, SveUint32x2Ty, 8, 32, false, false, false)
87-
SVE_VECTOR_TYPE("__clang_svuint64x2_t", "svuint64x2_t", SveUint64x2, SveUint64x2Ty, 4, 64, false, false, false)
123+
SVE_VECTOR_TYPE_INT("__clang_svint8x2_t", "svint8x2_t", SveInt8x2, SveInt8x2Ty, 16, 8, 2, true)
124+
SVE_VECTOR_TYPE_INT("__clang_svint16x2_t", "svint16x2_t", SveInt16x2, SveInt16x2Ty, 8, 16, 2, true)
125+
SVE_VECTOR_TYPE_INT("__clang_svint32x2_t", "svint32x2_t", SveInt32x2, SveInt32x2Ty, 4, 32, 2, true)
126+
SVE_VECTOR_TYPE_INT("__clang_svint64x2_t", "svint64x2_t", SveInt64x2, SveInt64x2Ty, 2, 64, 2, true)
88127

89-
SVE_VECTOR_TYPE("__clang_svfloat16x2_t", "svfloat16x2_t", SveFloat16x2, SveFloat16x2Ty, 16, 16, true, true, false)
90-
SVE_VECTOR_TYPE("__clang_svfloat32x2_t", "svfloat32x2_t", SveFloat32x2, SveFloat32x2Ty, 8, 32, true, true, false)
91-
SVE_VECTOR_TYPE("__clang_svfloat64x2_t", "svfloat64x2_t", SveFloat64x2, SveFloat64x2Ty, 4, 64, true, true, false)
128+
SVE_VECTOR_TYPE_INT("__clang_svuint8x2_t", "svuint8x2_t", SveUint8x2, SveUint8x2Ty, 16 , 8, 2, false)
129+
SVE_VECTOR_TYPE_INT("__clang_svuint16x2_t", "svuint16x2_t", SveUint16x2, SveUint16x2Ty, 8, 16, 2, false)
130+
SVE_VECTOR_TYPE_INT("__clang_svuint32x2_t", "svuint32x2_t", SveUint32x2, SveUint32x2Ty, 4, 32, 2, false)
131+
SVE_VECTOR_TYPE_INT("__clang_svuint64x2_t", "svuint64x2_t", SveUint64x2, SveUint64x2Ty, 2, 64, 2, false)
132+
133+
SVE_VECTOR_TYPE_FLOAT("__clang_svfloat16x2_t", "svfloat16x2_t", SveFloat16x2, SveFloat16x2Ty, 8, 16, 2)
134+
SVE_VECTOR_TYPE_FLOAT("__clang_svfloat32x2_t", "svfloat32x2_t", SveFloat32x2, SveFloat32x2Ty, 4, 32, 2)
135+
SVE_VECTOR_TYPE_FLOAT("__clang_svfloat64x2_t", "svfloat64x2_t", SveFloat64x2, SveFloat64x2Ty, 2, 64, 2)
136+
137+
SVE_VECTOR_TYPE_BFLOAT("__clang_svbfloat16x2_t", "svbfloat16x2_t", SveBFloat16x2, SveBFloat16x2Ty, 8, 16, 2)
92138

93-
SVE_VECTOR_TYPE("__clang_svbfloat16x2_t", "svbfloat16x2_t", SveBFloat16x2, SveBFloat16x2Ty, 16, 16, true, false, true)
94139
//
95140
// x3
96141
//
97-
SVE_VECTOR_TYPE("__clang_svint8x3_t", "svint8x3_t", SveInt8x3, SveInt8x3Ty, 48, 8, true, false, false)
98-
SVE_VECTOR_TYPE("__clang_svint16x3_t", "svint16x3_t", SveInt16x3, SveInt16x3Ty, 24, 16, true, false, false)
99-
SVE_VECTOR_TYPE("__clang_svint32x3_t", "svint32x3_t", SveInt32x3, SveInt32x3Ty, 12, 32, true, false, false)
100-
SVE_VECTOR_TYPE("__clang_svint64x3_t", "svint64x3_t", SveInt64x3, SveInt64x3Ty, 6, 64, true, false, false)
101142

102-
SVE_VECTOR_TYPE("__clang_svuint8x3_t", "svuint8x3_t", SveUint8x3, SveUint8x3Ty, 48, 8, false, false, false)
103-
SVE_VECTOR_TYPE("__clang_svuint16x3_t", "svuint16x3_t", SveUint16x3, SveUint16x3Ty, 24, 16, false, false, false)
104-
SVE_VECTOR_TYPE("__clang_svuint32x3_t", "svuint32x3_t", SveUint32x3, SveUint32x3Ty, 12, 32, false, false, false)
105-
SVE_VECTOR_TYPE("__clang_svuint64x3_t", "svuint64x3_t", SveUint64x3, SveUint64x3Ty, 6, 64, false, false, false)
143+
SVE_VECTOR_TYPE_INT("__clang_svint8x3_t", "svint8x3_t", SveInt8x3, SveInt8x3Ty, 16, 8, 3, true)
144+
SVE_VECTOR_TYPE_INT("__clang_svint16x3_t", "svint16x3_t", SveInt16x3, SveInt16x3Ty, 8, 16, 3, true)
145+
SVE_VECTOR_TYPE_INT("__clang_svint32x3_t", "svint32x3_t", SveInt32x3, SveInt32x3Ty, 4, 32, 3, true)
146+
SVE_VECTOR_TYPE_INT("__clang_svint64x3_t", "svint64x3_t", SveInt64x3, SveInt64x3Ty, 2, 64, 3, true)
147+
148+
SVE_VECTOR_TYPE_INT("__clang_svuint8x3_t", "svuint8x3_t", SveUint8x3, SveUint8x3Ty, 16, 8, 3, false)
149+
SVE_VECTOR_TYPE_INT("__clang_svuint16x3_t", "svuint16x3_t", SveUint16x3, SveUint16x3Ty, 8, 16, 3, false)
150+
SVE_VECTOR_TYPE_INT("__clang_svuint32x3_t", "svuint32x3_t", SveUint32x3, SveUint32x3Ty, 4, 32, 3, false)
151+
SVE_VECTOR_TYPE_INT("__clang_svuint64x3_t", "svuint64x3_t", SveUint64x3, SveUint64x3Ty, 2, 64, 3, false)
106152

107-
SVE_VECTOR_TYPE("__clang_svfloat16x3_t", "svfloat16x3_t", SveFloat16x3, SveFloat16x3Ty, 24, 16, true, true, false)
108-
SVE_VECTOR_TYPE("__clang_svfloat32x3_t", "svfloat32x3_t", SveFloat32x3, SveFloat32x3Ty, 12, 32, true, true, false)
109-
SVE_VECTOR_TYPE("__clang_svfloat64x3_t", "svfloat64x3_t", SveFloat64x3, SveFloat64x3Ty, 6, 64, true, true, false)
153+
SVE_VECTOR_TYPE_FLOAT("__clang_svfloat16x3_t", "svfloat16x3_t", SveFloat16x3, SveFloat16x3Ty, 8, 16, 3)
154+
SVE_VECTOR_TYPE_FLOAT("__clang_svfloat32x3_t", "svfloat32x3_t", SveFloat32x3, SveFloat32x3Ty, 4, 32, 3)
155+
SVE_VECTOR_TYPE_FLOAT("__clang_svfloat64x3_t", "svfloat64x3_t", SveFloat64x3, SveFloat64x3Ty, 2, 64, 3)
156+
157+
SVE_VECTOR_TYPE_BFLOAT("__clang_svbfloat16x3_t", "svbfloat16x3_t", SveBFloat16x3, SveBFloat16x3Ty, 8, 16, 3)
110158

111-
SVE_VECTOR_TYPE("__clang_svbfloat16x3_t", "svbfloat16x3_t", SveBFloat16x3, SveBFloat16x3Ty, 24, 16, true, false, true)
112159
//
113160
// x4
114161
//
115-
SVE_VECTOR_TYPE("__clang_svint8x4_t", "svint8x4_t", SveInt8x4, SveInt8x4Ty, 64, 8, true, false, false)
116-
SVE_VECTOR_TYPE("__clang_svint16x4_t", "svint16x4_t", SveInt16x4, SveInt16x4Ty, 32, 16, true, false, false)
117-
SVE_VECTOR_TYPE("__clang_svint32x4_t", "svint32x4_t", SveInt32x4, SveInt32x4Ty, 16, 32, true, false, false)
118-
SVE_VECTOR_TYPE("__clang_svint64x4_t", "svint64x4_t", SveInt64x4, SveInt64x4Ty, 8, 64, true, false, false)
119162

120-
SVE_VECTOR_TYPE("__clang_svuint8x4_t", "svuint8x4_t", SveUint8x4, SveUint8x4Ty, 64, 8, false, false, false)
121-
SVE_VECTOR_TYPE("__clang_svuint16x4_t", "svuint16x4_t", SveUint16x4, SveUint16x4Ty, 32, 16, false, false, false)
122-
SVE_VECTOR_TYPE("__clang_svuint32x4_t", "svuint32x4_t", SveUint32x4, SveUint32x4Ty, 16, 32, false, false, false)
123-
SVE_VECTOR_TYPE("__clang_svuint64x4_t", "svuint64x4_t", SveUint64x4, SveUint64x4Ty, 8, 64, false, false, false)
163+
SVE_VECTOR_TYPE_INT("__clang_svint8x4_t", "svint8x4_t", SveInt8x4, SveInt8x4Ty, 16, 8, 4, true)
164+
SVE_VECTOR_TYPE_INT("__clang_svint16x4_t", "svint16x4_t", SveInt16x4, SveInt16x4Ty, 8, 16, 4, true)
165+
SVE_VECTOR_TYPE_INT("__clang_svint32x4_t", "svint32x4_t", SveInt32x4, SveInt32x4Ty, 4, 32, 4, true)
166+
SVE_VECTOR_TYPE_INT("__clang_svint64x4_t", "svint64x4_t", SveInt64x4, SveInt64x4Ty, 2, 64, 4, true)
167+
168+
SVE_VECTOR_TYPE_INT("__clang_svuint8x4_t", "svuint8x4_t", SveUint8x4, SveUint8x4Ty, 16, 8, 4, false)
169+
SVE_VECTOR_TYPE_INT("__clang_svuint16x4_t", "svuint16x4_t", SveUint16x4, SveUint16x4Ty, 8, 16, 4, false)
170+
SVE_VECTOR_TYPE_INT("__clang_svuint32x4_t", "svuint32x4_t", SveUint32x4, SveUint32x4Ty, 4, 32, 4, false)
171+
SVE_VECTOR_TYPE_INT("__clang_svuint64x4_t", "svuint64x4_t", SveUint64x4, SveUint64x4Ty, 2, 64, 4, false)
124172

125-
SVE_VECTOR_TYPE("__clang_svfloat16x4_t", "svfloat16x4_t", SveFloat16x4, SveFloat16x4Ty, 32, 16, true, true, false)
126-
SVE_VECTOR_TYPE("__clang_svfloat32x4_t", "svfloat32x4_t", SveFloat32x4, SveFloat32x4Ty, 16, 32, true, true, false)
127-
SVE_VECTOR_TYPE("__clang_svfloat64x4_t", "svfloat64x4_t", SveFloat64x4, SveFloat64x4Ty, 8, 64, true, true, false)
173+
SVE_VECTOR_TYPE_FLOAT("__clang_svfloat16x4_t", "svfloat16x4_t", SveFloat16x4, SveFloat16x4Ty, 8, 16, 4)
174+
SVE_VECTOR_TYPE_FLOAT("__clang_svfloat32x4_t", "svfloat32x4_t", SveFloat32x4, SveFloat32x4Ty, 4, 32, 4)
175+
SVE_VECTOR_TYPE_FLOAT("__clang_svfloat64x4_t", "svfloat64x4_t", SveFloat64x4, SveFloat64x4Ty, 2, 64, 4)
128176

129-
SVE_VECTOR_TYPE("__clang_svbfloat16x4_t", "svbfloat16x4_t", SveBFloat16x4, SveBFloat16x4Ty, 32, 16, true, false, true)
177+
SVE_VECTOR_TYPE_BFLOAT("__clang_svbfloat16x4_t", "svbfloat16x4_t", SveBFloat16x4, SveBFloat16x4Ty, 8, 16, 4)
130178

131-
SVE_PREDICATE_TYPE("__SVBool_t", "__SVBool_t", SveBool, SveBoolTy, 16)
132-
SVE_PREDICATE_TYPE("__clang_svboolx2_t", "svboolx2_t", SveBoolx2, SveBoolx2Ty, 32)
133-
SVE_PREDICATE_TYPE("__clang_svboolx4_t", "svboolx4_t", SveBoolx4, SveBoolx4Ty, 64)
179+
SVE_PREDICATE_TYPE_ALL("__SVBool_t", "__SVBool_t", SveBool, SveBoolTy, 16, 1)
180+
SVE_PREDICATE_TYPE_ALL("__clang_svboolx2_t", "svboolx2_t", SveBoolx2, SveBoolx2Ty, 16, 2)
181+
SVE_PREDICATE_TYPE_ALL("__clang_svboolx4_t", "svboolx4_t", SveBoolx4, SveBoolx4Ty, 16, 4)
134182

135183
SVE_OPAQUE_TYPE("__SVCount_t", "__SVCount_t", SveCount, SveCountTy)
136184

137185
#undef SVE_VECTOR_TYPE
186+
#undef SVE_VECTOR_TYPE_BFLOAT
187+
#undef SVE_VECTOR_TYPE_FLOAT
188+
#undef SVE_VECTOR_TYPE_INT
138189
#undef SVE_PREDICATE_TYPE
190+
#undef SVE_PREDICATE_TYPE_ALL
139191
#undef SVE_OPAQUE_TYPE
140192
#undef SVE_TYPE

clang/include/clang/Basic/AttrDocs.td

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6690,6 +6690,20 @@ When the Owner's lifetime ends, it will consider the Pointer to be dangling.
66906690
P.getInt(); // P is dangling
66916691
}
66926692

6693+
If a template class is annotated with ``[[gsl::Owner]]``, and the first
6694+
instantiated template argument is a pointer type (raw pointer, or ``[[gsl::Pointer]]``),
6695+
the analysis will consider the instantiated class as a container of the pointer.
6696+
When constructing such an object from a GSL owner object, the analysis will
6697+
assume that the container holds a pointer to the owner object. Consequently,
6698+
when the owner object is destroyed, the pointer will be considered dangling.
6699+
6700+
.. code-block:: c++
6701+
6702+
int f() {
6703+
std::vector<std::string_view> v = {std::string()}; // v holds a dangling pointer.
6704+
std::optional<std::string_view> o = std::string(); // o holds a dangling pointer.
6705+
}
6706+
66936707
}];
66946708
}
66956709

0 commit comments

Comments
 (0)