Skip to content

Commit ca0a22f

Browse files
Merge branch 'llvm:main' into cfi-show
2 parents e87081e + e8b5fbd commit ca0a22f

File tree

132 files changed

+6725
-2304
lines changed

Some content is hidden

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

132 files changed

+6725
-2304
lines changed

clang-tools-extra/test/clang-tidy/checkers/bugprone/unchecked-optional-access.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,17 @@ void nullable_value_after_swap(BloombergLP::bdlb::NullableValue<int> &opt1, Bloo
141141
}
142142
}
143143

144+
void assertion_handler() __attribute__((analyzer_noreturn));
145+
146+
void function_calling_analyzer_noreturn(const bsl::optional<int>& opt)
147+
{
148+
if (!opt) {
149+
assertion_handler();
150+
}
151+
152+
*opt; // no-warning: The previous condition guards this dereference.
153+
}
154+
144155
template <typename T>
145156
void function_template_without_user(const absl::optional<T> &opt) {
146157
opt.value(); // no-warning

clang/docs/LanguageExtensions.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2049,6 +2049,9 @@ The following type trait primitives are supported by Clang. Those traits marked
20492049
Returns true if a reference ``T`` can be copy-initialized from a temporary of type
20502050
a non-cv-qualified ``U``.
20512051
* ``__underlying_type`` (C++, GNU, Microsoft)
2052+
* ``__builtin_lt_synthesises_from_spaceship``, ``__builtin_gt_synthesises_from_spaceship``,
2053+
``__builtin_le_synthesises_from_spaceship``, ``__builtin_ge_synthesises_from_spaceship`` (Clang):
2054+
These builtins can be used to determine whether the corresponding operator is synthesised from a spaceship operator.
20522055

20532056
In addition, the following expression traits are supported:
20542057

clang/docs/ReleaseNotes.rst

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,11 @@ What's New in Clang |release|?
109109
C++ Language Changes
110110
--------------------
111111

112+
- A new family of builtins ``__builtin_*_synthesises_from_spaceship`` has been added. These can be queried to know
113+
whether the ``<`` (``lt``), ``>`` (``gt``), ``<=`` (``le``), or ``>=`` (``ge``) operators are synthesised from a
114+
``<=>``. This makes it possible to optimize certain facilities by using the ``<=>`` operation directly instead of
115+
doing multiple comparisons.
116+
112117
C++2c Feature Support
113118
^^^^^^^^^^^^^^^^^^^^^
114119

@@ -241,11 +246,13 @@ Improvements to Clang's diagnostics
241246
"format specifies type 'unsigned int' but the argument has type 'int', which differs in signedness [-Wformat-signedness]"
242247
"signedness of format specifier 'u' is incompatible with 'c' [-Wformat-signedness]"
243248
and the API-visible diagnostic id will be appropriate.
244-
249+
245250
- Fixed false positives in ``-Waddress-of-packed-member`` diagnostics when
246251
potential misaligned members get processed before they can get discarded.
247252
(#GH144729)
248253

254+
- Clang now emits dignostic with correct message in case of assigning to const reference captured in lambda. (#GH105647)
255+
249256
- Fixed false positive in ``-Wmissing-noreturn`` diagnostic when it was requiring the usage of
250257
``[[noreturn]]`` on lambdas before C++23 (#GH154493).
251258

@@ -263,6 +270,10 @@ Improvements to Clang's diagnostics
263270
decorated with the ``alloc_size`` attribute don't allocate enough space for
264271
the target pointer type.
265272

273+
- The :doc:`ThreadSafetyAnalysis` attributes ``ACQUIRED_BEFORE(...)`` and
274+
``ACQUIRED_AFTER(...)`` have been moved to the stable feature set and no
275+
longer require ``-Wthread-safety-beta`` to be used.
276+
266277
Improvements to Clang's time-trace
267278
----------------------------------
268279

@@ -273,7 +284,7 @@ Bug Fixes in This Version
273284
-------------------------
274285
- Fix a crash when marco name is empty in ``#pragma push_macro("")`` or
275286
``#pragma pop_macro("")``. (#GH149762).
276-
- Fix a crash in variable length array (e.g. ``int a[*]``) function parameter type
287+
- Fix a crash in variable length array (e.g. ``int a[*]``) function parameter type
277288
being used in ``_Countof`` expression. (#GH152826).
278289
- ``-Wunreachable-code`` now diagnoses tautological or contradictory
279290
comparisons such as ``x != 0 || x != 1.0`` and ``x == 0 && x == 1.0`` on
@@ -358,7 +369,7 @@ X86 Support
358369
arithmetic can now be used in C++ constant expressions.
359370
- Some SSE, AVX and AVX512 intrinsics have been converted to wrap
360371
generic __builtin intrinsics.
361-
- NOTE: Please avoid use of the __builtin_ia32_* intrinsics - these are not
372+
- NOTE: Please avoid use of the __builtin_ia32_* intrinsics - these are not
362373
guaranteed to exist in future releases, or match behaviour with previous
363374
releases of clang or other compilers.
364375

clang/include/clang/AST/Decl.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2668,6 +2668,10 @@ class FunctionDecl : public DeclaratorDecl,
26682668
/// an attribute on its declaration or its type.
26692669
bool isNoReturn() const;
26702670

2671+
/// Determines whether this function is known to be 'noreturn' for analyzer,
2672+
/// through an `analyzer_noreturn` attribute on its declaration.
2673+
bool isAnalyzerNoReturn() const;
2674+
26712675
/// True if the function was a definition but its body was skipped.
26722676
bool hasSkippedBody() const { return FunctionDeclBits.HasSkippedBody; }
26732677
void setHasSkippedBody(bool Skipped = true) {

clang/include/clang/Basic/TokenKinds.def

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -552,6 +552,10 @@ TYPE_TRAIT_1(__can_pass_in_regs, CanPassInRegs, KEYCXX)
552552
TYPE_TRAIT_2(__reference_binds_to_temporary, ReferenceBindsToTemporary, KEYCXX)
553553
TYPE_TRAIT_2(__reference_constructs_from_temporary, ReferenceConstructsFromTemporary, KEYCXX)
554554
TYPE_TRAIT_2(__reference_converts_from_temporary, ReferenceConvertsFromTemporary, KEYCXX)
555+
TYPE_TRAIT_2(__builtin_lt_synthesises_from_spaceship, LtSynthesisesFromSpaceship, KEYCXX)
556+
TYPE_TRAIT_2(__builtin_le_synthesises_from_spaceship, LeSynthesisesFromSpaceship, KEYCXX)
557+
TYPE_TRAIT_2(__builtin_gt_synthesises_from_spaceship, GtSynthesisesFromSpaceship, KEYCXX)
558+
TYPE_TRAIT_2(__builtin_ge_synthesises_from_spaceship, GeSynthesisesFromSpaceship, KEYCXX)
555559
// IsDeducible is only used internally by clang for CTAD implementation and
556560
// is not exposed to users.
557561
TYPE_TRAIT_2(/*EmptySpellingName*/, IsDeducible, KEYCXX)

clang/lib/AST/Decl.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3600,6 +3600,10 @@ bool FunctionDecl::isNoReturn() const {
36003600
return false;
36013601
}
36023602

3603+
bool FunctionDecl::isAnalyzerNoReturn() const {
3604+
return hasAttr<AnalyzerNoReturnAttr>();
3605+
}
3606+
36033607
bool FunctionDecl::isMemberLikeConstrainedFriend() const {
36043608
// C++20 [temp.friend]p9:
36053609
// A non-template friend declaration with a requires-clause [or]

clang/lib/Analysis/CFG.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2833,7 +2833,8 @@ CFGBlock *CFGBuilder::VisitCallExpr(CallExpr *C, AddStmtChoice asc) {
28332833
if (!FD->isVariadic())
28342834
findConstructionContextsForArguments(C);
28352835

2836-
if (FD->isNoReturn() || C->isBuiltinAssumeFalse(*Context))
2836+
if (FD->isNoReturn() || FD->isAnalyzerNoReturn() ||
2837+
C->isBuiltinAssumeFalse(*Context))
28372838
NoReturn = true;
28382839
if (FD->hasAttr<NoThrowAttr>())
28392840
AddEHEdge = false;

clang/lib/Headers/avx512fintrin.h

Lines changed: 46 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -426,9 +426,8 @@ _mm512_castps512_ps128(__m512 __a)
426426
return __builtin_shufflevector(__a, __a, 0, 1, 2, 3);
427427
}
428428

429-
static __inline __m256 __DEFAULT_FN_ATTRS512
430-
_mm512_castps512_ps256 (__m512 __A)
431-
{
429+
static __inline __m256 __DEFAULT_FN_ATTRS512_CONSTEXPR
430+
_mm512_castps512_ps256(__m512 __A) {
432431
return __builtin_shufflevector(__A, __A, 0, 1, 2, 3, 4, 5, 6, 7);
433432
}
434433

@@ -507,9 +506,8 @@ _mm512_castsi512_si128 (__m512i __A)
507506
return (__m128i)__builtin_shufflevector(__A, __A , 0, 1);
508507
}
509508

510-
static __inline __m256i __DEFAULT_FN_ATTRS512
511-
_mm512_castsi512_si256 (__m512i __A)
512-
{
509+
static __inline __m256i __DEFAULT_FN_ATTRS512_CONSTEXPR
510+
_mm512_castsi512_si256(__m512i __A) {
513511
return (__m256i)__builtin_shufflevector(__A, __A , 0, 1, 2, 3);
514512
}
515513

@@ -3586,115 +3584,99 @@ _mm512_maskz_cvttps_epu32 (__mmask16 __U, __m512 __A)
35863584
(__v16sf)_mm512_setzero_ps(), \
35873585
(__mmask16)(U), (int)(R)))
35883586

3589-
static __inline__ __m512 __DEFAULT_FN_ATTRS512
3590-
_mm512_cvtepu32_ps (__m512i __A)
3591-
{
3587+
static __inline__ __m512
3588+
__DEFAULT_FN_ATTRS512_CONSTEXPR _mm512_cvtepu32_ps(__m512i __A) {
35923589
return (__m512)__builtin_convertvector((__v16su)__A, __v16sf);
35933590
}
35943591

3595-
static __inline__ __m512 __DEFAULT_FN_ATTRS512
3596-
_mm512_mask_cvtepu32_ps (__m512 __W, __mmask16 __U, __m512i __A)
3597-
{
3592+
static __inline__ __m512 __DEFAULT_FN_ATTRS512_CONSTEXPR
3593+
_mm512_mask_cvtepu32_ps(__m512 __W, __mmask16 __U, __m512i __A) {
35983594
return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
35993595
(__v16sf)_mm512_cvtepu32_ps(__A),
36003596
(__v16sf)__W);
36013597
}
36023598

3603-
static __inline__ __m512 __DEFAULT_FN_ATTRS512
3604-
_mm512_maskz_cvtepu32_ps (__mmask16 __U, __m512i __A)
3605-
{
3599+
static __inline__ __m512 __DEFAULT_FN_ATTRS512_CONSTEXPR
3600+
_mm512_maskz_cvtepu32_ps(__mmask16 __U, __m512i __A) {
36063601
return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
36073602
(__v16sf)_mm512_cvtepu32_ps(__A),
36083603
(__v16sf)_mm512_setzero_ps());
36093604
}
36103605

3611-
static __inline __m512d __DEFAULT_FN_ATTRS512
3612-
_mm512_cvtepi32_pd(__m256i __A)
3613-
{
3606+
static __inline __m512d __DEFAULT_FN_ATTRS512_CONSTEXPR
3607+
_mm512_cvtepi32_pd(__m256i __A) {
36143608
return (__m512d)__builtin_convertvector((__v8si)__A, __v8df);
36153609
}
36163610

3617-
static __inline__ __m512d __DEFAULT_FN_ATTRS512
3618-
_mm512_mask_cvtepi32_pd (__m512d __W, __mmask8 __U, __m256i __A)
3619-
{
3611+
static __inline__ __m512d __DEFAULT_FN_ATTRS512_CONSTEXPR
3612+
_mm512_mask_cvtepi32_pd(__m512d __W, __mmask8 __U, __m256i __A) {
36203613
return (__m512d)__builtin_ia32_selectpd_512((__mmask8) __U,
36213614
(__v8df)_mm512_cvtepi32_pd(__A),
36223615
(__v8df)__W);
36233616
}
36243617

3625-
static __inline__ __m512d __DEFAULT_FN_ATTRS512
3626-
_mm512_maskz_cvtepi32_pd (__mmask8 __U, __m256i __A)
3627-
{
3618+
static __inline__ __m512d __DEFAULT_FN_ATTRS512_CONSTEXPR
3619+
_mm512_maskz_cvtepi32_pd(__mmask8 __U, __m256i __A) {
36283620
return (__m512d)__builtin_ia32_selectpd_512((__mmask8) __U,
36293621
(__v8df)_mm512_cvtepi32_pd(__A),
36303622
(__v8df)_mm512_setzero_pd());
36313623
}
36323624

3633-
static __inline__ __m512d __DEFAULT_FN_ATTRS512
3634-
_mm512_cvtepi32lo_pd(__m512i __A)
3635-
{
3625+
static __inline__ __m512d __DEFAULT_FN_ATTRS512_CONSTEXPR
3626+
_mm512_cvtepi32lo_pd(__m512i __A) {
36363627
return (__m512d) _mm512_cvtepi32_pd(_mm512_castsi512_si256(__A));
36373628
}
36383629

3639-
static __inline__ __m512d __DEFAULT_FN_ATTRS512
3640-
_mm512_mask_cvtepi32lo_pd(__m512d __W, __mmask8 __U,__m512i __A)
3641-
{
3630+
static __inline__ __m512d __DEFAULT_FN_ATTRS512_CONSTEXPR
3631+
_mm512_mask_cvtepi32lo_pd(__m512d __W, __mmask8 __U, __m512i __A) {
36423632
return (__m512d) _mm512_mask_cvtepi32_pd(__W, __U, _mm512_castsi512_si256(__A));
36433633
}
36443634

3645-
static __inline__ __m512 __DEFAULT_FN_ATTRS512
3646-
_mm512_cvtepi32_ps (__m512i __A)
3647-
{
3635+
static __inline__ __m512 __DEFAULT_FN_ATTRS512_CONSTEXPR
3636+
_mm512_cvtepi32_ps(__m512i __A) {
36483637
return (__m512)__builtin_convertvector((__v16si)__A, __v16sf);
36493638
}
36503639

3651-
static __inline__ __m512 __DEFAULT_FN_ATTRS512
3652-
_mm512_mask_cvtepi32_ps (__m512 __W, __mmask16 __U, __m512i __A)
3653-
{
3640+
static __inline__ __m512 __DEFAULT_FN_ATTRS512_CONSTEXPR
3641+
_mm512_mask_cvtepi32_ps(__m512 __W, __mmask16 __U, __m512i __A) {
36543642
return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
36553643
(__v16sf)_mm512_cvtepi32_ps(__A),
36563644
(__v16sf)__W);
36573645
}
36583646

3659-
static __inline__ __m512 __DEFAULT_FN_ATTRS512
3660-
_mm512_maskz_cvtepi32_ps (__mmask16 __U, __m512i __A)
3661-
{
3647+
static __inline__ __m512 __DEFAULT_FN_ATTRS512_CONSTEXPR
3648+
_mm512_maskz_cvtepi32_ps(__mmask16 __U, __m512i __A) {
36623649
return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
36633650
(__v16sf)_mm512_cvtepi32_ps(__A),
36643651
(__v16sf)_mm512_setzero_ps());
36653652
}
36663653

3667-
static __inline __m512d __DEFAULT_FN_ATTRS512
3668-
_mm512_cvtepu32_pd(__m256i __A)
3669-
{
3654+
static __inline __m512d __DEFAULT_FN_ATTRS512_CONSTEXPR
3655+
_mm512_cvtepu32_pd(__m256i __A) {
36703656
return (__m512d)__builtin_convertvector((__v8su)__A, __v8df);
36713657
}
36723658

3673-
static __inline__ __m512d __DEFAULT_FN_ATTRS512
3674-
_mm512_mask_cvtepu32_pd (__m512d __W, __mmask8 __U, __m256i __A)
3675-
{
3659+
static __inline__ __m512d __DEFAULT_FN_ATTRS512_CONSTEXPR
3660+
_mm512_mask_cvtepu32_pd(__m512d __W, __mmask8 __U, __m256i __A) {
36763661
return (__m512d)__builtin_ia32_selectpd_512((__mmask8) __U,
36773662
(__v8df)_mm512_cvtepu32_pd(__A),
36783663
(__v8df)__W);
36793664
}
36803665

3681-
static __inline__ __m512d __DEFAULT_FN_ATTRS512
3682-
_mm512_maskz_cvtepu32_pd (__mmask8 __U, __m256i __A)
3683-
{
3666+
static __inline__ __m512d __DEFAULT_FN_ATTRS512_CONSTEXPR
3667+
_mm512_maskz_cvtepu32_pd(__mmask8 __U, __m256i __A) {
36843668
return (__m512d)__builtin_ia32_selectpd_512((__mmask8) __U,
36853669
(__v8df)_mm512_cvtepu32_pd(__A),
36863670
(__v8df)_mm512_setzero_pd());
36873671
}
36883672

3689-
static __inline__ __m512d __DEFAULT_FN_ATTRS512
3690-
_mm512_cvtepu32lo_pd(__m512i __A)
3691-
{
3673+
static __inline__ __m512d __DEFAULT_FN_ATTRS512_CONSTEXPR
3674+
_mm512_cvtepu32lo_pd(__m512i __A) {
36923675
return (__m512d) _mm512_cvtepu32_pd(_mm512_castsi512_si256(__A));
36933676
}
36943677

3695-
static __inline__ __m512d __DEFAULT_FN_ATTRS512
3696-
_mm512_mask_cvtepu32lo_pd(__m512d __W, __mmask8 __U,__m512i __A)
3697-
{
3678+
static __inline__ __m512d __DEFAULT_FN_ATTRS512_CONSTEXPR
3679+
_mm512_mask_cvtepu32lo_pd(__m512d __W, __mmask8 __U, __m512i __A) {
36983680
return (__m512d) _mm512_mask_cvtepu32_pd(__W, __U, _mm512_castsi512_si256(__A));
36993681
}
37003682

@@ -8875,37 +8857,32 @@ _mm512_maskz_expand_epi32 (__mmask16 __U, __m512i __A)
88758857
(__v8df)_mm512_setzero_pd(), \
88768858
(__mmask8)(U), (int)(R)))
88778859

8878-
static __inline__ __m512d __DEFAULT_FN_ATTRS512
8879-
_mm512_cvtps_pd (__m256 __A)
8880-
{
8860+
static __inline__ __m512d
8861+
__DEFAULT_FN_ATTRS512_CONSTEXPR _mm512_cvtps_pd(__m256 __A) {
88818862
return (__m512d) __builtin_convertvector((__v8sf)__A, __v8df);
88828863
}
88838864

8884-
static __inline__ __m512d __DEFAULT_FN_ATTRS512
8885-
_mm512_mask_cvtps_pd (__m512d __W, __mmask8 __U, __m256 __A)
8886-
{
8865+
static __inline__ __m512d __DEFAULT_FN_ATTRS512_CONSTEXPR
8866+
_mm512_mask_cvtps_pd(__m512d __W, __mmask8 __U, __m256 __A) {
88878867
return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
88888868
(__v8df)_mm512_cvtps_pd(__A),
88898869
(__v8df)__W);
88908870
}
88918871

8892-
static __inline__ __m512d __DEFAULT_FN_ATTRS512
8893-
_mm512_maskz_cvtps_pd (__mmask8 __U, __m256 __A)
8894-
{
8872+
static __inline__ __m512d __DEFAULT_FN_ATTRS512_CONSTEXPR
8873+
_mm512_maskz_cvtps_pd(__mmask8 __U, __m256 __A) {
88958874
return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
88968875
(__v8df)_mm512_cvtps_pd(__A),
88978876
(__v8df)_mm512_setzero_pd());
88988877
}
88998878

8900-
static __inline__ __m512d __DEFAULT_FN_ATTRS512
8901-
_mm512_cvtpslo_pd (__m512 __A)
8902-
{
8879+
static __inline__ __m512d __DEFAULT_FN_ATTRS512_CONSTEXPR
8880+
_mm512_cvtpslo_pd(__m512 __A) {
89038881
return (__m512d) _mm512_cvtps_pd(_mm512_castps512_ps256(__A));
89048882
}
89058883

8906-
static __inline__ __m512d __DEFAULT_FN_ATTRS512
8907-
_mm512_mask_cvtpslo_pd (__m512d __W, __mmask8 __U, __m512 __A)
8908-
{
8884+
static __inline__ __m512d __DEFAULT_FN_ATTRS512_CONSTEXPR
8885+
_mm512_mask_cvtpslo_pd(__m512d __W, __mmask8 __U, __m512 __A) {
89098886
return (__m512d) _mm512_mask_cvtps_pd(__W, __U, _mm512_castps512_ps256(__A));
89108887
}
89118888

clang/lib/Headers/avxintrin.h

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2182,9 +2182,8 @@ _mm256_blendv_ps(__m256 __a, __m256 __b, __m256 __c)
21822182
/// \param __a
21832183
/// A 128-bit integer vector of [4 x i32].
21842184
/// \returns A 256-bit vector of [4 x double] containing the converted values.
2185-
static __inline __m256d __DEFAULT_FN_ATTRS
2186-
_mm256_cvtepi32_pd(__m128i __a)
2187-
{
2185+
static __inline __m256d __DEFAULT_FN_ATTRS_CONSTEXPR
2186+
_mm256_cvtepi32_pd(__m128i __a) {
21882187
return (__m256d)__builtin_convertvector((__v4si)__a, __v4df);
21892188
}
21902189

@@ -2197,9 +2196,8 @@ _mm256_cvtepi32_pd(__m128i __a)
21972196
/// \param __a
21982197
/// A 256-bit integer vector.
21992198
/// \returns A 256-bit vector of [8 x float] containing the converted values.
2200-
static __inline __m256 __DEFAULT_FN_ATTRS
2201-
_mm256_cvtepi32_ps(__m256i __a)
2202-
{
2199+
static __inline __m256 __DEFAULT_FN_ATTRS_CONSTEXPR
2200+
_mm256_cvtepi32_ps(__m256i __a) {
22032201
return (__m256)__builtin_convertvector((__v8si)__a, __v8sf);
22042202
}
22052203

@@ -2248,9 +2246,8 @@ _mm256_cvtps_epi32(__m256 __a)
22482246
/// \param __a
22492247
/// A 128-bit vector of [4 x float].
22502248
/// \returns A 256-bit vector of [4 x double] containing the converted values.
2251-
static __inline __m256d __DEFAULT_FN_ATTRS
2252-
_mm256_cvtps_pd(__m128 __a)
2253-
{
2249+
static __inline __m256d __DEFAULT_FN_ATTRS_CONSTEXPR
2250+
_mm256_cvtps_pd(__m128 __a) {
22542251
return (__m256d)__builtin_convertvector((__v4sf)__a, __v4df);
22552252
}
22562253

clang/lib/Sema/SemaExpr.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13620,6 +13620,8 @@ static NonConstCaptureKind isReferenceToNonConstCapture(Sema &S, Expr *E) {
1362013620
VarDecl *Var = dyn_cast<VarDecl>(Value);
1362113621
if (!Var)
1362213622
return NCCK_None;
13623+
if (Var->getType()->isReferenceType())
13624+
return NCCK_None;
1362313625

1362413626
assert(Var->hasLocalStorage() && "capture added 'const' to non-local?");
1362513627

0 commit comments

Comments
 (0)