Skip to content

Commit 87c4793

Browse files
committed
Merge commit '2f005df066e07d93e3d6aa04748c158f883197b7' into llvmspirv_pulldown
2 parents 82472e4 + 2f005df commit 87c4793

File tree

273 files changed

+4690
-5751
lines changed

Some content is hidden

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

273 files changed

+4690
-5751
lines changed

.github/new-prs-labeler.yml

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -313,13 +313,30 @@ testing-tools:
313313
- llvm/utils/update*_test_checks.py
314314

315315
debuginfo:
316-
- clang/lib/CodeGen/CGDebugInfo.cpp
316+
- clang/lib/CodeGen/CGDebugInfo.*
317317
- llvm/include/llvm/BinaryFormat/Dwarf.*
318+
- llvm/include/llvm/CodeGen/*Debug*.*
318319
- llvm/include/llvm/DebugInfo/**
319-
- llvm/include/llvm/IR/Debug*.h
320-
- llvm/lib/CodeGen/AsmPrinter/**
320+
- llvm/include/llvm/Debuginfod/**
321+
- llvm/include/llvm/Frontend/Debug/**
322+
- llvm/include/llvm/IR/Debug*.*
323+
- llvm/include/llvm/Object/*Debug*.*
324+
- llvm/include/llvm/ObjectYAML/*Debug*.*
325+
- llvm/include/llvm/Transforms/Utils/*Debug*.*
326+
- llvm/include/llvm-c/DebugInfo.h
327+
- llvm/lib/BinaryFormat/Dwarf.cpp
328+
- llvm/lib/CodeGen/AsmPrinter/*Debug*.*
329+
- llvm/lib/CodeGen/AsmPrinter/Dwarf*.*
330+
- llvm/lib/CodeGen/AsmPrinter/DIE*.*
331+
- llvm/lib/CodeGen/LiveDebugValues/**
332+
- llvm/lib/CodeGen/*Debug*.*
333+
- llvm/lib/CodeGen/DwarfEHPrepare.cpp
321334
- llvm/lib/DebugInfo/**
335+
- llvm/lib/Debuginfod/**
336+
- llvm/lib/DWARFLinkerParallel/**
322337
- llvm/lib/IR/Debug*.cpp
338+
- llvm/lib/MC/MCDwarf.cpp
339+
- llvm/lib/Transforms/Utils/*Debug*.*
323340
- llvm/test/DebugInfo/**
324341
- llvm/test/tools/dsymutil/**
325342
- llvm/test/tools/llvm-debuginfo-analyzer/**

clang/include/clang/Basic/arm_sme.td

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -20,29 +20,29 @@ include "arm_sve_sme_incl.td"
2020

2121
multiclass ZALoad<string n_suffix, string t, string i_prefix, list<ImmCheck> ch> {
2222
let TargetGuard = "sme" in {
23-
def NAME # _H : MInst<"svld1_hor_" # n_suffix, "vimiPQ", t,
23+
def NAME # _H : MInst<"svld1_hor_" # n_suffix, "vimPQ", t,
2424
[IsLoad, IsOverloadNone, IsStreaming, IsSharedZA],
2525
MemEltTyDefault, i_prefix # "_horiz", ch>;
2626

27-
def NAME # _H_VNUM : MInst<"svld1_hor_vnum_" # n_suffix, "vimiPQl", t,
27+
def NAME # _H_VNUM : MInst<"svld1_hor_vnum_" # n_suffix, "vimPQl", t,
2828
[IsLoad, IsOverloadNone, IsStreaming, IsSharedZA],
2929
MemEltTyDefault, i_prefix # "_horiz", ch>;
3030

31-
def NAME # _V : MInst<"svld1_ver_" # n_suffix, "vimiPQ", t,
31+
def NAME # _V : MInst<"svld1_ver_" # n_suffix, "vimPQ", t,
3232
[IsLoad, IsOverloadNone, IsStreaming, IsSharedZA],
3333
MemEltTyDefault, i_prefix # "_vert", ch>;
3434

35-
def NAME # _V_VNUM : MInst<"svld1_ver_vnum_" # n_suffix, "vimiPQl", t,
35+
def NAME # _V_VNUM : MInst<"svld1_ver_vnum_" # n_suffix, "vimPQl", t,
3636
[IsLoad, IsOverloadNone, IsStreaming, IsSharedZA],
3737
MemEltTyDefault, i_prefix # "_vert", ch>;
3838
}
3939
}
4040

41-
defm SVLD1_ZA8 : ZALoad<"za8", "c", "aarch64_sme_ld1b", [ImmCheck<0, ImmCheck0_0>, ImmCheck<2, ImmCheck0_15>]>;
42-
defm SVLD1_ZA16 : ZALoad<"za16", "s", "aarch64_sme_ld1h", [ImmCheck<0, ImmCheck0_1>, ImmCheck<2, ImmCheck0_7>]>;
43-
defm SVLD1_ZA32 : ZALoad<"za32", "i", "aarch64_sme_ld1w", [ImmCheck<0, ImmCheck0_3>, ImmCheck<2, ImmCheck0_3>]>;
44-
defm SVLD1_ZA64 : ZALoad<"za64", "l", "aarch64_sme_ld1d", [ImmCheck<0, ImmCheck0_7>, ImmCheck<2, ImmCheck0_1>]>;
45-
defm SVLD1_ZA128 : ZALoad<"za128", "q", "aarch64_sme_ld1q", [ImmCheck<0, ImmCheck0_15>, ImmCheck<2, ImmCheck0_0>]>;
41+
defm SVLD1_ZA8 : ZALoad<"za8", "c", "aarch64_sme_ld1b", [ImmCheck<0, ImmCheck0_0>]>;
42+
defm SVLD1_ZA16 : ZALoad<"za16", "s", "aarch64_sme_ld1h", [ImmCheck<0, ImmCheck0_1>]>;
43+
defm SVLD1_ZA32 : ZALoad<"za32", "i", "aarch64_sme_ld1w", [ImmCheck<0, ImmCheck0_3>]>;
44+
defm SVLD1_ZA64 : ZALoad<"za64", "l", "aarch64_sme_ld1d", [ImmCheck<0, ImmCheck0_7>]>;
45+
defm SVLD1_ZA128 : ZALoad<"za128", "q", "aarch64_sme_ld1q", [ImmCheck<0, ImmCheck0_15>]>;
4646

4747
def SVLDR_VNUM_ZA : MInst<"svldr_vnum_za", "vmQi", "",
4848
[IsOverloadNone, IsStreamingCompatible, IsSharedZA],
@@ -58,29 +58,29 @@ def SVLDR_ZA : MInst<"svldr_za", "vmQ", "",
5858

5959
multiclass ZAStore<string n_suffix, string t, string i_prefix, list<ImmCheck> ch> {
6060
let TargetGuard = "sme" in {
61-
def NAME # _H : MInst<"svst1_hor_" # n_suffix, "vimiP%", t,
61+
def NAME # _H : MInst<"svst1_hor_" # n_suffix, "vimP%", t,
6262
[IsStore, IsOverloadNone, IsStreaming, IsSharedZA, IsPreservesZA],
6363
MemEltTyDefault, i_prefix # "_horiz", ch>;
6464

65-
def NAME # _H_VNUM : MInst<"svst1_hor_vnum_" # n_suffix, "vimiP%l", t,
65+
def NAME # _H_VNUM : MInst<"svst1_hor_vnum_" # n_suffix, "vimP%l", t,
6666
[IsStore, IsOverloadNone, IsStreaming, IsSharedZA, IsPreservesZA],
6767
MemEltTyDefault, i_prefix # "_horiz", ch>;
6868

69-
def NAME # _V : MInst<"svst1_ver_" # n_suffix, "vimiP%", t,
69+
def NAME # _V : MInst<"svst1_ver_" # n_suffix, "vimP%", t,
7070
[IsStore, IsOverloadNone, IsStreaming, IsSharedZA, IsPreservesZA],
7171
MemEltTyDefault, i_prefix # "_vert", ch>;
7272

73-
def NAME # _V_VNUM : MInst<"svst1_ver_vnum_" # n_suffix, "vimiP%l", t,
73+
def NAME # _V_VNUM : MInst<"svst1_ver_vnum_" # n_suffix, "vimP%l", t,
7474
[IsStore, IsOverloadNone, IsStreaming, IsSharedZA, IsPreservesZA],
7575
MemEltTyDefault, i_prefix # "_vert", ch>;
7676
}
7777
}
7878

79-
defm SVST1_ZA8 : ZAStore<"za8", "c", "aarch64_sme_st1b", [ImmCheck<0, ImmCheck0_0>, ImmCheck<2, ImmCheck0_15>]>;
80-
defm SVST1_ZA16 : ZAStore<"za16", "s", "aarch64_sme_st1h", [ImmCheck<0, ImmCheck0_1>, ImmCheck<2, ImmCheck0_7>]>;
81-
defm SVST1_ZA32 : ZAStore<"za32", "i", "aarch64_sme_st1w", [ImmCheck<0, ImmCheck0_3>, ImmCheck<2, ImmCheck0_3>]>;
82-
defm SVST1_ZA64 : ZAStore<"za64", "l", "aarch64_sme_st1d", [ImmCheck<0, ImmCheck0_7>, ImmCheck<2, ImmCheck0_1>]>;
83-
defm SVST1_ZA128 : ZAStore<"za128", "q", "aarch64_sme_st1q", [ImmCheck<0, ImmCheck0_15>, ImmCheck<2, ImmCheck0_0>]>;
79+
defm SVST1_ZA8 : ZAStore<"za8", "c", "aarch64_sme_st1b", [ImmCheck<0, ImmCheck0_0>]>;
80+
defm SVST1_ZA16 : ZAStore<"za16", "s", "aarch64_sme_st1h", [ImmCheck<0, ImmCheck0_1>]>;
81+
defm SVST1_ZA32 : ZAStore<"za32", "i", "aarch64_sme_st1w", [ImmCheck<0, ImmCheck0_3>]>;
82+
defm SVST1_ZA64 : ZAStore<"za64", "l", "aarch64_sme_st1d", [ImmCheck<0, ImmCheck0_7>]>;
83+
defm SVST1_ZA128 : ZAStore<"za128", "q", "aarch64_sme_st1q", [ImmCheck<0, ImmCheck0_15>]>;
8484

8585
def SVSTR_VNUM_ZA : MInst<"svstr_vnum_za", "vm%i", "",
8686
[IsOverloadNone, IsStreamingCompatible, IsSharedZA, IsPreservesZA],

clang/lib/AST/Decl.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ void PrettyDeclStackTraceEntry::print(raw_ostream &OS) const {
8787
}
8888
OS << Message;
8989

90-
if (auto *ND = dyn_cast_or_null<NamedDecl>(TheDecl)) {
90+
if (auto *ND = dyn_cast_if_present<NamedDecl>(TheDecl)) {
9191
OS << " '";
9292
ND->getNameForDiagnostic(OS, Context.getPrintingPolicy(), true);
9393
OS << "'";
@@ -1952,7 +1952,7 @@ bool NamedDecl::isCXXInstanceMember() const {
19521952

19531953
if (isa<FieldDecl>(D) || isa<IndirectFieldDecl>(D) || isa<MSPropertyDecl>(D))
19541954
return true;
1955-
if (const auto *MD = dyn_cast_or_null<CXXMethodDecl>(D->getAsFunction()))
1955+
if (const auto *MD = dyn_cast_if_present<CXXMethodDecl>(D->getAsFunction()))
19561956
return MD->isInstance();
19571957
return false;
19581958
}
@@ -2948,7 +2948,7 @@ Expr *ParmVarDecl::getDefaultArg() {
29482948
"Default argument is not yet instantiated!");
29492949

29502950
Expr *Arg = getInit();
2951-
if (auto *E = dyn_cast_or_null<FullExpr>(Arg))
2951+
if (auto *E = dyn_cast_if_present<FullExpr>(Arg))
29522952
return E->getSubExpr();
29532953

29542954
return Arg;
@@ -2987,7 +2987,7 @@ void ParmVarDecl::setUninstantiatedDefaultArg(Expr *arg) {
29872987
Expr *ParmVarDecl::getUninstantiatedDefaultArg() {
29882988
assert(hasUninstantiatedDefaultArg() &&
29892989
"Wrong kind of initialization expression!");
2990-
return cast_or_null<Expr>(Init.get<Stmt *>());
2990+
return cast_if_present<Expr>(Init.get<Stmt *>());
29912991
}
29922992

29932993
bool ParmVarDecl::hasDefaultArg() const {
@@ -3954,7 +3954,7 @@ FunctionDecl::setInstantiationOfMemberFunction(ASTContext &C,
39543954
}
39553955

39563956
FunctionTemplateDecl *FunctionDecl::getDescribedFunctionTemplate() const {
3957-
return dyn_cast_or_null<FunctionTemplateDecl>(
3957+
return dyn_cast_if_present<FunctionTemplateDecl>(
39583958
TemplateOrSpecialization.dyn_cast<NamedDecl *>());
39593959
}
39603960

@@ -3972,7 +3972,7 @@ void FunctionDecl::setInstantiatedFromDecl(FunctionDecl *FD) {
39723972
}
39733973

39743974
FunctionDecl *FunctionDecl::getInstantiatedFromDecl() const {
3975-
return dyn_cast_or_null<FunctionDecl>(
3975+
return dyn_cast_if_present<FunctionDecl>(
39763976
TemplateOrSpecialization.dyn_cast<NamedDecl *>());
39773977
}
39783978

@@ -4456,7 +4456,7 @@ Expr *FieldDecl::getInClassInitializer() const {
44564456
return nullptr;
44574457

44584458
LazyDeclStmtPtr InitPtr = BitField ? InitAndBitWidth->Init : Init;
4459-
return cast_or_null<Expr>(
4459+
return cast_if_present<Expr>(
44604460
InitPtr.isOffset() ? InitPtr.get(getASTContext().getExternalSource())
44614461
: InitPtr.get(nullptr));
44624462
}

clang/lib/AST/Interp/ByteCodeExprGen.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2394,9 +2394,7 @@ bool ByteCodeExprGen<Emitter>::VisitUnaryOperator(const UnaryOperator *E) {
23942394
case UO_Real: // __real x
23952395
case UO_Imag: // __imag x
23962396
case UO_Extension:
2397-
if (DiscardResult)
2398-
return this->discard(SubExpr);
2399-
return this->visit(SubExpr);
2397+
return this->delegate(SubExpr);
24002398
case UO_Coawait:
24012399
assert(false && "Unhandled opcode");
24022400
}

clang/lib/CodeGen/BackendUtil.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ using namespace llvm;
103103

104104
namespace llvm {
105105
extern cl::opt<bool> DebugInfoCorrelate;
106+
extern cl::opt<bool> PrintPipelinePasses;
106107

107108
// Experiment to move sanitizers earlier.
108109
static cl::opt<bool> ClSanitizeOnOptimizerEarlyEP(
@@ -1179,6 +1180,17 @@ void EmitAssemblyHelper::RunOptimizationPipeline(
11791180
TheModule->addModuleFlag(Module::Error, "UnifiedLTO", uint32_t(1));
11801181
}
11811182

1183+
// Print a textual, '-passes=' compatible, representation of pipeline if
1184+
// requested.
1185+
if (PrintPipelinePasses) {
1186+
MPM.printPipeline(outs(), [&PIC](StringRef ClassName) {
1187+
auto PassName = PIC.getPassNameForClassName(ClassName);
1188+
return PassName.empty() ? ClassName : PassName;
1189+
});
1190+
outs() << "\n";
1191+
return;
1192+
}
1193+
11821194
// Now that we have all of the passes ready, run them.
11831195
{
11841196
PrettyStackTraceString CrashInfo("Optimizer");
@@ -1216,6 +1228,13 @@ void EmitAssemblyHelper::RunCodegenPipeline(
12161228
return;
12171229
}
12181230

1231+
// If -print-pipeline-passes is requested, don't run the legacy pass manager.
1232+
// FIXME: when codegen is switched to use the new pass manager, it should also
1233+
// emit pass names here.
1234+
if (PrintPipelinePasses) {
1235+
return;
1236+
}
1237+
12191238
{
12201239
PrettyStackTraceString CrashInfo("Code generation");
12211240
llvm::TimeTraceScope TimeScope("CodeGenPasses");

clang/lib/CodeGen/CGBuiltin.cpp

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9675,29 +9675,29 @@ Value *CodeGenFunction::EmitTileslice(Value *Offset, Value *Base) {
96759675
Value *CodeGenFunction::EmitSMELd1St1(const SVETypeFlags &TypeFlags,
96769676
SmallVectorImpl<Value *> &Ops,
96779677
unsigned IntID) {
9678-
Ops[3] = EmitSVEPredicateCast(
9679-
Ops[3], getSVEVectorForElementType(SVEBuiltinMemEltTy(TypeFlags)));
9678+
Ops[2] = EmitSVEPredicateCast(
9679+
Ops[2], getSVEVectorForElementType(SVEBuiltinMemEltTy(TypeFlags)));
96809680

96819681
SmallVector<Value *> NewOps;
9682-
NewOps.push_back(Ops[3]);
9682+
NewOps.push_back(Ops[2]);
96839683

9684-
llvm::Value *BasePtr = Ops[4];
9684+
llvm::Value *BasePtr = Ops[3];
96859685

96869686
// If the intrinsic contains the vnum parameter, multiply it with the vector
96879687
// size in bytes.
9688-
if (Ops.size() == 6) {
9688+
if (Ops.size() == 5) {
96899689
Function *StreamingVectorLength =
96909690
CGM.getIntrinsic(Intrinsic::aarch64_sme_cntsb);
96919691
llvm::Value *StreamingVectorLengthCall =
96929692
Builder.CreateCall(StreamingVectorLength);
96939693
llvm::Value *Mulvl =
9694-
Builder.CreateMul(StreamingVectorLengthCall, Ops[5], "mulvl");
9694+
Builder.CreateMul(StreamingVectorLengthCall, Ops[4], "mulvl");
96959695
// The type of the ptr parameter is void *, so use Int8Ty here.
9696-
BasePtr = Builder.CreateGEP(Int8Ty, Ops[4], Mulvl);
9696+
BasePtr = Builder.CreateGEP(Int8Ty, Ops[3], Mulvl);
96979697
}
96989698
NewOps.push_back(BasePtr);
96999699
NewOps.push_back(Ops[0]);
9700-
NewOps.push_back(EmitTileslice(Ops[2], Ops[1]));
9700+
NewOps.push_back(Ops[1]);
97019701
Function *F = CGM.getIntrinsic(IntID);
97029702
return Builder.CreateCall(F, NewOps);
97039703
}
@@ -17283,9 +17283,14 @@ Value *EmitAMDGPUWorkGroupSize(CodeGenFunction &CGF, unsigned Index) {
1728317283
auto Cov = CGF.getTarget().getTargetOpts().CodeObjectVersion;
1728417284

1728517285
if (Cov == clang::TargetOptions::COV_None) {
17286-
auto *ABIVersionC = CGF.CGM.GetOrCreateLLVMGlobal(
17287-
"llvm.amdgcn.abi.version", CGF.Int32Ty, LangAS::Default, nullptr,
17288-
CodeGen::NotForDefinition);
17286+
StringRef Name = "llvm.amdgcn.abi.version";
17287+
auto *ABIVersionC = CGF.CGM.getModule().getNamedGlobal(Name);
17288+
if (!ABIVersionC)
17289+
ABIVersionC = new llvm::GlobalVariable(
17290+
CGF.CGM.getModule(), CGF.Int32Ty, false,
17291+
llvm::GlobalValue::ExternalLinkage, nullptr, Name, nullptr,
17292+
llvm::GlobalVariable::NotThreadLocal,
17293+
CGF.CGM.getContext().getTargetAddressSpace(LangAS::opencl_constant));
1728917294

1729017295
// This load will be eliminated by the IPSCCP because it is constant
1729117296
// weak_odr without externally_initialized. Either changing it to weak or

clang/lib/CodeGen/Targets/AMDGPU.cpp

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -395,7 +395,8 @@ void AMDGPUTargetCodeGenInfo::addAMDGCNMetadata(llvm::GlobalValue *GV,
395395
void AMDGPUTargetCodeGenInfo::emitTargetGlobals(
396396
CodeGen::CodeGenModule &CGM) const {
397397
StringRef Name = "llvm.amdgcn.abi.version";
398-
if (CGM.getModule().getNamedGlobal(Name))
398+
llvm::GlobalVariable *OriginalGV = CGM.getModule().getNamedGlobal(Name);
399+
if (OriginalGV && !llvm::GlobalVariable::isExternalLinkage(OriginalGV->getLinkage()))
399400
return;
400401

401402
auto *Type = llvm::IntegerType::getIntNTy(CGM.getModule().getContext(), 32);
@@ -410,6 +411,13 @@ void AMDGPUTargetCodeGenInfo::emitTargetGlobals(
410411
CGM.getContext().getTargetAddressSpace(LangAS::opencl_constant));
411412
GV->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Local);
412413
GV->setVisibility(llvm::GlobalValue::VisibilityTypes::HiddenVisibility);
414+
415+
// Replace any external references to this variable with the new global.
416+
if (OriginalGV) {
417+
OriginalGV->replaceAllUsesWith(GV);
418+
GV->takeName(OriginalGV);
419+
OriginalGV->eraseFromParent();
420+
}
413421
}
414422

415423
void AMDGPUTargetCodeGenInfo::setTargetAttributes(
@@ -477,7 +485,6 @@ AMDGPUTargetCodeGenInfo::getGlobalVarAddressSpace(CodeGenModule &CGM,
477485
return DefaultGlobalAS;
478486

479487
LangAS AddrSpace = D->getType().getAddressSpace();
480-
assert(AddrSpace == LangAS::Default || isTargetAddressSpace(AddrSpace));
481488
if (AddrSpace != LangAS::Default)
482489
return AddrSpace;
483490

clang/lib/Format/ContinuationIndenter.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2241,6 +2241,12 @@ ContinuationIndenter::createBreakableToken(const FormatToken &Current,
22412241
if (Style.isJson() || !Style.BreakStringLiterals || !AllowBreak)
22422242
return nullptr;
22432243

2244+
// Strings in TypeScript types and dictionary keys can not be broken.
2245+
if (Style.isJavaScript() && (Current.is(TT_SelectorName) ||
2246+
State.Line->startsWith(Keywords.kw_type))) {
2247+
return nullptr;
2248+
}
2249+
22442250
// Don't break string literals inside preprocessor directives (except for
22452251
// #define directives, as their contents are stored in separate lines and
22462252
// are not affected by this check).

0 commit comments

Comments
 (0)