Skip to content

Commit 90d0837

Browse files
committed
merge main into amd-staging
2 parents 47cf464 + 6f1b5ed commit 90d0837

File tree

42 files changed

+1277
-503
lines changed

Some content is hidden

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

42 files changed

+1277
-503
lines changed

clang-tools-extra/clang-doc/Representation.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,7 @@ mergeInfos(std::vector<std::unique_ptr<Info>> &Values) {
147147
return llvm::createStringError(llvm::inconvertibleErrorCode(),
148148
"unexpected info type");
149149
}
150+
llvm_unreachable("unhandled enumerator");
150151
}
151152

152153
bool CommentInfo::operator==(const CommentInfo &Other) const {

clang-tools-extra/clang-doc/Serialize.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -392,6 +392,7 @@ std::string serialize(std::unique_ptr<Info> &I) {
392392
case InfoType::IT_default:
393393
return "";
394394
}
395+
llvm_unreachable("unhandled enumerator");
395396
}
396397

397398
static void parseFullComment(const FullComment *C, CommentInfo &CI) {

clang/docs/ReleaseNotes.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -720,6 +720,7 @@ Bug Fixes in This Version
720720
- Fixed a bug with constexpr evaluation for structs containing unions in case of C++ modules. (#GH143168)
721721
- Fixed incorrect token location when emitting diagnostics for tokens expanded from macros. (#GH143216)
722722
- Fixed an infinite recursion when checking constexpr destructors. (#GH141789)
723+
- Fixed a crash when a malformed using declaration appears in a ``constexpr`` function. (#GH144264)
723724

724725
Bug Fixes to Compiler Builtins
725726
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

clang/include/clang/Basic/DiagnosticGroups.td

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -815,19 +815,22 @@ changes to one object won't affect the others, the object's initializer will run
815815
once per copy, etc.
816816

817817
Specifically, this warning fires when it detects an object which:
818-
1. Is defined as ``inline`` in a header file (so it might get compiled into multiple libaries), and
819-
2. Has external linkage (otherwise it's supposed to be duplicated), and
820-
3. Has hidden visibility (posix) or lacks a dllimport/dllexport attribute (windows).
818+
819+
#. Is defined as ``inline`` in a header file (so it might get compiled into multiple libaries), and
820+
#. Has external linkage (otherwise it's supposed to be duplicated), and
821+
#. Has hidden visibility (posix) or lacks a dllimport/dllexport attribute (windows).
821822

822823
As well as one of the following:
823-
1. The object is mutable, or
824-
2. The object's initializer definitely has side effects.
824+
825+
#. The object is mutable, or
826+
#. The object's initializer definitely has side effects.
825827

826828
The warning can be resolved by removing one of the conditions above. In rough
827829
order of preference, this may be done by:
828-
1. Marking the object ``const`` (if possible)
829-
2. Moving the object's definition to a source file
830-
3. Making the object visible using ``__attribute((visibility("default")))``,
830+
831+
#. Marking the object ``const`` (if possible)
832+
#. Moving the object's definition to a source file
833+
#. Making the object visible using ``__attribute((visibility("default")))``,
831834
``__declspec(dllimport)``, or ``__declspec(dllexport)``.
832835

833836
When annotating an object with ``__declspec(dllimport)`` or ``__declspec(dllexport)``,

clang/lib/Parse/ParseDeclCXX.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -760,6 +760,10 @@ Parser::DeclGroupPtrTy Parser::ParseUsingDeclaration(
760760

761761
Decl *AD = ParseAliasDeclarationAfterDeclarator(
762762
TemplateInfo, UsingLoc, D, DeclEnd, AS, Attrs, &DeclFromDeclSpec);
763+
764+
if (!AD)
765+
return nullptr;
766+
763767
return Actions.ConvertDeclToDeclGroup(AD, DeclFromDeclSpec);
764768
}
765769

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
// RUN: %clang_cc1 -fsyntax-only -verify %s
2+
3+
// issue144264
4+
constexpr void test()
5+
{
6+
using TT = struct T[;
7+
// expected-error@-1 {{expected expression}}
8+
}

clang/utils/TableGen/ClangAttrEmitter.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3739,7 +3739,8 @@ static void GenerateHasAttrSpellingStringSwitch(
37393739
: '(' + itostr(Version) + ')';
37403740

37413741
if (Scope.empty() || Scope == Spelling.nameSpace()) {
3742-
if (TestStringMap.contains(Spelling.name()))
3742+
if (TestStringMap.contains(Spelling.name()) &&
3743+
TestStringMap[Spelling.name()] != TestStr)
37433744
TestStringMap[Spelling.name()] += " || " + TestStr;
37443745
else
37453746
TestStringMap[Spelling.name()] = TestStr;

flang/test/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ if (NOT FLANG_STANDALONE_BUILD)
7373
not
7474
llvm-dis
7575
llvm-objdump
76+
llvm-profdata
7677
llvm-readobj
7778
split-file
7879
)

llvm/include/llvm/CodeGen/BasicTTIImpl.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -478,12 +478,12 @@ class BasicTTIImplBase : public TargetTransformInfoImplCRTPBase<T> {
478478
}
479479

480480
bool isIndexedLoadLegal(TTI::MemIndexedMode M, Type *Ty) const override {
481-
EVT VT = getTLI()->getValueType(DL, Ty);
481+
EVT VT = getTLI()->getValueType(DL, Ty, /*AllowUnknown=*/true);
482482
return getTLI()->isIndexedLoadLegal(getISDIndexedMode(M), VT);
483483
}
484484

485485
bool isIndexedStoreLegal(TTI::MemIndexedMode M, Type *Ty) const override {
486-
EVT VT = getTLI()->getValueType(DL, Ty);
486+
EVT VT = getTLI()->getValueType(DL, Ty, /*AllowUnknown=*/true);
487487
return getTLI()->isIndexedStoreLegal(getISDIndexedMode(M), VT);
488488
}
489489

llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -396,6 +396,8 @@ namespace {
396396
bool PromoteLoad(SDValue Op);
397397

398398
SDValue foldShiftToAvg(SDNode *N);
399+
// Fold `a bitwiseop (~b +/- c)` -> `a bitwiseop ~(b -/+ c)`
400+
SDValue foldBitwiseOpWithNeg(SDNode *N, const SDLoc &DL, EVT VT);
399401

400402
SDValue combineMinNumMaxNum(const SDLoc &DL, EVT VT, SDValue LHS,
401403
SDValue RHS, SDValue True, SDValue False,
@@ -7541,6 +7543,12 @@ SDValue DAGCombiner::visitAND(SDNode *N) {
75417543
return DAG.getNode(ISD::AND, DL, VT, X,
75427544
DAG.getNOT(DL, DAG.getNode(Opc, DL, VT, Y, Z), VT));
75437545

7546+
// Fold (and X, (add (not Y), Z)) -> (and X, (not (sub Y, Z)))
7547+
// Fold (and X, (sub (not Y), Z)) -> (and X, (not (add Y, Z)))
7548+
if (TLI.hasAndNot(SDValue(N, 0)))
7549+
if (SDValue Folded = foldBitwiseOpWithNeg(N, DL, VT))
7550+
return Folded;
7551+
75447552
// Fold (and (srl X, C), 1) -> (srl X, BW-1) for signbit extraction
75457553
// If we are shifting down an extended sign bit, see if we can simplify
75467554
// this to shifting the MSB directly to expose further simplifications.
@@ -11652,6 +11660,22 @@ SDValue DAGCombiner::foldShiftToAvg(SDNode *N) {
1165211660
return DAG.getNode(FloorISD, SDLoc(N), N->getValueType(0), {A, B});
1165311661
}
1165411662

11663+
SDValue DAGCombiner::foldBitwiseOpWithNeg(SDNode *N, const SDLoc &DL, EVT VT) {
11664+
unsigned Opc = N->getOpcode();
11665+
SDValue X, Y, Z;
11666+
if (sd_match(
11667+
N, m_BitwiseLogic(m_Value(X), m_Add(m_Not(m_Value(Y)), m_Value(Z)))))
11668+
return DAG.getNode(Opc, DL, VT, X,
11669+
DAG.getNOT(DL, DAG.getNode(ISD::SUB, DL, VT, Y, Z), VT));
11670+
11671+
if (sd_match(N, m_BitwiseLogic(m_Value(X), m_Sub(m_OneUse(m_Not(m_Value(Y))),
11672+
m_Value(Z)))))
11673+
return DAG.getNode(Opc, DL, VT, X,
11674+
DAG.getNOT(DL, DAG.getNode(ISD::ADD, DL, VT, Y, Z), VT));
11675+
11676+
return SDValue();
11677+
}
11678+
1165511679
/// Generate Min/Max node
1165611680
SDValue DAGCombiner::combineMinNumMaxNum(const SDLoc &DL, EVT VT, SDValue LHS,
1165711681
SDValue RHS, SDValue True,

llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.cpp

Lines changed: 0 additions & 138 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
#include "llvm/MC/MCContext.h"
1616
#include "llvm/MC/MCExpr.h"
1717
#include "llvm/MC/MCStreamer.h"
18-
#include "llvm/MC/MCValue.h"
1918
#include "llvm/Support/CommandLine.h"
2019
#include "llvm/TargetParser/Triple.h"
2120
using namespace llvm;
@@ -54,80 +53,6 @@ const MCAsmInfo::AtSpecifier MachOAtSpecifiers[] = {
5453
{AArch64MCExpr::M_TLVPPAGEOFF, "TLVPPAGEOFF"},
5554
};
5655

57-
StringRef AArch64::getSpecifierName(const MCSpecifierExpr &Expr) {
58-
// clang-format off
59-
switch (static_cast<uint32_t>(Expr.getSpecifier())) {
60-
case AArch64MCExpr::VK_CALL: return "";
61-
case AArch64MCExpr::VK_LO12: return ":lo12:";
62-
case AArch64MCExpr::VK_ABS_G3: return ":abs_g3:";
63-
case AArch64MCExpr::VK_ABS_G2: return ":abs_g2:";
64-
case AArch64MCExpr::VK_ABS_G2_S: return ":abs_g2_s:";
65-
case AArch64MCExpr::VK_ABS_G2_NC: return ":abs_g2_nc:";
66-
case AArch64MCExpr::VK_ABS_G1: return ":abs_g1:";
67-
case AArch64MCExpr::VK_ABS_G1_S: return ":abs_g1_s:";
68-
case AArch64MCExpr::VK_ABS_G1_NC: return ":abs_g1_nc:";
69-
case AArch64MCExpr::VK_ABS_G0: return ":abs_g0:";
70-
case AArch64MCExpr::VK_ABS_G0_S: return ":abs_g0_s:";
71-
case AArch64MCExpr::VK_ABS_G0_NC: return ":abs_g0_nc:";
72-
case AArch64MCExpr::VK_PREL_G3: return ":prel_g3:";
73-
case AArch64MCExpr::VK_PREL_G2: return ":prel_g2:";
74-
case AArch64MCExpr::VK_PREL_G2_NC: return ":prel_g2_nc:";
75-
case AArch64MCExpr::VK_PREL_G1: return ":prel_g1:";
76-
case AArch64MCExpr::VK_PREL_G1_NC: return ":prel_g1_nc:";
77-
case AArch64MCExpr::VK_PREL_G0: return ":prel_g0:";
78-
case AArch64MCExpr::VK_PREL_G0_NC: return ":prel_g0_nc:";
79-
case AArch64MCExpr::VK_DTPREL_G2: return ":dtprel_g2:";
80-
case AArch64MCExpr::VK_DTPREL_G1: return ":dtprel_g1:";
81-
case AArch64MCExpr::VK_DTPREL_G1_NC: return ":dtprel_g1_nc:";
82-
case AArch64MCExpr::VK_DTPREL_G0: return ":dtprel_g0:";
83-
case AArch64MCExpr::VK_DTPREL_G0_NC: return ":dtprel_g0_nc:";
84-
case AArch64MCExpr::VK_DTPREL_HI12: return ":dtprel_hi12:";
85-
case AArch64MCExpr::VK_DTPREL_LO12: return ":dtprel_lo12:";
86-
case AArch64MCExpr::VK_DTPREL_LO12_NC: return ":dtprel_lo12_nc:";
87-
case AArch64MCExpr::VK_TPREL_G2: return ":tprel_g2:";
88-
case AArch64MCExpr::VK_TPREL_G1: return ":tprel_g1:";
89-
case AArch64MCExpr::VK_TPREL_G1_NC: return ":tprel_g1_nc:";
90-
case AArch64MCExpr::VK_TPREL_G0: return ":tprel_g0:";
91-
case AArch64MCExpr::VK_TPREL_G0_NC: return ":tprel_g0_nc:";
92-
case AArch64MCExpr::VK_TPREL_HI12: return ":tprel_hi12:";
93-
case AArch64MCExpr::VK_TPREL_LO12: return ":tprel_lo12:";
94-
case AArch64MCExpr::VK_TPREL_LO12_NC: return ":tprel_lo12_nc:";
95-
case AArch64MCExpr::VK_TLSDESC_LO12: return ":tlsdesc_lo12:";
96-
case AArch64MCExpr::VK_TLSDESC_AUTH_LO12: return ":tlsdesc_auth_lo12:";
97-
case AArch64MCExpr::VK_ABS_PAGE: return "";
98-
case AArch64MCExpr::VK_ABS_PAGE_NC: return ":pg_hi21_nc:";
99-
case AArch64MCExpr::VK_GOT: return ":got:";
100-
case AArch64MCExpr::VK_GOT_PAGE: return ":got:";
101-
case AArch64MCExpr::VK_GOT_PAGE_LO15: return ":gotpage_lo15:";
102-
case AArch64MCExpr::VK_GOT_LO12: return ":got_lo12:";
103-
case AArch64MCExpr::VK_GOTTPREL: return ":gottprel:";
104-
case AArch64MCExpr::VK_GOTTPREL_PAGE: return ":gottprel:";
105-
case AArch64MCExpr::VK_GOTTPREL_LO12_NC: return ":gottprel_lo12:";
106-
case AArch64MCExpr::VK_GOTTPREL_G1: return ":gottprel_g1:";
107-
case AArch64MCExpr::VK_GOTTPREL_G0_NC: return ":gottprel_g0_nc:";
108-
case AArch64MCExpr::VK_TLSDESC: return "";
109-
case AArch64MCExpr::VK_TLSDESC_PAGE: return ":tlsdesc:";
110-
case AArch64MCExpr::VK_TLSDESC_AUTH: return "";
111-
case AArch64MCExpr::VK_TLSDESC_AUTH_PAGE: return ":tlsdesc_auth:";
112-
case AArch64MCExpr::VK_SECREL_LO12: return ":secrel_lo12:";
113-
case AArch64MCExpr::VK_SECREL_HI12: return ":secrel_hi12:";
114-
case AArch64MCExpr::VK_GOT_AUTH: return ":got_auth:";
115-
case AArch64MCExpr::VK_GOT_AUTH_PAGE: return ":got_auth:";
116-
case AArch64MCExpr::VK_GOT_AUTH_LO12: return ":got_auth_lo12:";
117-
default:
118-
llvm_unreachable("Invalid relocation specifier");
119-
}
120-
// clang-format on
121-
}
122-
123-
static bool evaluate(const MCSpecifierExpr &Expr, MCValue &Res,
124-
const MCAssembler *Asm) {
125-
if (!Expr.getSubExpr()->evaluateAsRelocatable(Res, Asm))
126-
return false;
127-
Res.setSpecifier(Expr.getSpecifier());
128-
return true;
129-
}
130-
13156
AArch64MCAsmInfoDarwin::AArch64MCAsmInfoDarwin(bool IsILP32) {
13257
// We prefer NEON instructions to be printed in the short, Apple-specific
13358
// form when targeting Darwin.
@@ -166,34 +91,6 @@ const MCExpr *AArch64MCAsmInfoDarwin::getExprForPersonalitySymbol(
16691
return MCBinaryExpr::createSub(Res, PC, Context);
16792
}
16893

169-
void AArch64AuthMCExpr::print(raw_ostream &OS, const MCAsmInfo *MAI) const {
170-
bool WrapSubExprInParens = !isa<MCSymbolRefExpr>(getSubExpr());
171-
if (WrapSubExprInParens)
172-
OS << '(';
173-
getSubExpr()->print(OS, MAI);
174-
if (WrapSubExprInParens)
175-
OS << ')';
176-
177-
OS << "@AUTH(" << AArch64PACKeyIDToString(Key) << ',' << Discriminator;
178-
if (hasAddressDiversity())
179-
OS << ",addr";
180-
OS << ')';
181-
}
182-
183-
void AArch64MCAsmInfoDarwin::printSpecifierExpr(
184-
raw_ostream &OS, const MCSpecifierExpr &Expr) const {
185-
if (auto *AE = dyn_cast<AArch64AuthMCExpr>(&Expr))
186-
return AE->print(OS, this);
187-
// FIXME: tryParseAdrLabel should not use VK_ABS for Mach-O
188-
assert(Expr.getSpecifier() == AArch64MCExpr::VK_ABS);
189-
printExpr(OS, *Expr.getSubExpr());
190-
}
191-
192-
bool AArch64MCAsmInfoDarwin::evaluateAsRelocatableImpl(
193-
const MCSpecifierExpr &Expr, MCValue &Res, const MCAssembler *Asm) const {
194-
return evaluate(Expr, Res, Asm);
195-
}
196-
19794
AArch64MCAsmInfoELF::AArch64MCAsmInfoELF(const Triple &T) {
19895
if (T.getArch() == Triple::aarch64_be)
19996
IsLittleEndian = false;
@@ -230,19 +127,6 @@ AArch64MCAsmInfoELF::AArch64MCAsmInfoELF(const Triple &T) {
230127
initializeVariantKinds(ELFAtSpecifiers);
231128
}
232129

233-
void AArch64MCAsmInfoELF::printSpecifierExpr(
234-
raw_ostream &OS, const MCSpecifierExpr &Expr) const {
235-
if (auto *AE = dyn_cast<AArch64AuthMCExpr>(&Expr))
236-
return AE->print(OS, this);
237-
OS << AArch64::getSpecifierName(Expr);
238-
printExpr(OS, *Expr.getSubExpr());
239-
}
240-
241-
bool AArch64MCAsmInfoELF::evaluateAsRelocatableImpl(
242-
const MCSpecifierExpr &Expr, MCValue &Res, const MCAssembler *Asm) const {
243-
return evaluate(Expr, Res, Asm);
244-
}
245-
246130
AArch64MCAsmInfoMicrosoftCOFF::AArch64MCAsmInfoMicrosoftCOFF() {
247131
PrivateGlobalPrefix = ".L";
248132
PrivateLabelPrefix = ".L";
@@ -262,17 +146,6 @@ AArch64MCAsmInfoMicrosoftCOFF::AArch64MCAsmInfoMicrosoftCOFF() {
262146
initializeVariantKinds(COFFAtSpecifiers);
263147
}
264148

265-
void AArch64MCAsmInfoMicrosoftCOFF::printSpecifierExpr(
266-
raw_ostream &OS, const MCSpecifierExpr &Expr) const {
267-
OS << AArch64::getSpecifierName(Expr);
268-
printExpr(OS, *Expr.getSubExpr());
269-
}
270-
271-
bool AArch64MCAsmInfoMicrosoftCOFF::evaluateAsRelocatableImpl(
272-
const MCSpecifierExpr &Expr, MCValue &Res, const MCAssembler *Asm) const {
273-
return evaluate(Expr, Res, Asm);
274-
}
275-
276149
AArch64MCAsmInfoGNUCOFF::AArch64MCAsmInfoGNUCOFF() {
277150
PrivateGlobalPrefix = ".L";
278151
PrivateLabelPrefix = ".L";
@@ -291,14 +164,3 @@ AArch64MCAsmInfoGNUCOFF::AArch64MCAsmInfoGNUCOFF() {
291164

292165
initializeVariantKinds(COFFAtSpecifiers);
293166
}
294-
295-
void AArch64MCAsmInfoGNUCOFF::printSpecifierExpr(
296-
raw_ostream &OS, const MCSpecifierExpr &Expr) const {
297-
OS << AArch64::getSpecifierName(Expr);
298-
printExpr(OS, *Expr.getSubExpr());
299-
}
300-
301-
bool AArch64MCAsmInfoGNUCOFF::evaluateAsRelocatableImpl(
302-
const MCSpecifierExpr &Expr, MCValue &Res, const MCAssembler *Asm) const {
303-
return evaluate(Expr, Res, Asm);
304-
}

llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.h

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
#ifndef LLVM_LIB_TARGET_AARCH64_MCTARGETDESC_AARCH64MCASMINFO_H
1414
#define LLVM_LIB_TARGET_AARCH64_MCTARGETDESC_AARCH64MCASMINFO_H
1515

16-
#include "MCTargetDesc/AArch64MCExpr.h"
1716
#include "llvm/MC/MCAsmInfoCOFF.h"
1817
#include "llvm/MC/MCAsmInfoDarwin.h"
1918
#include "llvm/MC/MCAsmInfoELF.h"
@@ -27,42 +26,20 @@ struct AArch64MCAsmInfoDarwin : public MCAsmInfoDarwin {
2726
const MCExpr *
2827
getExprForPersonalitySymbol(const MCSymbol *Sym, unsigned Encoding,
2928
MCStreamer &Streamer) const override;
30-
void printSpecifierExpr(raw_ostream &OS,
31-
const MCSpecifierExpr &Expr) const override;
32-
bool evaluateAsRelocatableImpl(const MCSpecifierExpr &Expr, MCValue &Res,
33-
const MCAssembler *Asm) const override;
3429
};
3530

3631
struct AArch64MCAsmInfoELF : public MCAsmInfoELF {
3732
explicit AArch64MCAsmInfoELF(const Triple &T);
38-
void printSpecifierExpr(raw_ostream &OS,
39-
const MCSpecifierExpr &Expr) const override;
40-
bool evaluateAsRelocatableImpl(const MCSpecifierExpr &Expr, MCValue &Res,
41-
const MCAssembler *Asm) const override;
4233
};
4334

4435
struct AArch64MCAsmInfoMicrosoftCOFF : public MCAsmInfoMicrosoft {
4536
explicit AArch64MCAsmInfoMicrosoftCOFF();
46-
void printSpecifierExpr(raw_ostream &OS,
47-
const MCSpecifierExpr &Expr) const override;
48-
bool evaluateAsRelocatableImpl(const MCSpecifierExpr &Expr, MCValue &Res,
49-
const MCAssembler *Asm) const override;
5037
};
5138

5239
struct AArch64MCAsmInfoGNUCOFF : public MCAsmInfoGNUCOFF {
5340
explicit AArch64MCAsmInfoGNUCOFF();
54-
void printSpecifierExpr(raw_ostream &OS,
55-
const MCSpecifierExpr &Expr) const override;
56-
bool evaluateAsRelocatableImpl(const MCSpecifierExpr &Expr, MCValue &Res,
57-
const MCAssembler *Asm) const override;
5841
};
5942

60-
namespace AArch64 {
61-
/// Return the string representation of the ELF relocation specifier
62-
/// (e.g. ":got:", ":lo12:").
63-
StringRef getSpecifierName(const MCSpecifierExpr &Expr);
64-
} // namespace AArch64
65-
6643
} // namespace llvm
6744

6845
#endif

0 commit comments

Comments
 (0)