[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