================ @@ -0,0 +1,76 @@ +//===--- CIRGenOpenMPClause.h - OpenMP clause processor ---------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_LIB_CIR_CODEGEN_CIRGENOPENMPCLAUSE_H +#define LLVM_CLANG_LIB_CIR_CODEGEN_CIRGENOPENMPCLAUSE_H + +#include "CIRGenBuilder.h" +#include "CIRGenModule.h" +#include "mlir/Dialect/OpenMP/OpenMPClauseOperands.h" +#include "clang/AST/OpenMPClause.h" +#include "clang/AST/StmtOpenMP.h" +#include "llvm/Frontend/OpenMP/OMPConstants.h" + +namespace clang::CIRGen { + +class CIRGenFunction; + +/// Processes OpenMP clauses for a directive, writing results into the +/// auto-generated ClauseOps from the OMP dialect. +class OpenMPClauseProcessor { + CIRGenFunction &cgf; + CIRGenModule &cgm; + CIRGenBuilderTy &builder; + mlir::Location loc; + llvm::ArrayRef<const OMPClause *> clauses; + +public: + OpenMPClauseProcessor(CIRGenFunction &cgf, CIRGenModule &cgm, + CIRGenBuilderTy &builder, mlir::Location loc, + llvm::ArrayRef<const OMPClause *> clauses) + : cgf(cgf), cgm(cgm), builder(builder), loc(loc), clauses(clauses) {} + + bool processProcBind(mlir::omp::ProcBindClauseOps &result) const; + + /// Process map clauses. The optional \p mapSyms parameter collects the + /// VarDecls corresponding to each map operand. + bool + processMap(mlir::omp::MapClauseOps &result, + llvm::SmallVectorImpl<const VarDecl *> *mapSyms = nullptr) const; + + /// Emit an errorNYI for each clause of the given types if present. + template <typename... ClauseTypes> + void processTODO(llvm::omp::Directive directive) const; + +private: + template <typename ClauseType> + void processTODOClause(llvm::omp::Directive directive) const; +}; + +template <typename ClauseType> +void OpenMPClauseProcessor::processTODOClause( ---------------- erichkeane wrote:
Interesting solution. Can you rename `TODO` to `NYI`? Again, 'term of art' in the CIR project. https://github.com/llvm/llvm-project/pull/195452 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
