================ @@ -6727,8 +6727,43 @@ FunctionCallee OpenMPIRBuilder::createDispatchDeinitFunction() { return getOrCreateRuntimeFunction(M, omp::OMPRTL___kmpc_dispatch_deinit); } +static void emitUsed(StringRef Name, std::vector<llvm::WeakTrackingVH> &List, + Module &M) { + if (List.empty()) + return; + + Type *PtrTy = PointerType::get(M.getContext(), /*AddressSpace=*/0); + + // Convert List to what ConstantArray needs. + SmallVector<Constant *, 8> UsedArray; + UsedArray.reserve(List.size()); + for (auto Item : List) + UsedArray.push_back(ConstantExpr::getPointerBitCastOrAddrSpaceCast( + cast<Constant>(&*Item), PtrTy)); + + ArrayType *ArrTy = ArrayType::get(PtrTy, UsedArray.size()); + auto *GV = + new GlobalVariable(M, ArrTy, false, llvm::GlobalValue::AppendingLinkage, + llvm::ConstantArray::get(ArrTy, UsedArray), Name); + + GV->setSection("llvm.metadata"); +} + +static void +emitExecutionMode(OpenMPIRBuilder &OMPBuilder, IRBuilderBase &Builder, + StringRef FunctionName, OMPTgtExecModeFlags Mode, + std::vector<llvm::WeakTrackingVH> &LLVMCompilerUsed) { + auto *Int8Ty = Type::getInt8Ty(Builder.getContext()); + auto *GVMode = new llvm::GlobalVariable( + OMPBuilder.M, Int8Ty, /*isConstant=*/true, + llvm::GlobalValue::WeakAnyLinkage, llvm::ConstantInt::get(Int8Ty, Mode), + Twine(FunctionName, "_exec_mode")); + GVMode->setVisibility(llvm::GlobalVariable::ProtectedVisibility); + LLVMCompilerUsed.emplace_back(GVMode); +} ---------------- skatrak wrote:
Moved to OMPIRBuilder and simplified implementation. https://github.com/llvm/llvm-project/pull/116051 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits