From c536935324e958854ade0c0d4bbb7eb176a4eebd Mon Sep 17 00:00:00 2001 From: Mats Jun Larsen Date: Tue, 25 Feb 2025 14:09:39 +0100 Subject: [PATCH 1/2] [CodeGen] Replace PointerType::getUnqual(Type) with opaque pointer version (NFC) Follow-up to #123569 --- clang/lib/CodeGen/ABIInfoImpl.cpp | 2 +- clang/lib/CodeGen/CGOpenMPRuntime.cpp | 8 +------- clang/lib/CodeGen/CGOpenMPRuntime.h | 4 ---- clang/lib/CodeGen/ItaniumCXXABI.cpp | 2 +- 4 files changed, 3 insertions(+), 13 deletions(-) diff --git a/clang/lib/CodeGen/ABIInfoImpl.cpp b/clang/lib/CodeGen/ABIInfoImpl.cpp index 68887cd7916c7..0a612d3461dc2 100644 --- a/clang/lib/CodeGen/ABIInfoImpl.cpp +++ b/clang/lib/CodeGen/ABIInfoImpl.cpp @@ -430,7 +430,7 @@ Address CodeGen::EmitVAArgInstr(CodeGenFunction &CGF, Address VAListAddr, CharUnits TyAlignForABI = TyInfo.Align; llvm::Type *ElementTy = CGF.ConvertTypeForMem(Ty); - llvm::Type *BaseTy = llvm::PointerType::getUnqual(ElementTy); + llvm::Type *BaseTy = llvm::PointerType::getUnqual(CGF.getLLVMContext()); llvm::Value *Addr = CGF.Builder.CreateVAArg(VAListAddr.emitRawPointer(CGF), BaseTy); return Address(Addr, ElementTy, TyAlignForABI); diff --git a/clang/lib/CodeGen/CGOpenMPRuntime.cpp b/clang/lib/CodeGen/CGOpenMPRuntime.cpp index c2289985e9519..7ff0d14b564fe 100644 --- a/clang/lib/CodeGen/CGOpenMPRuntime.cpp +++ b/clang/lib/CodeGen/CGOpenMPRuntime.cpp @@ -1476,13 +1476,7 @@ llvm::Type *CGOpenMPRuntime::getIdentTyPointerTy() { } llvm::Type *CGOpenMPRuntime::getKmpc_MicroPointerTy() { - if (!Kmpc_MicroTy) { - // Build void (*kmpc_micro)(kmp_int32 *global_tid, kmp_int32 *bound_tid,...) - llvm::Type *MicroParams[] = {llvm::PointerType::getUnqual(CGM.Int32Ty), - llvm::PointerType::getUnqual(CGM.Int32Ty)}; - Kmpc_MicroTy = llvm::FunctionType::get(CGM.VoidTy, MicroParams, true); - } - return llvm::PointerType::getUnqual(Kmpc_MicroTy); + return llvm::PointerType::getUnqual(CGM.getLLVMContext()); } static llvm::OffloadEntriesInfoManager::OMPTargetDeviceClauseKind diff --git a/clang/lib/CodeGen/CGOpenMPRuntime.h b/clang/lib/CodeGen/CGOpenMPRuntime.h index 3791bb7159235..03a80d2bbc686 100644 --- a/clang/lib/CodeGen/CGOpenMPRuntime.h +++ b/clang/lib/CodeGen/CGOpenMPRuntime.h @@ -386,10 +386,6 @@ class CGOpenMPRuntime { /// Map for SourceLocation and OpenMP runtime library debug locations. typedef llvm::DenseMap OpenMPDebugLocMapTy; OpenMPDebugLocMapTy OpenMPDebugLocMap; - /// The type for a microtask which gets passed to __kmpc_fork_call(). - /// Original representation is: - /// typedef void (kmpc_micro)(kmp_int32 global_tid, kmp_int32 bound_tid,...); - llvm::FunctionType *Kmpc_MicroTy = nullptr; /// Stores debug location and ThreadID for the function. struct DebugLocThreadIdTy { llvm::Value *DebugLoc; diff --git a/clang/lib/CodeGen/ItaniumCXXABI.cpp b/clang/lib/CodeGen/ItaniumCXXABI.cpp index bb9b6fd210667..7e26a0da3d7d2 100644 --- a/clang/lib/CodeGen/ItaniumCXXABI.cpp +++ b/clang/lib/CodeGen/ItaniumCXXABI.cpp @@ -953,7 +953,7 @@ ItaniumCXXABI::EmitMemberPointerConversion(CodeGenFunction &CGF, Builder.CreateCondBr(IsVirtualOffset, MergeBB, ResignBB); CGF.EmitBlock(ResignBB); - llvm::Type *PtrTy = llvm::PointerType::getUnqual(CGM.Int8Ty); + llvm::Type *PtrTy = llvm::PointerType::getUnqual(CGM.getLLVMContext()); MemFnPtr = Builder.CreateIntToPtr(MemFnPtr, PtrTy); MemFnPtr = CGF.emitPointerAuthResign(MemFnPtr, SrcType, CurAuthInfo, NewAuthInfo, From d49af4308548d824e835493aacdc4038441a7440 Mon Sep 17 00:00:00 2001 From: Mats Jun Larsen Date: Mon, 3 Mar 2025 16:24:54 +0100 Subject: [PATCH 2/2] Remove bitcasts and kmpc_MicroTy --- clang/lib/CodeGen/CGOpenMPRuntime.cpp | 8 ++------ clang/lib/CodeGen/CGOpenMPRuntime.h | 3 --- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/clang/lib/CodeGen/CGOpenMPRuntime.cpp b/clang/lib/CodeGen/CGOpenMPRuntime.cpp index 7ff0d14b564fe..cfb7439e43e29 100644 --- a/clang/lib/CodeGen/CGOpenMPRuntime.cpp +++ b/clang/lib/CodeGen/CGOpenMPRuntime.cpp @@ -1475,10 +1475,6 @@ llvm::Type *CGOpenMPRuntime::getIdentTyPointerTy() { return OMPBuilder.IdentPtr; } -llvm::Type *CGOpenMPRuntime::getKmpc_MicroPointerTy() { - return llvm::PointerType::getUnqual(CGM.getLLVMContext()); -} - static llvm::OffloadEntriesInfoManager::OMPTargetDeviceClauseKind convertDeviceClause(const VarDecl *VD) { std::optional DevTy = @@ -1855,7 +1851,7 @@ void CGOpenMPRuntime::emitParallelCall(CodeGenFunction &CGF, SourceLocation Loc, llvm::Value *Args[] = { RTLoc, CGF.Builder.getInt32(CapturedVars.size()), // Number of captured vars - CGF.Builder.CreateBitCast(OutlinedFn, RT.getKmpc_MicroPointerTy())}; + OutlinedFn}; llvm::SmallVector RealArgs; RealArgs.append(std::begin(Args), std::end(Args)); RealArgs.append(CapturedVars.begin(), CapturedVars.end()); @@ -9931,7 +9927,7 @@ void CGOpenMPRuntime::emitTeamsCall(CodeGenFunction &CGF, llvm::Value *Args[] = { RTLoc, CGF.Builder.getInt32(CapturedVars.size()), // Number of captured vars - CGF.Builder.CreateBitCast(OutlinedFn, getKmpc_MicroPointerTy())}; + OutlinedFn}; llvm::SmallVector RealArgs; RealArgs.append(std::begin(Args), std::end(Args)); RealArgs.append(CapturedVars.begin(), CapturedVars.end()); diff --git a/clang/lib/CodeGen/CGOpenMPRuntime.h b/clang/lib/CodeGen/CGOpenMPRuntime.h index 03a80d2bbc686..4321712e1521d 100644 --- a/clang/lib/CodeGen/CGOpenMPRuntime.h +++ b/clang/lib/CodeGen/CGOpenMPRuntime.h @@ -526,9 +526,6 @@ class CGOpenMPRuntime { /// Build type kmp_routine_entry_t (if not built yet). void emitKmpRoutineEntryT(QualType KmpInt32Ty); - /// Returns pointer to kmpc_micro type. - llvm::Type *getKmpc_MicroPointerTy(); - /// If the specified mangled name is not in the module, create and /// return threadprivate cache object. This object is a pointer's worth of /// storage that's reserved for use by the OpenMP runtime.