clang 24.0.0git
CIRGenOpenMPConstructDecomposition.h File Reference
#include "clang/AST/Decl.h"
#include "clang/AST/Expr.h"
#include "clang/AST/OpenMPClause.h"
#include "clang/AST/StmtOpenMP.h"
#include "clang/Basic/OpenMPKinds.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/Frontend/OpenMP/ClauseT.h"
#include "llvm/Frontend/OpenMP/ConstructDecompositionT.h"
#include "llvm/Frontend/OpenMP/OMP.h"
#include "llvm/Support/Casting.h"
#include <cassert>
#include <optional>
#include <utility>

Go to the source code of this file.

Classes

struct  tomp::type::ObjectT< clang::CIRGen::omp::IdTy, clang::CIRGen::omp::ExprTy >
struct  clang::CIRGen::omp::Clause
 A tomp clause that remembers the Clang AST clause it came from, so the existing emitters can emit it after the decomposition assigns it to a leaf. More...
struct  clang::CIRGen::omp::DecompositionHelper
 Helper required by ConstructDecompositionT. More...
struct  clang::CIRGen::omp::LeafWithClauses

Namespaces

namespace  clang
 Top level wrappers for InstallAPI frontend operations.
namespace  clang::CIRGen
namespace  clang::CIRGen::omp
namespace  tomp
namespace  tomp::type

Typedefs

using clang::CIRGen::omp::TypeTy = const clang::Type *
using clang::CIRGen::omp::IdTy = const clang::ValueDecl *
using clang::CIRGen::omp::ExprTy = const clang::Expr *
using clang::CIRGen::omp::Object = tomp::ObjectT<IdTy, ExprTy>
using clang::CIRGen::omp::ObjectList = tomp::ObjectListT<IdTy, ExprTy>
using clang::CIRGen::omp::ClauseBase = tomp::ClauseT<TypeTy, IdTy, ExprTy>
using clang::CIRGen::omp::ConstructQueue = llvm::SmallVector<LeafWithClauses>

Functions

const clang::ValueDecl * clang::CIRGen::omp::getBaseValueDecl (const clang::Expr *e)
Object clang::CIRGen::omp::makeObject (const clang::Expr *e)
 Build a tomp Object whose identity is the base variable's canonical decl.
template<typename ClangClause>
ObjectList clang::CIRGen::omp::makeObjects (const ClangClause &c)
 Build the tomp object list from a Clang var-list clause.
template<typename Specific>
Clause clang::CIRGen::omp::makeClause (llvm::omp::Clause id, Specific &&specific, const clang::OMPClause &original)
 Wrap a tomp clause payload into a Clause, remembering its AST origin.
bool clang::CIRGen::omp::needsSpecificHandling (llvm::omp::Clause kind)
 Clause kinds that need a dedicated conversion: they either have a specific applyClause() overload (so the payload type selects it) or their contents feed the algorithm.
bool clang::CIRGen::omp::isEmittableClause (llvm::omp::Clause kind)
 Clause kinds CIR is able to emit today.
Clause clang::CIRGen::omp::makeGeneric (llvm::omp::Clause id, const clang::OMPClause &orig)
 Represent a clause by kind only, using an inert empty payload that routes through the algorithm's generic applyClause() path (which reads just the clause id).
Clause clang::CIRGen::omp::convertClause (const clang::OMPClause &c)
 Convert a single Clang clause to its tomp representation.
const clang::OMPClause * clang::CIRGen::omp::findOriginalIfClause (const OMPExecutableDirective &s, const Clause &c)
 The decomposition algorithm resolves a directive-name-modifier on an if clause (e.g.
ConstructQueue clang::CIRGen::omp::buildConstructQueue (unsigned openmpVersion, const OMPExecutableDirective &s)
 Given a potentially compound directive with a list of clauses that apply to it, break it up into individual leaf constructs each with the subset of applicable clauses (plus implicit clauses, if any).
bool clang::CIRGen::omp::isLastItemInQueue (ConstructQueue::const_iterator item, const ConstructQueue &queue)