Skip to content

Commit c84b9d2

Browse files
SC llvm teamSC llvm team
authored andcommitted
Merged main:1eaf926f2c61 into amd-gfx:c3eb9e85dcf1
Local branch amd-gfx c3eb9e8 Merged main:acef83c14261 into amd-gfx:46373f4967cf Remote branch main 1eaf926 [clang][CGObjCGNU] Remove no-op ptr-to-ptr bitcasts (NFC)
2 parents c3eb9e8 + 1eaf926 commit c84b9d2

File tree

7 files changed

+363
-37
lines changed

7 files changed

+363
-37
lines changed

clang/lib/CodeGen/CGObjCGNU.cpp

Lines changed: 12 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1918,9 +1918,8 @@ class CGObjCGNUstep2 : public CGObjCGNUstep {
19181918
classDecl->protocol_end());
19191919
SmallVector<llvm::Constant *, 16> Protocols;
19201920
for (const auto *I : RuntimeProtocols)
1921-
Protocols.push_back(
1922-
llvm::ConstantExpr::getBitCast(GenerateProtocolRef(I),
1923-
ProtocolPtrTy));
1921+
Protocols.push_back(GenerateProtocolRef(I));
1922+
19241923
if (Protocols.empty())
19251924
classFields.addNullPointer(PtrTy);
19261925
else
@@ -1938,7 +1937,7 @@ class CGObjCGNUstep2 : public CGObjCGNUstep {
19381937

19391938
auto *classRefSymbol = GetClassVar(className);
19401939
classRefSymbol->setSection(sectionName<ClassReferenceSection>());
1941-
classRefSymbol->setInitializer(llvm::ConstantExpr::getBitCast(classStruct, IdTy));
1940+
classRefSymbol->setInitializer(classStruct);
19421941

19431942
if (IsCOFF) {
19441943
// we can't import a class struct.
@@ -1971,8 +1970,7 @@ class CGObjCGNUstep2 : public CGObjCGNUstep {
19711970
classStruct->setName(SymbolForClass(className));
19721971
}
19731972
if (MetaClassPtrAlias) {
1974-
MetaClassPtrAlias->replaceAllUsesWith(
1975-
llvm::ConstantExpr::getBitCast(metaclass, IdTy));
1973+
MetaClassPtrAlias->replaceAllUsesWith(metaclass);
19761974
MetaClassPtrAlias->eraseFromParent();
19771975
MetaClassPtrAlias = nullptr;
19781976
}
@@ -2443,9 +2441,8 @@ llvm::Constant *CGObjCGNUstep::GetEHType(QualType T) {
24432441
nullptr, vtableName);
24442442
}
24452443
llvm::Constant *Two = llvm::ConstantInt::get(IntTy, 2);
2446-
auto *BVtable = llvm::ConstantExpr::getBitCast(
2447-
llvm::ConstantExpr::getGetElementPtr(Vtable->getValueType(), Vtable, Two),
2448-
PtrToInt8Ty);
2444+
auto *BVtable =
2445+
llvm::ConstantExpr::getGetElementPtr(Vtable->getValueType(), Vtable, Two);
24492446

24502447
llvm::Constant *typeName =
24512448
ExportUniqueString(className, "__objc_eh_typename_");
@@ -2459,7 +2456,7 @@ llvm::Constant *CGObjCGNUstep::GetEHType(QualType T) {
24592456
CGM.getPointerAlign(),
24602457
/*constant*/ false,
24612458
llvm::GlobalValue::LinkOnceODRLinkage);
2462-
return llvm::ConstantExpr::getBitCast(TI, PtrToInt8Ty);
2459+
return TI;
24632460
}
24642461

24652462
/// Generate an NSConstantString object.
@@ -3130,7 +3127,6 @@ llvm::Constant *
31303127
CGObjCGNU::GenerateEmptyProtocol(StringRef ProtocolName) {
31313128
llvm::Constant *ProtocolList = GenerateProtocolList({});
31323129
llvm::Constant *MethodList = GenerateProtocolMethodList({});
3133-
MethodList = llvm::ConstantExpr::getBitCast(MethodList, PtrToInt8Ty);
31343130
// Protocols are objects containing lists of the methods implemented and
31353131
// protocols adopted.
31363132
ConstantInitBuilder Builder(CGM);
@@ -3358,11 +3354,9 @@ void CGObjCGNU::GenerateCategory(const ObjCCategoryImplDecl *OCD) {
33583354
}
33593355
}
33603356

3361-
Categories.push_back(llvm::ConstantExpr::getBitCast(
3362-
Elements.finishAndCreateGlobal(
3363-
std::string(".objc_category_")+ClassName+CategoryName,
3364-
CGM.getPointerAlign()),
3365-
PtrTy));
3357+
Categories.push_back(Elements.finishAndCreateGlobal(
3358+
std::string(".objc_category_") + ClassName + CategoryName,
3359+
CGM.getPointerAlign()));
33663360
}
33673361

33683362
llvm::Constant *CGObjCGNU::GeneratePropertyList(const Decl *Container,
@@ -3665,20 +3659,17 @@ void CGObjCGNU::GenerateClass(const ObjCImplementationDecl *OID) {
36653659

36663660
// Resolve the class aliases, if they exist.
36673661
if (ClassPtrAlias) {
3668-
ClassPtrAlias->replaceAllUsesWith(
3669-
llvm::ConstantExpr::getBitCast(ClassStruct, IdTy));
3662+
ClassPtrAlias->replaceAllUsesWith(ClassStruct);
36703663
ClassPtrAlias->eraseFromParent();
36713664
ClassPtrAlias = nullptr;
36723665
}
36733666
if (MetaClassPtrAlias) {
3674-
MetaClassPtrAlias->replaceAllUsesWith(
3675-
llvm::ConstantExpr::getBitCast(MetaClassStruct, IdTy));
3667+
MetaClassPtrAlias->replaceAllUsesWith(MetaClassStruct);
36763668
MetaClassPtrAlias->eraseFromParent();
36773669
MetaClassPtrAlias = nullptr;
36783670
}
36793671

36803672
// Add class structure to list to be added to the symtab later
3681-
ClassStruct = llvm::ConstantExpr::getBitCast(ClassStruct, PtrToInt8Ty);
36823673
Classes.push_back(ClassStruct);
36833674
}
36843675

clang/lib/Driver/ToolChains/FreeBSD.cpp

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,16 @@ void freebsd::Assembler::ConstructJob(Compilation &C, const JobAction &JA,
3030
const InputInfoList &Inputs,
3131
const ArgList &Args,
3232
const char *LinkingOutput) const {
33-
claimNoWarnArgs(Args);
34-
ArgStringList CmdArgs;
33+
const auto &ToolChain = static_cast<const FreeBSD &>(getToolChain());
3534
const auto &D = getToolChain().getDriver();
35+
const llvm::Triple &Triple = ToolChain.getTriple();
36+
ArgStringList CmdArgs;
37+
38+
claimNoWarnArgs(Args);
3639

3740
// When building 32-bit code on FreeBSD/amd64, we have to explicitly
3841
// instruct as in the base system to assemble 32-bit code.
39-
switch (getToolChain().getArch()) {
42+
switch (ToolChain.getArch()) {
4043
default:
4144
break;
4245
case llvm::Triple::x86:
@@ -52,15 +55,15 @@ void freebsd::Assembler::ConstructJob(Compilation &C, const JobAction &JA,
5255
case llvm::Triple::mips64el: {
5356
StringRef CPUName;
5457
StringRef ABIName;
55-
mips::getMipsCPUAndABI(Args, getToolChain().getTriple(), CPUName, ABIName);
58+
mips::getMipsCPUAndABI(Args, Triple, CPUName, ABIName);
5659

5760
CmdArgs.push_back("-march");
5861
CmdArgs.push_back(CPUName.data());
5962

6063
CmdArgs.push_back("-mabi");
6164
CmdArgs.push_back(mips::getGnuCompatibleMipsABIName(ABIName).data());
6265

63-
if (getToolChain().getTriple().isLittleEndian())
66+
if (Triple.isLittleEndian())
6467
CmdArgs.push_back("-EL");
6568
else
6669
CmdArgs.push_back("-EB");
@@ -71,14 +74,14 @@ void freebsd::Assembler::ConstructJob(Compilation &C, const JobAction &JA,
7174
A->claim();
7275
}
7376

74-
AddAssemblerKPIC(getToolChain(), Args, CmdArgs);
77+
AddAssemblerKPIC(ToolChain, Args, CmdArgs);
7578
break;
7679
}
7780
case llvm::Triple::arm:
7881
case llvm::Triple::armeb:
7982
case llvm::Triple::thumb:
8083
case llvm::Triple::thumbeb: {
81-
arm::FloatABI ABI = arm::getARMFloatABI(getToolChain(), Args);
84+
arm::FloatABI ABI = arm::getARMFloatABI(ToolChain, Args);
8285

8386
if (ABI == arm::FloatABI::Hard)
8487
CmdArgs.push_back("-mfpu=vfp");
@@ -89,10 +92,9 @@ void freebsd::Assembler::ConstructJob(Compilation &C, const JobAction &JA,
8992
break;
9093
}
9194
case llvm::Triple::sparcv9: {
92-
std::string CPU = getCPUName(D, Args, getToolChain().getTriple());
93-
CmdArgs.push_back(
94-
sparc::getSparcAsmModeForCPU(CPU, getToolChain().getTriple()));
95-
AddAssemblerKPIC(getToolChain(), Args, CmdArgs);
95+
std::string CPU = getCPUName(D, Args, Triple);
96+
CmdArgs.push_back(sparc::getSparcAsmModeForCPU(CPU, Triple));
97+
AddAssemblerKPIC(ToolChain, Args, CmdArgs);
9698
break;
9799
}
98100
}
@@ -118,7 +120,7 @@ void freebsd::Assembler::ConstructJob(Compilation &C, const JobAction &JA,
118120
for (const auto &II : Inputs)
119121
CmdArgs.push_back(II.getFilename());
120122

121-
const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath("as"));
123+
const char *Exec = Args.MakeArgString(ToolChain.GetProgramPath("as"));
122124
C.addCommand(std::make_unique<Command>(JA, *this,
123125
ResponseFileSupport::AtFileCurCP(),
124126
Exec, CmdArgs, Inputs, Output));
@@ -366,10 +368,12 @@ void freebsd::Linker::ConstructJob(Compilation &C, const JobAction &JA,
366368

367369
if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles,
368370
options::OPT_r)) {
371+
const char *crtend = nullptr;
369372
if (Args.hasArg(options::OPT_shared) || IsPIE)
370-
CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crtendS.o")));
373+
crtend = "crtendS.o";
371374
else
372-
CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crtend.o")));
375+
crtend = "crtend.o";
376+
CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath(crtend)));
373377
CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crtn.o")));
374378
}
375379

llvm/include/llvm/Config/llvm-config.h.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
/* Indicate that this is LLVM compiled from the amd-gfx branch. */
1818
#define LLVM_HAVE_BRANCH_AMD_GFX
19-
#define LLVM_MAIN_REVISION 480503
19+
#define LLVM_MAIN_REVISION 480508
2020

2121
/* Define if LLVM_ENABLE_DUMP is enabled */
2222
#cmakedefine LLVM_ENABLE_DUMP

llvm/lib/Target/RISCV/RISCVInstrInfo.td

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1208,7 +1208,9 @@ def assertzexti32 : PatFrag<(ops node:$src), (assertzext node:$src), [{
12081208
}]>;
12091209
def zexti32 : ComplexPattern<i64, 1, "selectZExtBits<32>">;
12101210
def zexti16 : ComplexPattern<XLenVT, 1, "selectZExtBits<16>">;
1211+
def zexti16i32 : ComplexPattern<i32, 1, "selectZExtBits<16>">;
12111212
def zexti8 : ComplexPattern<XLenVT, 1, "selectZExtBits<8>">;
1213+
def zexti8i32 : ComplexPattern<i32, 1, "selectZExtBits<8>">;
12121214

12131215
def ext : PatFrags<(ops node:$A), [(sext node:$A), (zext node:$A)]>;
12141216

llvm/lib/Target/RISCV/RISCVInstrInfoZb.td

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -846,6 +846,18 @@ def : Pat<(i32 (rotl GPR:$rs1, uimm5:$rs2)),
846846
(RORIW GPR:$rs1, (ImmSubFrom32 uimm5:$rs2))>;
847847
} // Predicates = [HasStdExtZbbOrZbkb, IsRV64]
848848

849+
let Predicates = [HasStdExtZbkb, IsRV64] in {
850+
def : Pat<(or (and (shl GPR:$rs2, (i64 8)), 0xFFFF),
851+
(zexti8i32 (i32 GPR:$rs1))),
852+
(PACKH GPR:$rs1, GPR:$rs2)>;
853+
def : Pat<(or (shl (zexti8i32 (i32 GPR:$rs2)), (i64 8)),
854+
(zexti8i32 (i32 GPR:$rs1))),
855+
(PACKH GPR:$rs1, GPR:$rs2)>;
856+
857+
def : Pat<(i32 (or (shl GPR:$rs2, (i64 16)), (zexti16i32 (i32 GPR:$rs1)))),
858+
(PACKW GPR:$rs1, GPR:$rs2)>;
859+
} // Predicates = [HasStdExtZbkb, IsRV64]
860+
849861
let Predicates = [HasStdExtZba, IsRV64] in {
850862
def : Pat<(shl (i64 (zext i32:$rs1)), uimm5:$shamt),
851863
(SLLI_UW GPR:$rs1, uimm5:$shamt)>;

0 commit comments

Comments
 (0)