Skip to content

Commit 482c828

Browse files
committed
[𝘀𝗽𝗿] changes introduced through rebase
Created using spr 1.3.5-bogner [skip ci]
2 parents 4d97937 + f03b783 commit 482c828

File tree

817 files changed

+30106
-9172
lines changed

Some content is hidden

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

817 files changed

+30106
-9172
lines changed

.github/workflows/libcxx-build-and-test.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,7 @@ jobs:
146146
'generic-no-experimental',
147147
'generic-no-filesystem',
148148
'generic-no-localization',
149+
'generic-no-terminal',
149150
'generic-no-random_device',
150151
'generic-no-threads',
151152
'generic-no-tzdb',

bolt/lib/Core/BinaryFunction.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2502,7 +2502,7 @@ void BinaryFunction::annotateCFIState() {
25022502
}
25032503
}
25042504

2505-
if (!StateStack.empty()) {
2505+
if (opts::Verbosity >= 1 && !StateStack.empty()) {
25062506
BC.errs() << "BOLT-WARNING: non-empty CFI stack at the end of " << *this
25072507
<< '\n';
25082508
}

bolt/lib/Core/BinaryFunctionProfile.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -336,7 +336,8 @@ void BinaryFunction::inferFallThroughCounts() {
336336
if (SuccBI.Count == 0) {
337337
SuccBI.Count = Inferred;
338338
SuccBI.MispredictedCount = BinaryBasicBlock::COUNT_INFERRED;
339-
Succ->ExecutionCount += Inferred;
339+
Succ->ExecutionCount =
340+
std::max(Succ->getKnownExecutionCount(), Inferred);
340341
}
341342
}
342343
}

bolt/test/X86/infer-fall-throughs.s

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
## Test that infer-fall-throughs would correctly infer the wrong fall-through
2+
## edge count in the example
3+
4+
# RUN: llvm-mc --filetype=obj --triple x86_64-unknown-unknown %s -o %t.o
5+
# RUN: link_fdata %s %t.o %t.fdata
6+
# RUN: llvm-strip --strip-unneeded %t.o
7+
# RUN: %clang %cflags %t.o -o %t.exe -Wl,-q
8+
# RUN: llvm-bolt %t.exe -o %t.bolt \
9+
# RUN: --print-estimate-edge-counts --data=%t.fdata \
10+
# RUN: 2>&1 | FileCheck --check-prefix=WITHOUTINFERENCE %s
11+
# RUN: llvm-bolt %t.exe -o %t.bolt --infer-fall-throughs \
12+
# RUN: --print-estimate-edge-counts --data=%t.fdata \
13+
# RUN: 2>&1 | FileCheck --check-prefix=CORRECTINFERENCE %s
14+
15+
16+
# WITHOUTINFERENCE: Binary Function "main" after estimate-edge-counts
17+
# WITHOUTINFERENCE: {{^\.Ltmp0}}
18+
# WITHOUTINFERENCE: Successors: .Ltmp1 (mispreds: 0, count: 10), .LFT0 (mispreds: 0, count: 0)
19+
# WITHOUTINFERENCE: {{^\.LFT0}}
20+
# WITHOUTINFERENCE: Exec Count : 490
21+
22+
# CORRECTINFERENCE: Binary Function "main" after estimate-edge-counts
23+
# CORRECTINFERENCE: {{^\.Ltmp0}}
24+
# CORRECTINFERENCE: Successors: .Ltmp1 (mispreds: 0, count: 10), .LFT0 (inferred count: 490)
25+
# CORRECTINFERENCE: {{^\.LFT0}}
26+
# CORRECTINFERENCE: Exec Count : 490
27+
28+
29+
.globl main
30+
.type main, @function
31+
main:
32+
LLmain_LLstart:
33+
jmp LLstart
34+
# FDATA: 1 main #LLmain_LLstart# 1 main #LLstart# 0 500
35+
LLstart:
36+
jge LLexit
37+
# FDATA: 1 main #LLstart# 1 main #LLexit# 0 10
38+
# FDATA: 1 main #LLstart# 1 main #LLmore# 0 0
39+
LLmore:
40+
movl $5, %eax
41+
# FDATA: 1 main #LLmore# 1 main #LLexit# 0 490
42+
LLexit:
43+
ret
44+
.LLmain_end:
45+
.size main, .LLmain_end-main

clang/cmake/caches/CrossWinToARMLinux.cmake

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,9 +108,9 @@ endif()
108108

109109
message(STATUS "Toolchain target to build: ${LLVM_TARGETS_TO_BUILD}")
110110

111-
# Allow to override libc++ ABI version. Use 2 by default.
111+
# Allow to override libc++ ABI version (1 is default).
112112
if (NOT DEFINED LIBCXX_ABI_VERSION)
113-
set(LIBCXX_ABI_VERSION 2)
113+
set(LIBCXX_ABI_VERSION 1)
114114
endif()
115115

116116
message(STATUS "Toolchain's Libc++ ABI version: ${LIBCXX_ABI_VERSION}")
@@ -217,6 +217,8 @@ set(RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_LIBCXX_ENABLE_SHARED
217217
set(RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_LIBCXX_ABI_VERSION ${LIBCXX_ABI_VERSION} CACHE STRING "")
218218
set(RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_LIBCXX_CXX_ABI "libcxxabi" CACHE STRING "") #!!!
219219
set(RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_LIBCXX_ENABLE_NEW_DELETE_DEFINITIONS ON CACHE BOOL "")
220+
# Merge libc++ and libc++abi libraries into the single libc++ library file.
221+
set(RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_LIBCXX_ENABLE_STATIC_ABI_LIBRARY ON CACHE BOOL "")
220222

221223
# Avoid searching for the python3 interpreter during the runtimes configuration for the cross builds.
222224
# It starts searching the python3 package using the target's sysroot path, that usually is not compatible with the build host.

clang/docs/InternalsManual.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3200,7 +3200,7 @@ are similar.
32003200
always involve two functions: an ``ActOnXXX`` function that will be called
32013201
directly from the parser, and a ``BuildXXX`` function that performs the
32023202
actual semantic analysis and will (eventually!) build the AST node. It's
3203-
fairly common for the ``ActOnCXX`` function to do very little (often just
3203+
fairly common for the ``ActOnXXX`` function to do very little (often just
32043204
some minor translation from the parser's representation to ``Sema``'s
32053205
representation of the same thing), but the separation is still important:
32063206
C++ template instantiation, for example, should always call the ``BuildXXX``

clang/docs/LanguageExtensions.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3987,7 +3987,7 @@ ellipsis (``...``) in the function signature. Alternatively, in C23 mode or
39873987
later, it may be the integer literal ``0`` if there is no parameter preceding
39883988
the ellipsis. This function initializes the given ``__builtin_va_list`` object.
39893989
It is undefined behavior to call this function on an already initialized
3990-
``__builin_va_list`` object.
3990+
``__builtin_va_list`` object.
39913991
39923992
* ``void __builtin_va_end(__builtin_va_list list)``
39933993
@@ -4321,7 +4321,7 @@ an appropriate value during the emission.
43214321
43224322
Note that there is no builtin matching the `llvm.coro.save` intrinsic. LLVM
43234323
automatically will insert one if the first argument to `llvm.coro.suspend` is
4324-
token `none`. If a user calls `__builin_suspend`, clang will insert `token none`
4324+
token `none`. If a user calls `__builtin_suspend`, clang will insert `token none`
43254325
as the first argument to the intrinsic.
43264326
43274327
Source location builtins

clang/docs/ReleaseNotes.rst

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,9 @@ Resolutions to C++ Defect Reports
152152
- ``nullptr`` is now promoted to ``void*`` when passed to a C-style variadic function.
153153
(`CWG722: Can nullptr be passed to an ellipsis? <https://cplusplus.github.io/CWG/issues/722.html>`_)
154154

155+
- Allow ``void{}`` as a prvalue of type ``void``.
156+
(`CWG2351: void{} <https://cplusplus.github.io/CWG/issues/2351.html>`_).
157+
155158
C Language Changes
156159
------------------
157160

@@ -287,6 +290,8 @@ Bug Fixes to C++ Support
287290
- Clang now properly handles the order of attributes in `extern` blocks. (#GH101990).
288291
- Fixed an assertion failure by preventing null explicit object arguments from being deduced. (#GH102025).
289292
- Correctly check constraints of explicit instantiations of member functions. (#GH46029)
293+
- Fixed an assertion failure about a constraint of a friend function template references to a value with greater
294+
template depth than the friend function template. (#GH98258)
290295

291296
Bug Fixes to AST Handling
292297
^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -305,6 +310,12 @@ Miscellaneous Clang Crashes Fixed
305310
- Fixed a crash caused by long chains of ``sizeof`` and other similar operators
306311
that can be followed by a non-parenthesized expression. (#GH45061)
307312

313+
- Fixed an crash when compiling ``#pragma STDC FP_CONTRACT DEFAULT`` with
314+
``-ffp-contract=fast-honor-pragmas``. (#GH104830)
315+
316+
- Fixed a crash when function has more than 65536 parameters.
317+
Now a diagnostic is emitted. (#GH35741)
318+
308319
OpenACC Specific Changes
309320
------------------------
310321

@@ -438,6 +449,36 @@ Moved checkers
438449
Sanitizers
439450
----------
440451

452+
- Added the ``-fsanitize-undefined-ignore-overflow-pattern`` flag which can be
453+
used to disable specific overflow-dependent code patterns. The supported
454+
patterns are: ``add-overflow-test``, ``negated-unsigned-const``, and
455+
``post-decr-while``. The sanitizer instrumentation can be toggled off for all
456+
available patterns by specifying ``all``. Conversely, you can disable all
457+
exclusions with ``none``.
458+
459+
.. code-block:: c++
460+
461+
/// specified with ``-fsanitize-undefined-ignore-overflow-pattern=add-overflow-test``
462+
int common_overflow_check_pattern(unsigned base, unsigned offset) {
463+
if (base + offset < base) { /* ... */ } // The pattern of `a + b < a`, and other re-orderings, won't be instrumented
464+
}
465+
466+
/// specified with ``-fsanitize-undefined-ignore-overflow-pattern=negated-unsigned-const``
467+
void negation_overflow() {
468+
unsigned long foo = -1UL; // No longer causes a negation overflow warning
469+
unsigned long bar = -2UL; // and so on...
470+
}
471+
472+
/// specified with ``-fsanitize-undefined-ignore-overflow-pattern=post-decr-while``
473+
void while_post_decrement() {
474+
unsigned char count = 16;
475+
while (count--) { /* ... */} // No longer causes unsigned-integer-overflow sanitizer to trip
476+
}
477+
478+
Many existing projects have a large amount of these code patterns present.
479+
This new flag should allow those projects to enable integer sanitizers with
480+
less noise.
481+
441482
Python Binding Changes
442483
----------------------
443484
- Fixed an issue that led to crashes when calling ``Type.get_exception_specification_kind``.

clang/docs/UndefinedBehaviorSanitizer.rst

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -293,6 +293,48 @@ To silence reports from unsigned integer overflow, you can set
293293
``-fsanitize-recover=unsigned-integer-overflow``, is particularly useful for
294294
providing fuzzing signal without blowing up logs.
295295

296+
Disabling instrumentation for common overflow patterns
297+
------------------------------------------------------
298+
299+
There are certain overflow-dependent or overflow-prone code patterns which
300+
produce a lot of noise for integer overflow/truncation sanitizers. Negated
301+
unsigned constants, post-decrements in a while loop condition and simple
302+
overflow checks are accepted and pervasive code patterns. However, the signal
303+
received from sanitizers instrumenting these code patterns may be too noisy for
304+
some projects. To disable instrumentation for these common patterns one should
305+
use ``-fsanitize-undefined-ignore-overflow-pattern=``.
306+
307+
Currently, this option supports three overflow-dependent code idioms:
308+
309+
``negated-unsigned-const``
310+
311+
.. code-block:: c++
312+
313+
/// -fsanitize-undefined-ignore-overflow-pattern=negated-unsigned-const
314+
unsigned long foo = -1UL; // No longer causes a negation overflow warning
315+
unsigned long bar = -2UL; // and so on...
316+
317+
``post-decr-while``
318+
319+
.. code-block:: c++
320+
321+
/// -fsanitize-undefined-ignore-overflow-pattern=post-decr-while
322+
unsigned char count = 16;
323+
while (count--) { /* ... */ } // No longer causes unsigned-integer-overflow sanitizer to trip
324+
325+
``add-overflow-test``
326+
327+
.. code-block:: c++
328+
329+
/// -fsanitize-undefined-ignore-overflow-pattern=add-overflow-test
330+
if (base + offset < base) { /* ... */ } // The pattern of `a + b < a`, and other re-orderings,
331+
// won't be instrumented (same for signed types)
332+
333+
You can enable all exclusions with
334+
``-fsanitize-undefined-ignore-overflow-pattern=all`` or disable all exclusions
335+
with ``-fsanitize-undefined-ignore-overflow-pattern=none``. Specifying ``none``
336+
has precedence over other values.
337+
296338
Issue Suppression
297339
=================
298340

clang/include/clang/AST/Expr.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3888,6 +3888,7 @@ class BinaryOperator : public Expr {
38883888
/// Construct an empty binary operator.
38893889
explicit BinaryOperator(EmptyShell Empty) : Expr(BinaryOperatorClass, Empty) {
38903890
BinaryOperatorBits.Opc = BO_Comma;
3891+
BinaryOperatorBits.ExcludedOverflowPattern = false;
38913892
}
38923893

38933894
public:
@@ -4043,6 +4044,15 @@ class BinaryOperator : public Expr {
40434044
void setHasStoredFPFeatures(bool B) { BinaryOperatorBits.HasFPFeatures = B; }
40444045
bool hasStoredFPFeatures() const { return BinaryOperatorBits.HasFPFeatures; }
40454046

4047+
/// Set and get the bit that informs arithmetic overflow sanitizers whether
4048+
/// or not they should exclude certain BinaryOperators from instrumentation
4049+
void setExcludedOverflowPattern(bool B) {
4050+
BinaryOperatorBits.ExcludedOverflowPattern = B;
4051+
}
4052+
bool hasExcludedOverflowPattern() const {
4053+
return BinaryOperatorBits.ExcludedOverflowPattern;
4054+
}
4055+
40464056
/// Get FPFeatures from trailing storage
40474057
FPOptionsOverride getStoredFPFeatures() const {
40484058
assert(hasStoredFPFeatures());

clang/include/clang/AST/ExprCXX.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2176,8 +2176,9 @@ class LambdaExpr final : public Expr,
21762176
const_child_range children() const;
21772177
};
21782178

2179-
/// An expression "T()" which creates a value-initialized rvalue of type
2180-
/// T, which is a non-class type. See (C++98 [5.2.3p2]).
2179+
/// An expression "T()" which creates an rvalue of a non-class type T.
2180+
/// For non-void T, the rvalue is value-initialized.
2181+
/// See (C++98 [5.2.3p2]).
21812182
class CXXScalarValueInitExpr : public Expr {
21822183
friend class ASTStmtReader;
21832184

clang/include/clang/AST/Stmt.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -650,6 +650,11 @@ class alignas(void *) Stmt {
650650
LLVM_PREFERRED_TYPE(bool)
651651
unsigned HasFPFeatures : 1;
652652

653+
/// Whether or not this BinaryOperator should be excluded from integer
654+
/// overflow sanitization.
655+
LLVM_PREFERRED_TYPE(bool)
656+
unsigned ExcludedOverflowPattern : 1;
657+
653658
SourceLocation OpLoc;
654659
};
655660

clang/include/clang/AST/Type.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1929,6 +1929,11 @@ class alignas(TypeAlignment) Type : public ExtQualsTypeCommonBase {
19291929
unsigned Kind : NumOfBuiltinTypeBits;
19301930
};
19311931

1932+
public:
1933+
static constexpr int FunctionTypeNumParamsWidth = 16;
1934+
static constexpr int FunctionTypeNumParamsLimit = (1 << 16) - 1;
1935+
1936+
protected:
19321937
/// FunctionTypeBitfields store various bits belonging to FunctionProtoType.
19331938
/// Only common bits are stored here. Additional uncommon bits are stored
19341939
/// in a trailing object after FunctionProtoType.
@@ -1966,7 +1971,7 @@ class alignas(TypeAlignment) Type : public ExtQualsTypeCommonBase {
19661971
/// According to [implimits] 8 bits should be enough here but this is
19671972
/// somewhat easy to exceed with metaprogramming and so we would like to
19681973
/// keep NumParams as wide as reasonably possible.
1969-
unsigned NumParams : 16;
1974+
unsigned NumParams : FunctionTypeNumParamsWidth;
19701975

19711976
/// The type of exception specification this function has.
19721977
LLVM_PREFERRED_TYPE(ExceptionSpecificationType)

clang/include/clang/Basic/BuiltinsX86.def

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2217,6 +2217,50 @@ TARGET_BUILTIN(__builtin_ia32_vcvttps2ibs512_mask, "V16UiV16fV16UiUsIi", "nV:512
22172217
TARGET_BUILTIN(__builtin_ia32_vcvttps2iubs128_mask, "V4UiV4fV4UiUc", "nV:128:", "avx10.2-256")
22182218
TARGET_BUILTIN(__builtin_ia32_vcvttps2iubs256_mask, "V8UiV8fV8UiUcIi", "nV:256:", "avx10.2-256")
22192219
TARGET_BUILTIN(__builtin_ia32_vcvttps2iubs512_mask, "V16UiV16fV16UiUsIi", "nV:512:", "avx10.2-512")
2220+
2221+
// AVX10.2 CONVERT
2222+
TARGET_BUILTIN(__builtin_ia32_vcvt2ps2phx128_mask, "V8xV4fV4fV8xUc", "ncV:128:", "avx10.2-256")
2223+
TARGET_BUILTIN(__builtin_ia32_vcvt2ps2phx256_mask, "V16xV8fV8fV16xUsIi", "ncV:256:", "avx10.2-256")
2224+
TARGET_BUILTIN(__builtin_ia32_vcvt2ps2phx512_mask, "V32xV16fV16fV32xUiIi", "ncV:512:", "avx10.2-512")
2225+
TARGET_BUILTIN(__builtin_ia32_vcvtbiasph2bf8_128_mask, "V16cV16cV8xV16cUc", "nV:128:", "avx10.2-256")
2226+
TARGET_BUILTIN(__builtin_ia32_vcvtbiasph2bf8_256_mask, "V16cV32cV16xV16cUs", "nV:256:", "avx10.2-256")
2227+
TARGET_BUILTIN(__builtin_ia32_vcvtbiasph2bf8_512_mask, "V32cV64cV32xV32cUi", "nV:512:", "avx10.2-512")
2228+
TARGET_BUILTIN(__builtin_ia32_vcvtbiasph2bf8s_128_mask, "V16cV16cV8xV16cUc", "nV:128:", "avx10.2-256")
2229+
TARGET_BUILTIN(__builtin_ia32_vcvtbiasph2bf8s_256_mask, "V16cV32cV16xV16cUs", "nV:256:", "avx10.2-256")
2230+
TARGET_BUILTIN(__builtin_ia32_vcvtbiasph2bf8s_512_mask, "V32cV64cV32xV32cUi", "nV:512:", "avx10.2-512")
2231+
TARGET_BUILTIN(__builtin_ia32_vcvtbiasph2hf8_128_mask, "V16cV16cV8xV16cUc", "nV:128:", "avx10.2-256")
2232+
TARGET_BUILTIN(__builtin_ia32_vcvtbiasph2hf8_256_mask, "V16cV32cV16xV16cUs", "nV:256:", "avx10.2-256")
2233+
TARGET_BUILTIN(__builtin_ia32_vcvtbiasph2hf8_512_mask, "V32cV64cV32xV32cUi", "nV:512:", "avx10.2-512")
2234+
TARGET_BUILTIN(__builtin_ia32_vcvtbiasph2hf8s_128_mask, "V16cV16cV8xV16cUc", "nV:128:", "avx10.2-256")
2235+
TARGET_BUILTIN(__builtin_ia32_vcvtbiasph2hf8s_256_mask, "V16cV32cV16xV16cUs", "nV:256:", "avx10.2-256")
2236+
TARGET_BUILTIN(__builtin_ia32_vcvtbiasph2hf8s_512_mask, "V32cV64cV32xV32cUi", "nV:512:", "avx10.2-512")
2237+
TARGET_BUILTIN(__builtin_ia32_vcvtne2ph2bf8_128, "V16cV8xV8x", "nV:128:", "avx10.2-256")
2238+
TARGET_BUILTIN(__builtin_ia32_vcvtne2ph2bf8_256, "V32cV16xV16x", "nV:256:", "avx10.2-256")
2239+
TARGET_BUILTIN(__builtin_ia32_vcvtne2ph2bf8_512, "V64cV32xV32x", "nV:512:", "avx10.2-512")
2240+
TARGET_BUILTIN(__builtin_ia32_vcvtne2ph2bf8s_128, "V16cV8xV8x", "nV:128:", "avx10.2-256")
2241+
TARGET_BUILTIN(__builtin_ia32_vcvtne2ph2bf8s_256, "V32cV16xV16x", "nV:256:", "avx10.2-256")
2242+
TARGET_BUILTIN(__builtin_ia32_vcvtne2ph2bf8s_512, "V64cV32xV32x", "nV:512:", "avx10.2-512")
2243+
TARGET_BUILTIN(__builtin_ia32_vcvtne2ph2hf8_128, "V16cV8xV8x", "nV:128:", "avx10.2-256")
2244+
TARGET_BUILTIN(__builtin_ia32_vcvtne2ph2hf8_256, "V32cV16xV16x", "nV:256:", "avx10.2-256")
2245+
TARGET_BUILTIN(__builtin_ia32_vcvtne2ph2hf8_512, "V64cV32xV32x", "nV:512:", "avx10.2-512")
2246+
TARGET_BUILTIN(__builtin_ia32_vcvtne2ph2hf8s_128, "V16cV8xV8x", "nV:128:", "avx10.2-256")
2247+
TARGET_BUILTIN(__builtin_ia32_vcvtne2ph2hf8s_256, "V32cV16xV16x", "nV:256:", "avx10.2-256")
2248+
TARGET_BUILTIN(__builtin_ia32_vcvtne2ph2hf8s_512, "V64cV32xV32x", "nV:512:", "avx10.2-512")
2249+
TARGET_BUILTIN(__builtin_ia32_vcvthf8_2ph128_mask, "V8xV16cV8xUc", "nV:128:", "avx10.2-256")
2250+
TARGET_BUILTIN(__builtin_ia32_vcvthf8_2ph256_mask, "V16xV16cV16xUs", "nV:256:", "avx10.2-256")
2251+
TARGET_BUILTIN(__builtin_ia32_vcvthf8_2ph512_mask, "V32xV32cV32xUi", "nV:512:", "avx10.2-512")
2252+
TARGET_BUILTIN(__builtin_ia32_vcvtneph2bf8_128_mask, "V16cV8xV16cUc", "nV:128:", "avx10.2-256")
2253+
TARGET_BUILTIN(__builtin_ia32_vcvtneph2bf8_256_mask, "V16cV16xV16cUs", "nV:256:", "avx10.2-256")
2254+
TARGET_BUILTIN(__builtin_ia32_vcvtneph2bf8_512_mask, "V32cV32xV32cUi", "nV:512:", "avx10.2-512")
2255+
TARGET_BUILTIN(__builtin_ia32_vcvtneph2bf8s_128_mask, "V16cV8xV16cUc", "nV:128:", "avx10.2-256")
2256+
TARGET_BUILTIN(__builtin_ia32_vcvtneph2bf8s_256_mask, "V16cV16xV16cUs", "nV:256:", "avx10.2-256")
2257+
TARGET_BUILTIN(__builtin_ia32_vcvtneph2bf8s_512_mask, "V32cV32xV32cUi", "nV:512:", "avx10.2-512")
2258+
TARGET_BUILTIN(__builtin_ia32_vcvtneph2hf8_128_mask, "V16cV8xV16cUc", "nV:128:", "avx10.2-256")
2259+
TARGET_BUILTIN(__builtin_ia32_vcvtneph2hf8_256_mask, "V16cV16xV16cUs", "nV:256:", "avx10.2-256")
2260+
TARGET_BUILTIN(__builtin_ia32_vcvtneph2hf8_512_mask, "V32cV32xV32cUi", "nV:512:", "avx10.2-512")
2261+
TARGET_BUILTIN(__builtin_ia32_vcvtneph2hf8s_128_mask, "V16cV8xV16cUc", "nV:128:", "avx10.2-256")
2262+
TARGET_BUILTIN(__builtin_ia32_vcvtneph2hf8s_256_mask, "V16cV16xV16cUs", "nV:256:", "avx10.2-256")
2263+
TARGET_BUILTIN(__builtin_ia32_vcvtneph2hf8s_512_mask, "V32cV32xV32cUi", "nV:512:", "avx10.2-512")
22202264
#undef BUILTIN
22212265
#undef TARGET_BUILTIN
22222266
#undef TARGET_HEADER_BUILTIN

clang/include/clang/Basic/CodeGenOptions.def

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,7 @@ CODEGENOPT(MergeAllConstants , 1, 1) ///< Merge identical constants.
176176
CODEGENOPT(MergeFunctions , 1, 0) ///< Set when -fmerge-functions is enabled.
177177
CODEGENOPT(NoCommon , 1, 0) ///< Set when -fno-common or C++ is enabled.
178178
CODEGENOPT(NoExecStack , 1, 0) ///< Set when -Wa,--noexecstack is enabled.
179+
CODEGENOPT(MipsMsa , 1, 0) ///< Set when -Wa,-mmsa is enabled.
179180
CODEGENOPT(FatalWarnings , 1, 0) ///< Set when -Wa,--fatal-warnings is
180181
///< enabled.
181182
CODEGENOPT(NoWarn , 1, 0) ///< Set when -Wa,--no-warn is enabled.

clang/include/clang/Basic/DiagnosticParseKinds.td

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -481,6 +481,9 @@ def ext_decomp_decl_empty : ExtWarn<
481481
"ISO C++17 does not allow a decomposition group to be empty">,
482482
InGroup<DiagGroup<"empty-decomposition">>;
483483

484+
def err_function_parameter_limit_exceeded : Error<
485+
"too many function parameters; subsequent parameters will be ignored">;
486+
484487
// C++26 structured bindings
485488
def ext_decl_attrs_on_binding : ExtWarn<
486489
"an attribute specifier sequence attached to a structured binding declaration "

0 commit comments

Comments
 (0)