clang 24.0.0git
StmtOpenMP.h File Reference

This file defines OpenMP AST classes for executable directives and clauses. More...

#include "clang/AST/ASTContext.h"
#include "clang/AST/Expr.h"
#include "clang/AST/OpenMPClause.h"
#include "clang/AST/Stmt.h"
#include "clang/AST/StmtCXX.h"
#include "clang/Basic/OpenMPKinds.h"
#include "clang/Basic/SourceLocation.h"
#include "llvm/Support/Casting.h"

Go to the source code of this file.

Classes

class  OMPLoopTransformationDirective
 Common class of data shared between OMPCanonicalLoopNestTransformationDirective and OMPCanonicalLoopSequenceTransformationDirective. More...
class  OMPCanonicalLoopNestTransformationDirective
 The base class for all transformation directives of canonical loop nests. More...
class  OMPLoopDirective
 This is a common base class for loop directives ('omp simd', 'omp for', 'omp for simd' etc.). It is responsible for the loop code generation. More...
class  OMPSimdDirective
 This represents '#pragma omp simd' directive. More...
class  OMPForDirective
 This represents '#pragma omp for' directive. More...
class  OMPForSimdDirective
 This represents '#pragma omp for simd' directive. More...
class  OMPSectionsDirective
 This represents '#pragma omp sections' directive. More...
class  OMPSectionDirective
 This represents '#pragma omp section' directive. More...
class  OMPScopeDirective
 This represents '#pragma omp scope' directive. More...
class  OMPSingleDirective
 This represents '#pragma omp single' directive. More...
class  OMPMasterDirective
 This represents '#pragma omp master' directive. More...
class  OMPCriticalDirective
 This represents '#pragma omp critical' directive. More...
class  OMPParallelForDirective
 This represents '#pragma omp parallel for' directive. More...
class  OMPParallelForSimdDirective
 This represents '#pragma omp parallel for simd' directive. More...
class  OMPParallelMasterDirective
 This represents '#pragma omp parallel master' directive. More...
class  OMPParallelMaskedDirective
 This represents '#pragma omp parallel masked' directive. More...
class  OMPParallelSectionsDirective
 This represents '#pragma omp parallel sections' directive. More...
class  OMPTaskDirective
 This represents '#pragma omp task' directive. More...
class  OMPTaskyieldDirective
 This represents '#pragma omp taskyield' directive. More...
class  OMPBarrierDirective
 This represents '#pragma omp barrier' directive. More...
class  OMPTaskwaitDirective
 This represents '#pragma omp taskwait' directive. More...
class  OMPTaskgroupDirective
 This represents '#pragma omp taskgroup' directive. More...
class  OMPFlushDirective
 This represents '#pragma omp flush' directive. More...
class  OMPDepobjDirective
 This represents '#pragma omp depobj' directive. More...
class  OMPOrderedStandaloneDirective
 This represents standalone '#pragma omp ordered' directive. More...
class  OMPOrderedBlockAssocDirective
 This represents block-associated '#pragma omp ordered' directive. More...
class  OMPAtomicDirective
 This represents '#pragma omp atomic' directive. More...
struct  OMPAtomicDirective::Expressions
class  OMPTargetDirective
 This represents '#pragma omp target' directive. More...
class  OMPTargetDataDirective
 This represents '#pragma omp target data' directive. More...
class  OMPTargetEnterDataDirective
 This represents '#pragma omp target enter data' directive. More...
class  OMPTargetExitDataDirective
 This represents '#pragma omp target exit data' directive. More...
class  OMPTargetParallelDirective
 This represents '#pragma omp target parallel' directive. More...
class  OMPTargetParallelForDirective
 This represents '#pragma omp target parallel for' directive. More...
class  OMPTeamsDirective
 This represents '#pragma omp teams' directive. More...
class  OMPCancellationPointDirective
 This represents '#pragma omp cancellation point' directive. More...
class  OMPCancelDirective
 This represents '#pragma omp cancel' directive. More...
class  OMPTaskLoopDirective
 This represents '#pragma omp taskloop' directive. More...
class  OMPTaskLoopSimdDirective
 This represents '#pragma omp taskloop simd' directive. More...
class  OMPMasterTaskLoopDirective
 This represents '#pragma omp master taskloop' directive. More...
class  OMPMaskedTaskLoopDirective
 This represents '#pragma omp masked taskloop' directive. More...
class  OMPMasterTaskLoopSimdDirective
 This represents '#pragma omp master taskloop simd' directive. More...
class  OMPMaskedTaskLoopSimdDirective
 This represents '#pragma omp masked taskloop simd' directive. More...
class  OMPParallelMasterTaskLoopDirective
 This represents '#pragma omp parallel master taskloop' directive. More...
class  OMPParallelMaskedTaskLoopDirective
 This represents '#pragma omp parallel masked taskloop' directive. More...
class  OMPParallelMasterTaskLoopSimdDirective
 This represents '#pragma omp parallel master taskloop simd' directive. More...
class  OMPParallelMaskedTaskLoopSimdDirective
 This represents '#pragma omp parallel masked taskloop simd' directive. More...
class  OMPDistributeDirective
 This represents '#pragma omp distribute' directive. More...
class  OMPTargetUpdateDirective
 This represents '#pragma omp target update' directive. More...
class  OMPDistributeParallelForDirective
 This represents '#pragma omp distribute parallel for' composite directive. More...
class  OMPDistributeParallelForSimdDirective
 This represents '#pragma omp distribute parallel for simd' composite directive. More...
class  OMPDistributeSimdDirective
 This represents '#pragma omp distribute simd' composite directive. More...
class  OMPTargetParallelForSimdDirective
 This represents '#pragma omp target parallel for simd' directive. More...
class  OMPTargetSimdDirective
 This represents '#pragma omp target simd' directive. More...
class  OMPTeamsDistributeDirective
 This represents '#pragma omp teams distribute' directive. More...
class  OMPTeamsDistributeSimdDirective
 This represents '#pragma omp teams distribute simd' combined directive. More...
class  OMPTeamsDistributeParallelForSimdDirective
 This represents '#pragma omp teams distribute parallel for simd' composite directive. More...
class  OMPTeamsDistributeParallelForDirective
 This represents '#pragma omp teams distribute parallel for' composite directive. More...
class  OMPTargetTeamsDirective
 This represents '#pragma omp target teams' directive. More...
class  OMPTargetTeamsDistributeDirective
 This represents '#pragma omp target teams distribute' combined directive. More...
class  OMPTargetTeamsDistributeParallelForDirective
 This represents '#pragma omp target teams distribute parallel for' combined directive. More...
class  OMPTargetTeamsDistributeParallelForSimdDirective
 This represents '#pragma omp target teams distribute parallel for simd' combined directive. More...
class  OMPTargetTeamsDistributeSimdDirective
 This represents '#pragma omp target teams distribute simd' combined directive. More...
class  OMPTileDirective
 This represents the '#pragma omp tile' loop transformation directive. More...
class  OMPStripeDirective
 This represents the '#pragma omp stripe' loop transformation directive. More...
class  OMPUnrollDirective
 This represents the '#pragma omp unroll' loop transformation directive. More...
class  OMPReverseDirective
 Represents the '#pragma omp reverse' loop transformation directive. More...
class  OMPInterchangeDirective
 Represents the '#pragma omp interchange' loop transformation directive. More...
class  OMPCanonicalLoopSequenceTransformationDirective
 The base class for all transformation directives of canonical loop sequences (currently only 'fuse') More...
class  OMPFuseDirective
 Represents the '#pragma omp fuse' loop transformation directive. More...
class  OMPSplitDirective
 Represents the '#pragma omp split' loop transformation directive. More...
class  OMPScanDirective
 This represents '#pragma omp scan' directive. More...
class  OMPInteropDirective
 This represents '#pragma omp interop' directive. More...
class  OMPDispatchDirective
 This represents '#pragma omp dispatch' directive. More...
class  OMPMaskedDirective
 This represents '#pragma omp masked' directive. More...
class  OMPMetaDirective
 This represents '#pragma omp metadirective' directive. More...
class  OMPGenericLoopDirective
 This represents '#pragma omp loop' directive. More...
class  OMPTeamsGenericLoopDirective
 This represents '#pragma omp teams loop' directive. More...
class  OMPTargetTeamsGenericLoopDirective
 This represents '#pragma omp target teams loop' directive. More...
class  OMPParallelGenericLoopDirective
 This represents '#pragma omp parallel loop' directive. More...
class  OMPTargetParallelGenericLoopDirective
 This represents '#pragma omp target parallel loop' directive. More...
class  OMPErrorDirective
 This represents '#pragma omp error' directive. More...
class  OMPAssumeDirective
struct  llvm::CastInfo< clang::OMPLoopTransformationDirective, clang::Stmt * >
struct  llvm::CastInfo< clang::OMPLoopTransformationDirective, const clang::Stmt * >

Namespaces

namespace  clang
 Top level wrappers for InstallAPI frontend operations.
namespace  llvm
 Diagnostic wrappers for TextAPI types for error reporting.

Functions

static bool clang::doForAllLoops (Stmt *CurStmt, bool TryImperfectlyNestedLoops, unsigned NumLoops, llvm::function_ref< bool(unsigned, Stmt *)> Callback, llvm::function_ref< void(OMPLoopTransformationDirective *)> OnTransformationCallback)
static bool clang::doForAllLoops (const Stmt *CurStmt, bool TryImperfectlyNestedLoops, unsigned NumLoops, llvm::function_ref< bool(unsigned, const Stmt *)> Callback, llvm::function_ref< void(const OMPLoopTransformationDirective *)> OnTransformationCallback)
static bool clang::doForAllLoops (Stmt *CurStmt, bool TryImperfectlyNestedLoops, unsigned NumLoops, llvm::function_ref< bool(unsigned, Stmt *)> Callback)
 Calls the specified callback function for all the loops in CurStmt, from the outermost to the innermost.
static bool clang::doForAllLoops (const Stmt *CurStmt, bool TryImperfectlyNestedLoops, unsigned NumLoops, llvm::function_ref< bool(unsigned, const Stmt *)> Callback)
static void clang::doForAllLoopsBodies (Stmt *CurStmt, bool TryImperfectlyNestedLoops, unsigned NumLoops, llvm::function_ref< void(unsigned, Stmt *, Stmt *)> Callback)
 Calls the specified callback function for all the loop bodies in CurStmt, from the outermost loop to the innermost.
static void clang::doForAllLoopsBodies (const Stmt *CurStmt, bool TryImperfectlyNestedLoops, unsigned NumLoops, llvm::function_ref< void(unsigned, const Stmt *, const Stmt *)> Callback)
static bool clang::classof (const Stmt *T)

Variables

Stmt Stmtclang::Callback
Stmt Stmt llvm::function_ref< void(OMPLoopTransformationDirective *)> clang::OnTransformationCallback

Detailed Description

This file defines OpenMP AST classes for executable directives and clauses.

Definition in file StmtOpenMP.h.