Skip to content

Commit 7924837

Browse files
committed
merge main into amd-staging
2 parents 103d375 + 442e4ad commit 7924837

File tree

94 files changed

+5392
-1600
lines changed

Some content is hidden

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

94 files changed

+5392
-1600
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/ReleaseNotes.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -492,6 +492,8 @@ Improvements to Clang's diagnostics
492492
potential misaligned members get processed before they can get discarded.
493493
(#GH144729)
494494

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

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/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
@@ -13654,6 +13654,8 @@ static NonConstCaptureKind isReferenceToNonConstCapture(Sema &S, Expr *E) {
1365413654
VarDecl *Var = dyn_cast<VarDecl>(Value);
1365513655
if (!Var)
1365613656
return NCCK_None;
13657+
if (Var->getType()->isReferenceType())
13658+
return NCCK_None;
1365713659

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

clang/test/CodeGen/X86/avx-builtins.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -934,12 +934,16 @@ __m256d test_mm256_cvtepi32_pd(__m128i A) {
934934
return _mm256_cvtepi32_pd(A);
935935
}
936936

937+
TEST_CONSTEXPR(match_m256d(_mm256_cvtepi32_pd((__m128i)(__v4si){-2, -1, 0, 1}), -2.0, -1.0, 0.0, 1.0));
938+
937939
__m256 test_mm256_cvtepi32_ps(__m256i A) {
938940
// CHECK-LABEL: test_mm256_cvtepi32_ps
939941
// CHECK: sitofp <8 x i32> %{{.*}} to <8 x float>
940942
return _mm256_cvtepi32_ps(A);
941943
}
942944

945+
TEST_CONSTEXPR(match_m256(_mm256_cvtepi32_ps((__m256i)(__v8si){-8, -4, -2, -1, 0, 1, 2, 4}), -8.0f, -4.0f, -2.0f, -1.0f, 0.0f, 1.0f, 2.0f, 4.0f));
946+
943947
__m128i test_mm256_cvtpd_epi32(__m256d A) {
944948
// CHECK-LABEL: test_mm256_cvtpd_epi32
945949
// CHECK: call <4 x i32> @llvm.x86.avx.cvt.pd2dq.256(<4 x double> %{{.*}})
@@ -964,6 +968,8 @@ __m256d test_mm256_cvtps_pd(__m128 A) {
964968
return _mm256_cvtps_pd(A);
965969
}
966970

971+
TEST_CONSTEXPR(match_m256d(_mm256_cvtps_pd((__m128){0.25f, 1.75f, -1.75f, 16777216.0f}), 0.25, 1.75, -1.75, 16777216.0));
972+
967973
double test_mm256_cvtsd_f64(__m256d __a) {
968974
// CHECK-LABEL: test_mm256_cvtsd_f64
969975
// CHECK: extractelement <4 x double> %{{.*}}, i32 0

0 commit comments

Comments
 (0)