[clang] 4ace600 - [OpaquePtr] Remove uses of CreateStructGEP() without element type
David Blaikie via cfe-commits
cfe-commits at lists.llvm.org
Tue Jul 20 11:27:01 PDT 2021
Any chance some of this series of patches could have test coverage
included? (like small clang test cases that exercise only a narrow part of
the codegen & works with force-opaque-pointers due to these changes?)
On Sat, Jul 17, 2021 at 9:48 AM Nikita Popov via cfe-commits <
cfe-commits at lists.llvm.org> wrote:
>
> Author: Nikita Popov
> Date: 2021-07-17T18:48:21+02:00
> New Revision: 4ace6008f2fde781c1bedc7515e6380e449cb56a
>
> URL:
> https://github.com/llvm/llvm-project/commit/4ace6008f2fde781c1bedc7515e6380e449cb56a
> DIFF:
> https://github.com/llvm/llvm-project/commit/4ace6008f2fde781c1bedc7515e6380e449cb56a.diff
>
> LOG: [OpaquePtr] Remove uses of CreateStructGEP() without element type
>
> Remove uses of to-be-deprecated API.
>
> Added:
>
>
> Modified:
> clang/lib/CodeGen/CGBlocks.cpp
> clang/lib/CodeGen/CGObjCGNU.cpp
>
> Removed:
>
>
>
>
> ################################################################################
> diff --git a/clang/lib/CodeGen/CGBlocks.cpp
> b/clang/lib/CodeGen/CGBlocks.cpp
> index 769501a036e6..f39a56f81d41 100644
> --- a/clang/lib/CodeGen/CGBlocks.cpp
> +++ b/clang/lib/CodeGen/CGBlocks.cpp
> @@ -1375,7 +1375,7 @@ static llvm::Constant
> *buildGlobalBlock(CodeGenModule &CGM,
> llvm::IRBuilder<> b(llvm::BasicBlock::Create(CGM.getLLVMContext(),
> "entry",
> Init));
> b.CreateAlignedStore(CGM.getNSConcreteGlobalBlock(),
> - b.CreateStructGEP(literal, 0),
> + b.CreateStructGEP(literal->getValueType(),
> literal, 0),
> CGM.getPointerAlign().getAsAlign());
> b.CreateRetVoid();
> // We can't use the normal LLVM global initialisation array, because
> we
>
> diff --git a/clang/lib/CodeGen/CGObjCGNU.cpp
> b/clang/lib/CodeGen/CGObjCGNU.cpp
> index 9e47dbf7bdf1..3f361f4e7931 100644
> --- a/clang/lib/CodeGen/CGObjCGNU.cpp
> +++ b/clang/lib/CodeGen/CGObjCGNU.cpp
> @@ -945,7 +945,8 @@ class CGObjCGNUstep2 : public CGObjCGNUstep {
> /// Generate the name of a symbol for a reference to a class. Accesses
> to
> /// classes should be indirected via this.
>
> - typedef std::pair<std::string, std::pair<llvm::Constant*, int>>
> EarlyInitPair;
> + typedef std::pair<std::string, std::pair<llvm::GlobalVariable*, int>>
> + EarlyInitPair;
> std::vector<EarlyInitPair> EarlyInitList;
>
> std::string SymbolForClassRef(StringRef Name, bool isWeak) {
> @@ -1096,7 +1097,7 @@ class CGObjCGNUstep2 : public CGObjCGNUstep {
> }
> }
> }
> - auto *ObjCStrGV =
> + llvm::GlobalVariable *ObjCStrGV =
> Fields.finishAndCreateGlobal(
> isNamed ? StringRef(StringName) : ".objc_string",
> Align, false, isNamed ? llvm::GlobalValue::LinkOnceODRLinkage
> @@ -1107,7 +1108,7 @@ class CGObjCGNUstep2 : public CGObjCGNUstep {
> ObjCStrGV->setVisibility(llvm::GlobalValue::HiddenVisibility);
> }
> if (CGM.getTriple().isOSBinFormatCOFF()) {
> - std::pair<llvm::Constant*, int> v{ObjCStrGV, 0};
> + std::pair<llvm::GlobalVariable*, int> v{ObjCStrGV, 0};
> EarlyInitList.emplace_back(Sym, v);
> }
> llvm::Constant *ObjCStr = llvm::ConstantExpr::getBitCast(ObjCStrGV,
> IdTy);
> @@ -1654,9 +1655,10 @@ class CGObjCGNUstep2 : public CGObjCGNUstep {
> for (const auto &lateInit : EarlyInitList) {
> auto *global = TheModule.getGlobalVariable(lateInit.first);
> if (global) {
> + llvm::GlobalVariable *GV = lateInit.second.first;
> b.CreateAlignedStore(
> global,
> - b.CreateStructGEP(lateInit.second.first,
> lateInit.second.second),
> + b.CreateStructGEP(GV->getValueType(), GV,
> lateInit.second.second),
> CGM.getPointerAlign().getAsAlign());
> }
> }
> @@ -1938,7 +1940,7 @@ class CGObjCGNUstep2 : public CGObjCGNUstep {
> // struct objc_property_list *properties
> classFields.add(GeneratePropertyList(OID, classDecl));
>
> - auto *classStruct =
> + llvm::GlobalVariable *classStruct =
> classFields.finishAndCreateGlobal(SymbolForClass(className),
> CGM.getPointerAlign(), false, llvm::GlobalValue::ExternalLinkage);
>
> @@ -1949,12 +1951,12 @@ class CGObjCGNUstep2 : public CGObjCGNUstep {
> if (IsCOFF) {
> // we can't import a class struct.
> if (OID->getClassInterface()->hasAttr<DLLExportAttr>()) {
> -
> cast<llvm::GlobalValue>(classStruct)->setDLLStorageClass(llvm::GlobalValue::DLLExportStorageClass);
> +
> classStruct->setDLLStorageClass(llvm::GlobalValue::DLLExportStorageClass);
>
> cast<llvm::GlobalValue>(classRefSymbol)->setDLLStorageClass(llvm::GlobalValue::DLLExportStorageClass);
> }
>
> if (SuperClass) {
> - std::pair<llvm::Constant*, int> v{classStruct, 1};
> + std::pair<llvm::GlobalVariable*, int> v{classStruct, 1};
> EarlyInitList.emplace_back(std::string(SuperClass->getName()),
> std::move(v));
> }
>
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20210720/2ac9824e/attachment-0001.html>
More information about the cfe-commits
mailing list