Skip to content

Commit fb36081

Browse files
committed
Merge branch 'current-main' into fix-optional
2 parents c494878 + 7e66cf7 commit fb36081

File tree

141 files changed

+3457
-986
lines changed

Some content is hidden

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

141 files changed

+3457
-986
lines changed

clang-tools-extra/include-cleaner/lib/WalkAST.cpp

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
#include "clang/AST/Type.h"
2323
#include "clang/AST/TypeLoc.h"
2424
#include "clang/Basic/IdentifierTable.h"
25+
#include "clang/Basic/OperatorKinds.h"
2526
#include "clang/Basic/SourceLocation.h"
2627
#include "clang/Basic/Specifiers.h"
2728
#include "llvm/ADT/STLExtras.h"
@@ -32,6 +33,11 @@
3233

3334
namespace clang::include_cleaner {
3435
namespace {
36+
bool isOperatorNewDelete(OverloadedOperatorKind OpKind) {
37+
return OpKind == OO_New || OpKind == OO_Delete || OpKind == OO_Array_New ||
38+
OpKind == OO_Array_Delete;
39+
}
40+
3541
using DeclCallback =
3642
llvm::function_ref<void(SourceLocation, NamedDecl &, RefType)>;
3743

@@ -158,7 +164,15 @@ class ASTWalker : public RecursiveASTVisitor<ASTWalker> {
158164
// the container decl instead, which is preferred as it'll handle
159165
// aliases/exports properly.
160166
if (!FD->isCXXClassMember() && !llvm::isa<EnumConstantDecl>(FD)) {
161-
report(DRE->getLocation(), FD);
167+
// Global operator new/delete [] is available implicitly in every
168+
// translation unit, even without including any explicit headers. So treat
169+
// those as ambigious to not force inclusion in TUs that transitively
170+
// depend on those.
171+
RefType RT =
172+
isOperatorNewDelete(FD->getDeclName().getCXXOverloadedOperator())
173+
? RefType::Ambiguous
174+
: RefType::Explicit;
175+
report(DRE->getLocation(), FD, RT);
162176
return true;
163177
}
164178
// If the ref is without a qualifier, and is a member, ignore it. As it is

clang-tools-extra/include-cleaner/unittests/AnalysisTest.cpp

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -397,6 +397,55 @@ TEST_F(AnalyzeTest, SpellingIncludesWithSymlinks) {
397397
}
398398
}
399399

400+
// Make sure that the references to implicit operator new/delete are reported as
401+
// ambigious.
402+
TEST_F(AnalyzeTest, ImplicitOperatorNewDeleteNotMissing) {
403+
ExtraFS = llvm::makeIntrusiveRefCnt<llvm::vfs::InMemoryFileSystem>();
404+
ExtraFS->addFile("header.h",
405+
/*ModificationTime=*/{},
406+
llvm::MemoryBuffer::getMemBufferCopy(guard(R"cpp(
407+
void* operator new(decltype(sizeof(int)));
408+
)cpp")));
409+
ExtraFS->addFile("wrapper.h",
410+
/*ModificationTime=*/{},
411+
llvm::MemoryBuffer::getMemBufferCopy(guard(R"cpp(
412+
#include "header.h"
413+
)cpp")));
414+
415+
Inputs.Code = R"cpp(
416+
#include "wrapper.h"
417+
void bar() {
418+
operator new(3);
419+
})cpp";
420+
TestAST AST(Inputs);
421+
std::vector<Decl *> DeclsInTU;
422+
for (auto *D : AST.context().getTranslationUnitDecl()->decls())
423+
DeclsInTU.push_back(D);
424+
auto Results = analyze(DeclsInTU, {}, PP.Includes, &PI, AST.preprocessor());
425+
EXPECT_THAT(Results.Missing, testing::IsEmpty());
426+
}
427+
428+
TEST_F(AnalyzeTest, ImplicitOperatorNewDeleteNotUnused) {
429+
ExtraFS = llvm::makeIntrusiveRefCnt<llvm::vfs::InMemoryFileSystem>();
430+
ExtraFS->addFile("header.h",
431+
/*ModificationTime=*/{},
432+
llvm::MemoryBuffer::getMemBufferCopy(guard(R"cpp(
433+
void* operator new(decltype(sizeof(int)));
434+
)cpp")));
435+
436+
Inputs.Code = R"cpp(
437+
#include "header.h"
438+
void bar() {
439+
operator new(3);
440+
})cpp";
441+
TestAST AST(Inputs);
442+
std::vector<Decl *> DeclsInTU;
443+
for (auto *D : AST.context().getTranslationUnitDecl()->decls())
444+
DeclsInTU.push_back(D);
445+
auto Results = analyze(DeclsInTU, {}, PP.Includes, &PI, AST.preprocessor());
446+
EXPECT_THAT(Results.Unused, testing::IsEmpty());
447+
}
448+
400449
TEST(FixIncludes, Basic) {
401450
llvm::StringRef Code = R"cpp(#include "d.h"
402451
#include "a.h"

clang/docs/UsersManual.rst

Lines changed: 79 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2489,6 +2489,82 @@ are listed below.
24892489
24902490
$ clang -fuse-ld=lld -Oz -Wl,--icf=safe -fcodegen-data-use code.cc
24912491
2492+
.. _strict_aliasing:
2493+
2494+
Strict Aliasing
2495+
---------------
2496+
2497+
The C and C++ standards require accesses to objects in memory to use l-values of
2498+
an appropriate type for the object. This is called *strict aliasing* or
2499+
*type-based alias analysis*. Strict aliasing enhances a variety of powerful
2500+
memory optimizations, including reordering, combining, and eliminating memory
2501+
accesses. These optimizations can lead to unexpected behavior in code that
2502+
violates the strict aliasing rules. For example:
2503+
2504+
.. code-block:: c++
2505+
2506+
void advance(size_t *index, double *data) {
2507+
double value = data[*index];
2508+
/* Clang may assume that this store does not change the contents of `data`. */
2509+
*index += 1;
2510+
/* Clang may assume that this store does not change the contents of `index`. */
2511+
data[*index] = value;
2512+
/* Either of these facts may create significant optimization opportunities
2513+
if Clang is able to inline this function. */
2514+
}
2515+
2516+
Strict aliasing can be explicitly enabled with ``-fstrict-aliasing`` and
2517+
disabled with ``-fno-strict-aliasing``. ``clang-cl`` defaults to
2518+
``-fno-strict-aliasing``; see . Otherwise, Clang defaults to ``-fstrict-aliasing``.
2519+
2520+
C and C++ specify slightly different rules for strict aliasing. To improve
2521+
language interoperability, Clang allows two types to alias if either language
2522+
would permit it. This includes applying the C++ similar types rule to C,
2523+
allowing ``int **`` to alias ``int const * const *``. Clang also relaxes the
2524+
standard aliasing rules in the following ways:
2525+
2526+
* All integer types of the same size are permitted to alias each other,
2527+
including signed and unsigned types.
2528+
* ``void*`` is permitted to alias any pointer type, ``void**`` is permitted to
2529+
alias any pointer to pointer type, and so on.
2530+
2531+
Code which violates strict aliasing has undefined behavior. A program that
2532+
works in one version of Clang may not work in another because of changes to the
2533+
optimizer. Clang provides a :doc:`TypeSanitizer` to help detect
2534+
violations of the strict aliasing rules, but it is currently still experimental.
2535+
Code that is known to violate strict aliasing should generally be built with
2536+
``-fno-strict-aliasing`` if the violation cannot be fixed.
2537+
2538+
Clang supports several ways to fix a violation of strict aliasing:
2539+
2540+
* L-values of the character types ``char`` and ``unsigned char`` (as well as
2541+
other types, depending on the standard) are permitted to access objects of
2542+
any type.
2543+
2544+
* Library functions such as ``memcpy`` and ``memset`` are specified as treating
2545+
memory as characters and therefore are not limited by strict aliasing. If a
2546+
value of one type must be reinterpreted as another (e.g. to read the bits of a
2547+
floating-point number), use ``memcpy`` to copy the representation to an object
2548+
of the destination type. This has no overhead over a direct l-value access
2549+
because Clang should reliably optimize calls to these functions to use simple
2550+
loads and stores when they are used with small constant sizes.
2551+
2552+
* The attribute ``may_alias`` can be added to a ``typedef`` to give l-values of
2553+
that type the same aliasing power as the character types.
2554+
2555+
Clang makes a best effort to avoid obvious miscompilations from strict aliasing
2556+
by only considering type information when it cannot prove that two accesses must
2557+
refer to the same memory. However, it is not recommended that programmers
2558+
intentionally rely on this instead of using one of the solutions above because
2559+
it is too easy for the compiler's analysis to be blocked in surprising ways.
2560+
2561+
In Clang 20, Clang strengthened its implementation of strict aliasing for
2562+
accesses of pointer type. Previously, all accesses of pointer type were
2563+
permitted to alias each other, but Clang now distinguishes different pointers
2564+
by their pointee type, except as limited by the relaxations around qualifiers
2565+
and ``void*`` described above. The previous behavior of treating all pointers as
2566+
aliasing can be restored using ``-fno-pointer-tbaa``.
2567+
24922568
Profile Guided Optimization
24932569
---------------------------
24942570

@@ -5272,12 +5348,6 @@ The Visual C++ Toolset has a slightly more elaborate mechanism for detection.
52725348
Restrictions and Limitations compared to Clang
52735349
----------------------------------------------
52745350

5275-
Strict Aliasing
5276-
^^^^^^^^^^^^^^^
5277-
5278-
Strict aliasing (TBAA) is always off by default in clang-cl. Whereas in clang,
5279-
strict aliasing is turned on by default for all optimization levels.
5280-
5281-
To enable LLVM optimizations based on strict aliasing rules (e.g., optimizations
5282-
based on type of expressions in C/C++), user will need to explicitly pass
5283-
`-fstrict-aliasing` to clang-cl.
5351+
Strict aliasing (TBAA) is always off by default in clang-cl whereas in clang,
5352+
strict aliasing is turned on by default for all optimization levels. For more
5353+
details, see :ref:`Strict aliasing <strict_aliasing>`.

clang/include/clang/Basic/AArch64SVEACLETypes.def

Lines changed: 57 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -109,97 +109,97 @@
109109

110110
//===- Vector point types -----------------------------------------------===//
111111

112-
SVE_VECTOR_TYPE_INT("__SVInt8_t", "__SVInt8_t", SveInt8, SveInt8Ty, 16, 8, 1, true)
113-
SVE_VECTOR_TYPE_INT("__SVInt16_t", "__SVInt16_t", SveInt16, SveInt16Ty, 8, 16, 1, true)
114-
SVE_VECTOR_TYPE_INT("__SVInt32_t", "__SVInt32_t", SveInt32, SveInt32Ty, 4, 32, 1, true)
115-
SVE_VECTOR_TYPE_INT("__SVInt64_t", "__SVInt64_t", SveInt64, SveInt64Ty, 2, 64, 1, true)
112+
SVE_VECTOR_TYPE_INT(__SVInt8_t, __SVInt8_t, SveInt8, SveInt8Ty, 16, 8, 1, true)
113+
SVE_VECTOR_TYPE_INT(__SVInt16_t, __SVInt16_t, SveInt16, SveInt16Ty, 8, 16, 1, true)
114+
SVE_VECTOR_TYPE_INT(__SVInt32_t, __SVInt32_t, SveInt32, SveInt32Ty, 4, 32, 1, true)
115+
SVE_VECTOR_TYPE_INT(__SVInt64_t, __SVInt64_t, SveInt64, SveInt64Ty, 2, 64, 1, true)
116116

117-
SVE_VECTOR_TYPE_INT("__SVUint8_t", "__SVUint8_t", SveUint8, SveUint8Ty, 16, 8, 1, false)
118-
SVE_VECTOR_TYPE_INT("__SVUint16_t", "__SVUint16_t", SveUint16, SveUint16Ty, 8, 16, 1, false)
119-
SVE_VECTOR_TYPE_INT("__SVUint32_t", "__SVUint32_t", SveUint32, SveUint32Ty, 4, 32, 1, false)
120-
SVE_VECTOR_TYPE_INT("__SVUint64_t", "__SVUint64_t", SveUint64, SveUint64Ty, 2, 64, 1, false)
117+
SVE_VECTOR_TYPE_INT(__SVUint8_t, __SVUint8_t, SveUint8, SveUint8Ty, 16, 8, 1, false)
118+
SVE_VECTOR_TYPE_INT(__SVUint16_t, __SVUint16_t, SveUint16, SveUint16Ty, 8, 16, 1, false)
119+
SVE_VECTOR_TYPE_INT(__SVUint32_t, __SVUint32_t, SveUint32, SveUint32Ty, 4, 32, 1, false)
120+
SVE_VECTOR_TYPE_INT(__SVUint64_t, __SVUint64_t, SveUint64, SveUint64Ty, 2, 64, 1, false)
121121

122-
SVE_VECTOR_TYPE_FLOAT("__SVFloat16_t", "__SVFloat16_t", SveFloat16, SveFloat16Ty, 8, 16, 1)
123-
SVE_VECTOR_TYPE_FLOAT("__SVFloat32_t", "__SVFloat32_t", SveFloat32, SveFloat32Ty, 4, 32, 1)
124-
SVE_VECTOR_TYPE_FLOAT("__SVFloat64_t", "__SVFloat64_t", SveFloat64, SveFloat64Ty, 2, 64, 1)
122+
SVE_VECTOR_TYPE_FLOAT(__SVFloat16_t, __SVFloat16_t, SveFloat16, SveFloat16Ty, 8, 16, 1)
123+
SVE_VECTOR_TYPE_FLOAT(__SVFloat32_t, __SVFloat32_t, SveFloat32, SveFloat32Ty, 4, 32, 1)
124+
SVE_VECTOR_TYPE_FLOAT(__SVFloat64_t, __SVFloat64_t, SveFloat64, SveFloat64Ty, 2, 64, 1)
125125

126-
SVE_VECTOR_TYPE_BFLOAT("__SVBfloat16_t", "__SVBfloat16_t", SveBFloat16, SveBFloat16Ty, 8, 16, 1)
126+
SVE_VECTOR_TYPE_BFLOAT(__SVBfloat16_t, __SVBfloat16_t, SveBFloat16, SveBFloat16Ty, 8, 16, 1)
127127

128-
SVE_VECTOR_TYPE_MFLOAT("__SVMfloat8_t", "__SVMfloat8_t", SveMFloat8, SveMFloat8Ty, 16, 8, 1)
128+
SVE_VECTOR_TYPE_MFLOAT(__SVMfloat8_t, __SVMfloat8_t, SveMFloat8, SveMFloat8Ty, 16, 8, 1)
129129

130130
//
131131
// x2
132132
//
133133

134-
SVE_VECTOR_TYPE_INT("__clang_svint8x2_t", "svint8x2_t", SveInt8x2, SveInt8x2Ty, 16, 8, 2, true)
135-
SVE_VECTOR_TYPE_INT("__clang_svint16x2_t", "svint16x2_t", SveInt16x2, SveInt16x2Ty, 8, 16, 2, true)
136-
SVE_VECTOR_TYPE_INT("__clang_svint32x2_t", "svint32x2_t", SveInt32x2, SveInt32x2Ty, 4, 32, 2, true)
137-
SVE_VECTOR_TYPE_INT("__clang_svint64x2_t", "svint64x2_t", SveInt64x2, SveInt64x2Ty, 2, 64, 2, true)
134+
SVE_VECTOR_TYPE_INT(__clang_svint8x2_t, svint8x2_t, SveInt8x2, SveInt8x2Ty, 16, 8, 2, true)
135+
SVE_VECTOR_TYPE_INT(__clang_svint16x2_t, svint16x2_t, SveInt16x2, SveInt16x2Ty, 8, 16, 2, true)
136+
SVE_VECTOR_TYPE_INT(__clang_svint32x2_t, svint32x2_t, SveInt32x2, SveInt32x2Ty, 4, 32, 2, true)
137+
SVE_VECTOR_TYPE_INT(__clang_svint64x2_t, svint64x2_t, SveInt64x2, SveInt64x2Ty, 2, 64, 2, true)
138138

139-
SVE_VECTOR_TYPE_INT("__clang_svuint8x2_t", "svuint8x2_t", SveUint8x2, SveUint8x2Ty, 16 , 8, 2, false)
140-
SVE_VECTOR_TYPE_INT("__clang_svuint16x2_t", "svuint16x2_t", SveUint16x2, SveUint16x2Ty, 8, 16, 2, false)
141-
SVE_VECTOR_TYPE_INT("__clang_svuint32x2_t", "svuint32x2_t", SveUint32x2, SveUint32x2Ty, 4, 32, 2, false)
142-
SVE_VECTOR_TYPE_INT("__clang_svuint64x2_t", "svuint64x2_t", SveUint64x2, SveUint64x2Ty, 2, 64, 2, false)
139+
SVE_VECTOR_TYPE_INT(__clang_svuint8x2_t, svuint8x2_t, SveUint8x2, SveUint8x2Ty, 16 , 8, 2, false)
140+
SVE_VECTOR_TYPE_INT(__clang_svuint16x2_t, svuint16x2_t, SveUint16x2, SveUint16x2Ty, 8, 16, 2, false)
141+
SVE_VECTOR_TYPE_INT(__clang_svuint32x2_t, svuint32x2_t, SveUint32x2, SveUint32x2Ty, 4, 32, 2, false)
142+
SVE_VECTOR_TYPE_INT(__clang_svuint64x2_t, svuint64x2_t, SveUint64x2, SveUint64x2Ty, 2, 64, 2, false)
143143

144-
SVE_VECTOR_TYPE_FLOAT("__clang_svfloat16x2_t", "svfloat16x2_t", SveFloat16x2, SveFloat16x2Ty, 8, 16, 2)
145-
SVE_VECTOR_TYPE_FLOAT("__clang_svfloat32x2_t", "svfloat32x2_t", SveFloat32x2, SveFloat32x2Ty, 4, 32, 2)
146-
SVE_VECTOR_TYPE_FLOAT("__clang_svfloat64x2_t", "svfloat64x2_t", SveFloat64x2, SveFloat64x2Ty, 2, 64, 2)
144+
SVE_VECTOR_TYPE_FLOAT(__clang_svfloat16x2_t, svfloat16x2_t, SveFloat16x2, SveFloat16x2Ty, 8, 16, 2)
145+
SVE_VECTOR_TYPE_FLOAT(__clang_svfloat32x2_t, svfloat32x2_t, SveFloat32x2, SveFloat32x2Ty, 4, 32, 2)
146+
SVE_VECTOR_TYPE_FLOAT(__clang_svfloat64x2_t, svfloat64x2_t, SveFloat64x2, SveFloat64x2Ty, 2, 64, 2)
147147

148-
SVE_VECTOR_TYPE_BFLOAT("__clang_svbfloat16x2_t", "svbfloat16x2_t", SveBFloat16x2, SveBFloat16x2Ty, 8, 16, 2)
148+
SVE_VECTOR_TYPE_BFLOAT(__clang_svbfloat16x2_t, svbfloat16x2_t, SveBFloat16x2, SveBFloat16x2Ty, 8, 16, 2)
149149

150-
SVE_VECTOR_TYPE_MFLOAT("__clang_svmfloat8x2_t", "svmfloat8x2_t", SveMFloat8x2, SveMFloat8x2Ty, 16, 8, 2)
150+
SVE_VECTOR_TYPE_MFLOAT(__clang_svmfloat8x2_t, svmfloat8x2_t, SveMFloat8x2, SveMFloat8x2Ty, 16, 8, 2)
151151

152152
//
153153
// x3
154154
//
155155

156-
SVE_VECTOR_TYPE_INT("__clang_svint8x3_t", "svint8x3_t", SveInt8x3, SveInt8x3Ty, 16, 8, 3, true)
157-
SVE_VECTOR_TYPE_INT("__clang_svint16x3_t", "svint16x3_t", SveInt16x3, SveInt16x3Ty, 8, 16, 3, true)
158-
SVE_VECTOR_TYPE_INT("__clang_svint32x3_t", "svint32x3_t", SveInt32x3, SveInt32x3Ty, 4, 32, 3, true)
159-
SVE_VECTOR_TYPE_INT("__clang_svint64x3_t", "svint64x3_t", SveInt64x3, SveInt64x3Ty, 2, 64, 3, true)
156+
SVE_VECTOR_TYPE_INT(__clang_svint8x3_t, svint8x3_t, SveInt8x3, SveInt8x3Ty, 16, 8, 3, true)
157+
SVE_VECTOR_TYPE_INT(__clang_svint16x3_t, svint16x3_t, SveInt16x3, SveInt16x3Ty, 8, 16, 3, true)
158+
SVE_VECTOR_TYPE_INT(__clang_svint32x3_t, svint32x3_t, SveInt32x3, SveInt32x3Ty, 4, 32, 3, true)
159+
SVE_VECTOR_TYPE_INT(__clang_svint64x3_t, svint64x3_t, SveInt64x3, SveInt64x3Ty, 2, 64, 3, true)
160160

161-
SVE_VECTOR_TYPE_INT("__clang_svuint8x3_t", "svuint8x3_t", SveUint8x3, SveUint8x3Ty, 16, 8, 3, false)
162-
SVE_VECTOR_TYPE_INT("__clang_svuint16x3_t", "svuint16x3_t", SveUint16x3, SveUint16x3Ty, 8, 16, 3, false)
163-
SVE_VECTOR_TYPE_INT("__clang_svuint32x3_t", "svuint32x3_t", SveUint32x3, SveUint32x3Ty, 4, 32, 3, false)
164-
SVE_VECTOR_TYPE_INT("__clang_svuint64x3_t", "svuint64x3_t", SveUint64x3, SveUint64x3Ty, 2, 64, 3, false)
161+
SVE_VECTOR_TYPE_INT(__clang_svuint8x3_t, svuint8x3_t, SveUint8x3, SveUint8x3Ty, 16, 8, 3, false)
162+
SVE_VECTOR_TYPE_INT(__clang_svuint16x3_t, svuint16x3_t, SveUint16x3, SveUint16x3Ty, 8, 16, 3, false)
163+
SVE_VECTOR_TYPE_INT(__clang_svuint32x3_t, svuint32x3_t, SveUint32x3, SveUint32x3Ty, 4, 32, 3, false)
164+
SVE_VECTOR_TYPE_INT(__clang_svuint64x3_t, svuint64x3_t, SveUint64x3, SveUint64x3Ty, 2, 64, 3, false)
165165

166-
SVE_VECTOR_TYPE_FLOAT("__clang_svfloat16x3_t", "svfloat16x3_t", SveFloat16x3, SveFloat16x3Ty, 8, 16, 3)
167-
SVE_VECTOR_TYPE_FLOAT("__clang_svfloat32x3_t", "svfloat32x3_t", SveFloat32x3, SveFloat32x3Ty, 4, 32, 3)
168-
SVE_VECTOR_TYPE_FLOAT("__clang_svfloat64x3_t", "svfloat64x3_t", SveFloat64x3, SveFloat64x3Ty, 2, 64, 3)
166+
SVE_VECTOR_TYPE_FLOAT(__clang_svfloat16x3_t, svfloat16x3_t, SveFloat16x3, SveFloat16x3Ty, 8, 16, 3)
167+
SVE_VECTOR_TYPE_FLOAT(__clang_svfloat32x3_t, svfloat32x3_t, SveFloat32x3, SveFloat32x3Ty, 4, 32, 3)
168+
SVE_VECTOR_TYPE_FLOAT(__clang_svfloat64x3_t, svfloat64x3_t, SveFloat64x3, SveFloat64x3Ty, 2, 64, 3)
169169

170-
SVE_VECTOR_TYPE_BFLOAT("__clang_svbfloat16x3_t", "svbfloat16x3_t", SveBFloat16x3, SveBFloat16x3Ty, 8, 16, 3)
170+
SVE_VECTOR_TYPE_BFLOAT(__clang_svbfloat16x3_t, svbfloat16x3_t, SveBFloat16x3, SveBFloat16x3Ty, 8, 16, 3)
171171

172-
SVE_VECTOR_TYPE_MFLOAT("__clang_svmfloat8x3_t", "svmfloat8x3_t", SveMFloat8x3, SveMFloat8x3Ty, 16, 8, 3)
172+
SVE_VECTOR_TYPE_MFLOAT(__clang_svmfloat8x3_t, svmfloat8x3_t, SveMFloat8x3, SveMFloat8x3Ty, 16, 8, 3)
173173

174174
//
175175
// x4
176176
//
177177

178-
SVE_VECTOR_TYPE_INT("__clang_svint8x4_t", "svint8x4_t", SveInt8x4, SveInt8x4Ty, 16, 8, 4, true)
179-
SVE_VECTOR_TYPE_INT("__clang_svint16x4_t", "svint16x4_t", SveInt16x4, SveInt16x4Ty, 8, 16, 4, true)
180-
SVE_VECTOR_TYPE_INT("__clang_svint32x4_t", "svint32x4_t", SveInt32x4, SveInt32x4Ty, 4, 32, 4, true)
181-
SVE_VECTOR_TYPE_INT("__clang_svint64x4_t", "svint64x4_t", SveInt64x4, SveInt64x4Ty, 2, 64, 4, true)
178+
SVE_VECTOR_TYPE_INT(__clang_svint8x4_t, svint8x4_t, SveInt8x4, SveInt8x4Ty, 16, 8, 4, true)
179+
SVE_VECTOR_TYPE_INT(__clang_svint16x4_t, svint16x4_t, SveInt16x4, SveInt16x4Ty, 8, 16, 4, true)
180+
SVE_VECTOR_TYPE_INT(__clang_svint32x4_t, svint32x4_t, SveInt32x4, SveInt32x4Ty, 4, 32, 4, true)
181+
SVE_VECTOR_TYPE_INT(__clang_svint64x4_t, svint64x4_t, SveInt64x4, SveInt64x4Ty, 2, 64, 4, true)
182182

183-
SVE_VECTOR_TYPE_INT("__clang_svuint8x4_t", "svuint8x4_t", SveUint8x4, SveUint8x4Ty, 16, 8, 4, false)
184-
SVE_VECTOR_TYPE_INT("__clang_svuint16x4_t", "svuint16x4_t", SveUint16x4, SveUint16x4Ty, 8, 16, 4, false)
185-
SVE_VECTOR_TYPE_INT("__clang_svuint32x4_t", "svuint32x4_t", SveUint32x4, SveUint32x4Ty, 4, 32, 4, false)
186-
SVE_VECTOR_TYPE_INT("__clang_svuint64x4_t", "svuint64x4_t", SveUint64x4, SveUint64x4Ty, 2, 64, 4, false)
183+
SVE_VECTOR_TYPE_INT(__clang_svuint8x4_t, svuint8x4_t, SveUint8x4, SveUint8x4Ty, 16, 8, 4, false)
184+
SVE_VECTOR_TYPE_INT(__clang_svuint16x4_t, svuint16x4_t, SveUint16x4, SveUint16x4Ty, 8, 16, 4, false)
185+
SVE_VECTOR_TYPE_INT(__clang_svuint32x4_t, svuint32x4_t, SveUint32x4, SveUint32x4Ty, 4, 32, 4, false)
186+
SVE_VECTOR_TYPE_INT(__clang_svuint64x4_t, svuint64x4_t, SveUint64x4, SveUint64x4Ty, 2, 64, 4, false)
187187

188-
SVE_VECTOR_TYPE_FLOAT("__clang_svfloat16x4_t", "svfloat16x4_t", SveFloat16x4, SveFloat16x4Ty, 8, 16, 4)
189-
SVE_VECTOR_TYPE_FLOAT("__clang_svfloat32x4_t", "svfloat32x4_t", SveFloat32x4, SveFloat32x4Ty, 4, 32, 4)
190-
SVE_VECTOR_TYPE_FLOAT("__clang_svfloat64x4_t", "svfloat64x4_t", SveFloat64x4, SveFloat64x4Ty, 2, 64, 4)
188+
SVE_VECTOR_TYPE_FLOAT(__clang_svfloat16x4_t, svfloat16x4_t, SveFloat16x4, SveFloat16x4Ty, 8, 16, 4)
189+
SVE_VECTOR_TYPE_FLOAT(__clang_svfloat32x4_t, svfloat32x4_t, SveFloat32x4, SveFloat32x4Ty, 4, 32, 4)
190+
SVE_VECTOR_TYPE_FLOAT(__clang_svfloat64x4_t, svfloat64x4_t, SveFloat64x4, SveFloat64x4Ty, 2, 64, 4)
191191

192-
SVE_VECTOR_TYPE_BFLOAT("__clang_svbfloat16x4_t", "svbfloat16x4_t", SveBFloat16x4, SveBFloat16x4Ty, 8, 16, 4)
192+
SVE_VECTOR_TYPE_BFLOAT(__clang_svbfloat16x4_t, svbfloat16x4_t, SveBFloat16x4, SveBFloat16x4Ty, 8, 16, 4)
193193

194-
SVE_VECTOR_TYPE_MFLOAT("__clang_svmfloat8x4_t", "svmfloat8x4_t", SveMFloat8x4, SveMFloat8x4Ty, 16, 8, 4)
194+
SVE_VECTOR_TYPE_MFLOAT(__clang_svmfloat8x4_t, svmfloat8x4_t, SveMFloat8x4, SveMFloat8x4Ty, 16, 8, 4)
195195

196-
SVE_PREDICATE_TYPE_ALL("__SVBool_t", "__SVBool_t", SveBool, SveBoolTy, 16, 1)
197-
SVE_PREDICATE_TYPE_ALL("__clang_svboolx2_t", "svboolx2_t", SveBoolx2, SveBoolx2Ty, 16, 2)
198-
SVE_PREDICATE_TYPE_ALL("__clang_svboolx4_t", "svboolx4_t", SveBoolx4, SveBoolx4Ty, 16, 4)
196+
SVE_PREDICATE_TYPE_ALL(__SVBool_t, __SVBool_t, SveBool, SveBoolTy, 16, 1)
197+
SVE_PREDICATE_TYPE_ALL(__clang_svboolx2_t, svboolx2_t, SveBoolx2, SveBoolx2Ty, 16, 2)
198+
SVE_PREDICATE_TYPE_ALL(__clang_svboolx4_t, svboolx4_t, SveBoolx4, SveBoolx4Ty, 16, 4)
199199

200-
SVE_OPAQUE_TYPE("__SVCount_t", "__SVCount_t", SveCount, SveCountTy)
200+
SVE_OPAQUE_TYPE(__SVCount_t, __SVCount_t, SveCount, SveCountTy)
201201

202-
SVE_SCALAR_TYPE("__mfp8", "__mfp8", MFloat8, MFloat8Ty, 8)
202+
SVE_SCALAR_TYPE(__mfp8, __mfp8, MFloat8, MFloat8Ty, 8)
203203

204204
#undef SVE_VECTOR_TYPE
205205
#undef SVE_VECTOR_TYPE_MFLOAT

clang/lib/AST/ByteCode/EvalEmitter.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
#include "InterpState.h"
1818
#include "PrimType.h"
1919
#include "Source.h"
20-
#include "llvm/Support/Error.h"
2120

2221
namespace clang {
2322
namespace interp {
@@ -42,8 +41,6 @@ class EvalEmitter : public SourceMapper {
4241
/// Clean up all resources.
4342
void cleanup();
4443

45-
InterpState &getState() { return S; }
46-
4744
protected:
4845
EvalEmitter(Context &Ctx, Program &P, State &Parent, InterpStack &Stk);
4946

0 commit comments

Comments
 (0)