Author: Benjamin Kramer Date: 2023-11-15T00:37:44+01:00 New Revision: c66844d629d8317ed9bbd7d4049d52d56597adcc
URL: https://github.com/llvm/llvm-project/commit/c66844d629d8317ed9bbd7d4049d52d56597adcc DIFF: https://github.com/llvm/llvm-project/commit/c66844d629d8317ed9bbd7d4049d52d56597adcc.diff LOG: [CodeGenOpenCL] Remove pointer type caching This was important when typed LLVM pointers wanted a struct definition for every type, but that's no longer necessary with opaque pointers. NFCI. Added: Modified: clang/lib/CodeGen/CGOpenCLRuntime.cpp clang/lib/CodeGen/CGOpenCLRuntime.h Removed: ################################################################################ diff --git a/clang/lib/CodeGen/CGOpenCLRuntime.cpp b/clang/lib/CodeGen/CGOpenCLRuntime.cpp index 33838a6552c8d70..115b618056a445e 100644 --- a/clang/lib/CodeGen/CGOpenCLRuntime.cpp +++ b/clang/lib/CodeGen/CGOpenCLRuntime.cpp @@ -37,43 +37,16 @@ llvm::Type *CGOpenCLRuntime::convertOpenCLSpecificType(const Type *T) { if (llvm::Type *TransTy = CGM.getTargetCodeGenInfo().getOpenCLType(CGM, T)) return TransTy; - switch (cast<BuiltinType>(T)->getKind()) { - default: - llvm_unreachable("Unexpected opencl builtin type!"); - return nullptr; -#define IMAGE_TYPE(ImgType, Id, SingletonId, Access, Suffix) \ - case BuiltinType::Id: \ - return getPointerType(T, "opencl." #ImgType "_" #Suffix "_t"); -#include "clang/Basic/OpenCLImageTypes.def" - case BuiltinType::OCLSampler: + if (T->isSamplerT()) return getSamplerType(T); - case BuiltinType::OCLEvent: - return getPointerType(T, "opencl.event_t"); - case BuiltinType::OCLClkEvent: - return getPointerType(T, "opencl.clk_event_t"); - case BuiltinType::OCLQueue: - return getPointerType(T, "opencl.queue_t"); - case BuiltinType::OCLReserveID: - return getPointerType(T, "opencl.reserve_id_t"); -#define EXT_OPAQUE_TYPE(ExtType, Id, Ext) \ - case BuiltinType::Id: \ - return getPointerType(T, "opencl." #ExtType); -#include "clang/Basic/OpenCLExtensionTypes.def" - } -} -llvm::PointerType *CGOpenCLRuntime::getPointerType(const Type *T, - StringRef Name) { - auto I = CachedTys.find(Name); - if (I != CachedTys.end()) - return I->second; + return getPointerType(T); +} - llvm::LLVMContext &Ctx = CGM.getLLVMContext(); +llvm::PointerType *CGOpenCLRuntime::getPointerType(const Type *T) { uint32_t AddrSpc = CGM.getContext().getTargetAddressSpace( CGM.getContext().getOpenCLTypeAddrSpace(T)); - auto *PTy = llvm::PointerType::get(Ctx, AddrSpc); - CachedTys[Name] = PTy; - return PTy; + return llvm::PointerType::get(CGM.getLLVMContext(), AddrSpc); } llvm::Type *CGOpenCLRuntime::getPipeType(const PipeType *T) { @@ -89,9 +62,7 @@ llvm::Type *CGOpenCLRuntime::getPipeType(const PipeType *T) { llvm::Type *CGOpenCLRuntime::getPipeType(const PipeType *T, StringRef Name, llvm::Type *&PipeTy) { if (!PipeTy) - PipeTy = llvm::PointerType::get( - CGM.getLLVMContext(), CGM.getContext().getTargetAddressSpace( - CGM.getContext().getOpenCLTypeAddrSpace(T))); + PipeTy = getPointerType(T); return PipeTy; } @@ -103,10 +74,7 @@ llvm::Type *CGOpenCLRuntime::getSamplerType(const Type *T) { CGM, CGM.getContext().OCLSamplerTy.getTypePtr())) SamplerTy = TransTy; else - // struct opencl.sampler_t* - SamplerTy = llvm::PointerType::get( - CGM.getLLVMContext(), CGM.getContext().getTargetAddressSpace( - CGM.getContext().getOpenCLTypeAddrSpace(T))); + SamplerTy = getPointerType(T); return SamplerTy; } diff --git a/clang/lib/CodeGen/CGOpenCLRuntime.h b/clang/lib/CodeGen/CGOpenCLRuntime.h index df8084d6008be94..34613c3516f3745 100644 --- a/clang/lib/CodeGen/CGOpenCLRuntime.h +++ b/clang/lib/CodeGen/CGOpenCLRuntime.h @@ -39,7 +39,6 @@ class CGOpenCLRuntime { llvm::Type *PipeROTy; llvm::Type *PipeWOTy; llvm::Type *SamplerTy; - llvm::StringMap<llvm::PointerType *> CachedTys; /// Structure for enqueued block information. struct EnqueuedBlockInfo { @@ -53,7 +52,7 @@ class CGOpenCLRuntime { virtual llvm::Type *getPipeType(const PipeType *T, StringRef Name, llvm::Type *&PipeTy); - llvm::PointerType *getPointerType(const Type *T, StringRef Name); + llvm::PointerType *getPointerType(const Type *T); public: CGOpenCLRuntime(CodeGenModule &CGM) : CGM(CGM), _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits