clang 19.0.0git
Classes | Namespaces | Macros | Typedefs | Functions
OpenMPClause.h File Reference

This file defines OpenMP AST classes for clauses. More...

#include "clang/AST/ASTFwd.h"
#include "clang/AST/Decl.h"
#include "clang/AST/DeclarationName.h"
#include "clang/AST/Expr.h"
#include "clang/AST/NestedNameSpecifier.h"
#include "clang/AST/Stmt.h"
#include "clang/AST/StmtIterator.h"
#include "clang/Basic/LLVM.h"
#include "clang/Basic/OpenMPKinds.h"
#include "clang/Basic/SourceLocation.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/MapVector.h"
#include "llvm/ADT/PointerIntPair.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/iterator.h"
#include "llvm/ADT/iterator_range.h"
#include "llvm/Frontend/OpenMP/OMPAssume.h"
#include "llvm/Frontend/OpenMP/OMPConstants.h"
#include "llvm/Frontend/OpenMP/OMPContext.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/TrailingObjects.h"
#include <cassert>
#include <cstddef>
#include <iterator>
#include <utility>
#include "llvm/Frontend/OpenMP/OMP.inc"

Go to the source code of this file.

Classes

class  clang::OMPClause
 This is a basic class for representing single OpenMP clause. More...
 
struct  clang::OMPNoChildClause< ClauseKind >
 
class  clang::OMPOneStmtClause< ClauseKind, Base >
 
class  clang::OMPClauseWithPreInit
 Class that handles pre-initialization statement for some clauses, like 'shedule', 'firstprivate' etc. More...
 
class  clang::OMPClauseWithPostUpdate
 Class that handles post-update expression for some clauses, like 'lastprivate', 'reduction' etc. More...
 
struct  clang::OMPVarListLocTy
 This structure contains most locations needed for by an OMPVarListClause. More...
 
class  clang::OMPVarListClause< T >
 This represents clauses with the list of variables like 'private', 'firstprivate', 'copyin', 'shared', or 'reduction' clauses in the '#pragma omp ...' directives. More...
 
class  clang::OMPAllocatorClause
 This represents 'allocator' clause in the '#pragma omp ...' directive. More...
 
class  clang::OMPAlignClause
 This represents the 'align' clause in the '#pragma omp allocate' directive. More...
 
class  clang::OMPAllocateClause
 This represents clause 'allocate' in the '#pragma omp ...' directives. More...
 
class  clang::OMPIfClause
 This represents 'if' clause in the '#pragma omp ...' directive. More...
 
class  clang::OMPFinalClause
 This represents 'final' clause in the '#pragma omp ...' directive. More...
 
class  clang::OMPNumThreadsClause
 This represents 'num_threads' clause in the '#pragma omp ...' directive. More...
 
class  clang::OMPSafelenClause
 This represents 'safelen' clause in the '#pragma omp ...' directive. More...
 
class  clang::OMPSimdlenClause
 This represents 'simdlen' clause in the '#pragma omp ...' directive. More...
 
class  clang::OMPSizesClause
 This represents the 'sizes' clause in the '#pragma omp tile' directive. More...
 
class  clang::OMPFullClause
 Representation of the 'full' clause of the '#pragma omp unroll' directive. More...
 
class  clang::OMPPartialClause
 Representation of the 'partial' clause of the '#pragma omp unroll' directive. More...
 
class  clang::OMPCollapseClause
 This represents 'collapse' clause in the '#pragma omp ...' directive. More...
 
class  clang::OMPDefaultClause
 This represents 'default' clause in the '#pragma omp ...' directive. More...
 
class  clang::OMPProcBindClause
 This represents 'proc_bind' clause in the '#pragma omp ...' directive. More...
 
class  clang::OMPUnifiedAddressClause
 This represents 'unified_address' clause in the '#pragma omp requires' directive. More...
 
class  clang::OMPUnifiedSharedMemoryClause
 This represents 'unified_shared_memory' clause in the '#pragma omp requires' directive. More...
 
class  clang::OMPReverseOffloadClause
 This represents 'reverse_offload' clause in the '#pragma omp requires' directive. More...
 
class  clang::OMPDynamicAllocatorsClause
 This represents 'dynamic_allocators' clause in the '#pragma omp requires' directive. More...
 
class  clang::OMPAtomicDefaultMemOrderClause
 This represents 'atomic_default_mem_order' clause in the '#pragma omp requires' directive. More...
 
class  clang::OMPAtClause
 This represents 'at' clause in the '#pragma omp error' directive. More...
 
class  clang::OMPSeverityClause
 This represents 'severity' clause in the '#pragma omp error' directive. More...
 
class  clang::OMPMessageClause
 This represents 'message' clause in the '#pragma omp error' directive. More...
 
class  clang::OMPScheduleClause
 This represents 'schedule' clause in the '#pragma omp ...' directive. More...
 
class  clang::OMPOrderedClause
 This represents 'ordered' clause in the '#pragma omp ...' directive. More...
 
class  clang::OMPNowaitClause
 This represents 'nowait' clause in the '#pragma omp ...' directive. More...
 
class  clang::OMPUntiedClause
 This represents 'untied' clause in the '#pragma omp ...' directive. More...
 
class  clang::OMPMergeableClause
 This represents 'mergeable' clause in the '#pragma omp ...' directive. More...
 
class  clang::OMPReadClause
 This represents 'read' clause in the '#pragma omp atomic' directive. More...
 
class  clang::OMPWriteClause
 This represents 'write' clause in the '#pragma omp atomic' directive. More...
 
class  clang::OMPUpdateClause
 This represents 'update' clause in the '#pragma omp atomic' directive. More...
 
class  clang::OMPCaptureClause
 This represents 'capture' clause in the '#pragma omp atomic' directive. More...
 
class  clang::OMPCompareClause
 This represents 'compare' clause in the '#pragma omp atomic' directive. More...
 
class  clang::OMPSeqCstClause
 This represents 'seq_cst' clause in the '#pragma omp atomic' directive. More...
 
class  clang::OMPAcqRelClause
 This represents 'acq_rel' clause in the '#pragma omp atomic|flush' directives. More...
 
class  clang::OMPAcquireClause
 This represents 'acquire' clause in the '#pragma omp atomic|flush' directives. More...
 
class  clang::OMPReleaseClause
 This represents 'release' clause in the '#pragma omp atomic|flush' directives. More...
 
class  clang::OMPRelaxedClause
 This represents 'relaxed' clause in the '#pragma omp atomic' directives. More...
 
class  clang::OMPWeakClause
 This represents 'weak' clause in the '#pragma omp atomic' directives. More...
 
class  clang::OMPFailClause
 This represents 'fail' clause in the '#pragma omp atomic' directive. More...
 
class  clang::OMPPrivateClause
 This represents clause 'private' in the '#pragma omp ...' directives. More...
 
class  clang::OMPFirstprivateClause
 This represents clause 'firstprivate' in the '#pragma omp ...' directives. More...
 
class  clang::OMPLastprivateClause
 This represents clause 'lastprivate' in the '#pragma omp ...' directives. More...
 
class  clang::OMPSharedClause
 This represents clause 'shared' in the '#pragma omp ...' directives. More...
 
class  clang::OMPReductionClause
 This represents clause 'reduction' in the '#pragma omp ...' directives. More...
 
class  clang::OMPTaskReductionClause
 This represents clause 'task_reduction' in the '#pragma omp taskgroup' directives. More...
 
class  clang::OMPInReductionClause
 This represents clause 'in_reduction' in the '#pragma omp task' directives. More...
 
class  clang::OMPLinearClause
 This represents clause 'linear' in the '#pragma omp ...' directives. More...
 
class  clang::OMPAlignedClause
 This represents clause 'aligned' in the '#pragma omp ...' directives. More...
 
class  clang::OMPCopyinClause
 This represents clause 'copyin' in the '#pragma omp ...' directives. More...
 
class  clang::OMPCopyprivateClause
 This represents clause 'copyprivate' in the '#pragma omp ...' directives. More...
 
class  clang::OMPFlushClause
 This represents implicit clause 'flush' for the '#pragma omp flush' directive. More...
 
class  clang::OMPDepobjClause
 This represents implicit clause 'depobj' for the '#pragma omp depobj' directive. More...
 
class  clang::OMPDependClause
 This represents implicit clause 'depend' for the '#pragma omp task' directive. More...
 
struct  clang::OMPDependClause::DependDataTy
 
class  clang::OMPDeviceClause
 This represents 'device' clause in the '#pragma omp ...' directive. More...
 
class  clang::OMPThreadsClause
 This represents 'threads' clause in the '#pragma omp ...' directive. More...
 
class  clang::OMPSIMDClause
 This represents 'simd' clause in the '#pragma omp ...' directive. More...
 
class  clang::OMPClauseMappableExprCommon
 Struct that defines common infrastructure to handle mappable expressions used in OpenMP clauses. More...
 
class  clang::OMPClauseMappableExprCommon::MappableComponent
 Class that represents a component of a mappable expression. More...
 
struct  clang::OMPMappableExprListSizeTy
 This structure contains all sizes needed for by an OMPMappableExprListClause. More...
 
class  clang::OMPMappableExprListClause< T >
 This represents clauses with a list of expressions that are mappable. More...
 
class  clang::OMPMappableExprListClause< T >::const_component_lists_iterator
 Iterator that browse the components by lists. More...
 
class  clang::OMPMapClause
 This represents clause 'map' in the '#pragma omp ...' directives. More...
 
class  clang::OMPNumTeamsClause
 This represents 'num_teams' clause in the '#pragma omp ...' directive. More...
 
class  clang::OMPThreadLimitClause
 This represents 'thread_limit' clause in the '#pragma omp ...' directive. More...
 
class  clang::OMPPriorityClause
 This represents 'priority' clause in the '#pragma omp ...' directive. More...
 
class  clang::OMPGrainsizeClause
 This represents 'grainsize' clause in the '#pragma omp ...' directive. More...
 
class  clang::OMPNogroupClause
 This represents 'nogroup' clause in the '#pragma omp ...' directive. More...
 
class  clang::OMPNumTasksClause
 This represents 'num_tasks' clause in the '#pragma omp ...' directive. More...
 
class  clang::OMPHintClause
 This represents 'hint' clause in the '#pragma omp ...' directive. More...
 
class  clang::OMPDistScheduleClause
 This represents 'dist_schedule' clause in the '#pragma omp ...' directive. More...
 
class  clang::OMPDefaultmapClause
 This represents 'defaultmap' clause in the '#pragma omp ...' directive. More...
 
class  clang::OMPToClause
 This represents clause 'to' in the '#pragma omp ...' directives. More...
 
class  clang::OMPFromClause
 This represents clause 'from' in the '#pragma omp ...' directives. More...
 
class  clang::OMPUseDevicePtrClause
 This represents clause 'use_device_ptr' in the '#pragma omp ...' directives. More...
 
class  clang::OMPUseDeviceAddrClause
 This represents clause 'use_device_addr' in the '#pragma omp ...' directives. More...
 
class  clang::OMPIsDevicePtrClause
 This represents clause 'is_device_ptr' in the '#pragma omp ...' directives. More...
 
class  clang::OMPHasDeviceAddrClause
 This represents clause 'has_device_ptr' in the '#pragma omp ...' directives. More...
 
class  clang::OMPNontemporalClause
 This represents clause 'nontemporal' in the '#pragma omp ...' directives. More...
 
class  clang::OMPOrderClause
 This represents 'order' clause in the '#pragma omp ...' directive. More...
 
class  clang::OMPInitClause
 This represents the 'init' clause in '#pragma omp ...' directives. More...
 
class  clang::OMPUseClause
 This represents the 'use' clause in '#pragma omp ...' directives. More...
 
class  clang::OMPDestroyClause
 This represents 'destroy' clause in the '#pragma omp depobj' directive or the '#pragma omp interop' directive. More...
 
class  clang::OMPNovariantsClause
 This represents 'novariants' clause in the '#pragma omp ...' directive. More...
 
class  clang::OMPNocontextClause
 This represents 'nocontext' clause in the '#pragma omp ...' directive. More...
 
class  clang::OMPDetachClause
 This represents 'detach' clause in the '#pragma omp task' directive. More...
 
class  clang::OMPInclusiveClause
 This represents clause 'inclusive' in the '#pragma omp scan' directive. More...
 
class  clang::OMPExclusiveClause
 This represents clause 'exclusive' in the '#pragma omp scan' directive. More...
 
class  clang::OMPUsesAllocatorsClause
 This represents clause 'uses_allocators' in the '#pragma omp target'-based directives. More...
 
struct  clang::OMPUsesAllocatorsClause::Data
 Data for list of allocators. More...
 
class  clang::OMPAffinityClause
 This represents clause 'affinity' in the '#pragma omp task'-based directives. More...
 
class  clang::OMPFilterClause
 This represents 'filter' clause in the '#pragma omp ...' directive. More...
 
class  clang::OMPBindClause
 This represents 'bind' clause in the '#pragma omp ...' directives. More...
 
class  clang::OMPClauseVisitorBase< ImplClass, Ptr, RetTy >
 This class implements a simple visitor for OMPClause subclasses. More...
 
class  clang::OMPClauseVisitor< ImplClass, RetTy >
 
class  clang::ConstOMPClauseVisitor< ImplClass, RetTy >
 
class  clang::OMPClausePrinter
 
struct  clang::OMPTraitProperty
 
struct  clang::OMPTraitSelector
 
struct  clang::OMPTraitSet
 
class  clang::OMPTraitInfo
 Helper data structure representing the traits in a match clause of an declare variant or metadirective. More...
 
struct  clang::TargetOMPContext
 Clang specific specialization of the OMPContext to lookup target features. More...
 
class  clang::OMPChildren
 Contains data for OpenMP directives: clauses, children expressions/statements (helpers for codegen) and associated statement, if any. More...
 
class  clang::OMPXDynCGroupMemClause
 This represents 'ompx_dyn_cgroup_mem' clause in the '#pragma omp target ...' directive. More...
 
class  clang::OMPDoacrossClause
 This represents the 'doacross' clause for the '#pragma omp ordered' directive. More...
 
class  clang::OMPXAttributeClause
 This represents 'ompx_attribute' clause in a directive that might generate an outlined function. More...
 
class  clang::OMPXBareClause
 This represents 'ompx_bare' clause in the '#pragma omp target teams ...' directive. More...
 

Namespaces

namespace  clang
 The JSON file list parser is used to communicate input to InstallAPI.
 

Macros

#define PTR(CLASS)   Ptr<CLASS>
 
#define DISPATCH(CLASS)    return static_cast<ImplClass*>(this)->Visit##CLASS(static_cast<PTR(CLASS)>(S))
 
#define GEN_CLANG_CLAUSE_CLASS
 
#define CLAUSE_CLASS(Enum, Str, Class)    RetTy Visit##Class(PTR(Class) S) { DISPATCH(Class); }
 
#define GEN_CLANG_CLAUSE_CLASS
 
#define CLAUSE_CLASS(Enum, Str, Class)
 
#define CLAUSE_NO_CLASS(Enum, Str)
 
#define GEN_CLANG_CLAUSE_CLASS
 
#define CLAUSE_CLASS(Enum, Str, Class)   void Visit##Class(Class *S);
 

Typedefs

template<typename T >
using clang::const_ptr = std::add_pointer_t< std::add_const_t< T > >
 

Functions

llvm::raw_ostream & clang::operator<< (llvm::raw_ostream &OS, const OMPTraitInfo &TI)
 
llvm::raw_ostream & clang::operator<< (llvm::raw_ostream &OS, const OMPTraitInfo *TI)
 

Detailed Description

This file defines OpenMP AST classes for clauses.

There are clauses for executable directives, clauses for declarative directives and clauses which can be used in both kinds of directives.

Definition in file OpenMPClause.h.

Macro Definition Documentation

◆ CLAUSE_CLASS [1/3]

#define CLAUSE_CLASS (   Enum,
  Str,
  Class 
)     RetTy Visit##Class(PTR(Class) S) { DISPATCH(Class); }

Definition at line 8899 of file OpenMPClause.h.

◆ CLAUSE_CLASS [2/3]

#define CLAUSE_CLASS (   Enum,
  Str,
  Class 
)
Value:
case llvm::omp::Clause::Enum: \
return Visit##Class(static_cast<PTR(Class)>(S));
#define PTR(CLASS)

Definition at line 8899 of file OpenMPClause.h.

◆ CLAUSE_CLASS [3/3]

#define CLAUSE_CLASS (   Enum,
  Str,
  Class 
)    void Visit##Class(Class *S);

Definition at line 8899 of file OpenMPClause.h.

◆ CLAUSE_NO_CLASS

#define CLAUSE_NO_CLASS (   Enum,
  Str 
)
Value:
case llvm::omp::Clause::Enum: \
break;

◆ DISPATCH

#define DISPATCH (   CLASS)     return static_cast<ImplClass*>(this)->Visit##CLASS(static_cast<PTR(CLASS)>(S))

Definition at line 8849 of file OpenMPClause.h.

◆ GEN_CLANG_CLAUSE_CLASS [1/3]

#define GEN_CLANG_CLAUSE_CLASS

Definition at line 8898 of file OpenMPClause.h.

◆ GEN_CLANG_CLAUSE_CLASS [2/3]

#define GEN_CLANG_CLAUSE_CLASS

Definition at line 8898 of file OpenMPClause.h.

◆ GEN_CLANG_CLAUSE_CLASS [3/3]

#define GEN_CLANG_CLAUSE_CLASS

Definition at line 8898 of file OpenMPClause.h.

◆ PTR

#define PTR (   CLASS)    Ptr<CLASS>

Definition at line 8848 of file OpenMPClause.h.