clang  3.7.0
Public Member Functions | Static Public Member Functions | Friends | List of all members
clang::OMPAtomicDirective Class Reference

This represents '#pragma omp atomic' directive. More...

#include <StmtOpenMP.h>

Inheritance diagram for clang::OMPAtomicDirective:
[legend]
Collaboration diagram for clang::OMPAtomicDirective:
[legend]

Public Member Functions

ExprgetX ()
 Get 'x' part of the associated expression/statement. More...
 
const ExprgetX () const
 
ExprgetUpdateExpr ()
 Get helper expression of the form 'OpaqueValueExpr(x) binop OpaqueValueExpr(expr)' or 'OpaqueValueExpr(expr) binop OpaqueValueExpr(x)'. More...
 
const ExprgetUpdateExpr () const
 
bool isXLHSInRHSPart () const
 Return true if helper update expression has form 'OpaqueValueExpr(x) binop OpaqueValueExpr(expr)' and false if it has form 'OpaqueValueExpr(expr) binop OpaqueValueExpr(x)'. More...
 
bool isPostfixUpdate () const
 Return true if 'v' expression must be updated to original value of 'x', false if 'v' must be updated to the new value of 'x'. More...
 
ExprgetV ()
 Get 'v' part of the associated expression/statement. More...
 
const ExprgetV () const
 
ExprgetExpr ()
 Get 'expr' part of the associated expression/statement. More...
 
const ExprgetExpr () const
 
- Public Member Functions inherited from clang::OMPExecutableDirective
template<typename Fn >
filtered_clause_iterator< Fn > getFilteredClauses (Fn &&fn) const
 
filtered_clause_iterator
< ClauseKindFilter
getClausesOfKind (OpenMPClauseKind Kind) const
 
const OMPClausegetSingleClause (OpenMPClauseKind K) const
 Gets a single clause of the specified kind K associated with the current directive iff there is only one clause of this kind (and assertion is fired if there is more than one clause is associated with the directive). Returns nullptr if no clause of kind K is associated with the directive. More...
 
SourceLocation getLocStart () const
 Returns starting location of directive kind. More...
 
SourceLocation getLocEnd () const
 Returns ending location of directive. More...
 
void setLocStart (SourceLocation Loc)
 Set starting location of directive kind. More...
 
void setLocEnd (SourceLocation Loc)
 Set ending location of directive. More...
 
unsigned getNumClauses () const
 Get number of clauses. More...
 
OMPClausegetClause (unsigned i) const
 Returns specified clause. More...
 
bool hasAssociatedStmt () const
 Returns true if directive has associated statement. More...
 
StmtgetAssociatedStmt () const
 Returns statement associated with the directive. More...
 
OpenMPDirectiveKind getDirectiveKind () const
 
child_range children ()
 
ArrayRef< OMPClause * > clauses ()
 
ArrayRef< OMPClause * > clauses () const
 

Static Public Member Functions

static OMPAtomicDirectiveCreate (const ASTContext &C, SourceLocation StartLoc, SourceLocation EndLoc, ArrayRef< OMPClause * > Clauses, Stmt *AssociatedStmt, Expr *X, Expr *V, Expr *E, Expr *UE, bool IsXLHSInRHSPart, bool IsPostfixUpdate)
 Creates directive with a list of Clauses and 'x', 'v' and 'expr' parts of the atomic construct (see Section 2.12.6, atomic Construct, for detailed description of 'x', 'v' and 'expr'). More...
 
static OMPAtomicDirectiveCreateEmpty (const ASTContext &C, unsigned NumClauses, EmptyShell)
 Creates an empty directive with the place for NumClauses clauses. More...
 
static bool classof (const Stmt *T)
 
- Static Public Member Functions inherited from clang::OMPExecutableDirective
static bool classof (const Stmt *S)
 

Friends

class ASTStmtReader
 

Additional Inherited Members

- Protected Member Functions inherited from clang::OMPExecutableDirective
template<typename T >
 OMPExecutableDirective (const T *, StmtClass SC, OpenMPDirectiveKind K, SourceLocation StartLoc, SourceLocation EndLoc, unsigned NumClauses, unsigned NumChildren)
 Build instance of directive of class K. More...
 
void setClauses (ArrayRef< OMPClause * > Clauses)
 Sets the list of variables for this clause. More...
 
void setAssociatedStmt (Stmt *S)
 Set the associated statement for the directive. More...
 

Detailed Description

This represents '#pragma omp atomic' directive.

#pragma omp atomic capture

In this example directive '#pragma omp atomic' has clause 'capture'.

Definition at line 1637 of file StmtOpenMP.h.

Member Function Documentation

static bool clang::OMPAtomicDirective::classof ( const Stmt T)
inlinestatic

Definition at line 1758 of file StmtOpenMP.h.

OMPAtomicDirective * OMPAtomicDirective::Create ( const ASTContext C,
SourceLocation  StartLoc,
SourceLocation  EndLoc,
ArrayRef< OMPClause * >  Clauses,
Stmt AssociatedStmt,
Expr X,
Expr V,
Expr E,
Expr UE,
bool  IsXLHSInRHSPart,
bool  IsPostfixUpdate 
)
static

Creates directive with a list of Clauses and 'x', 'v' and 'expr' parts of the atomic construct (see Section 2.12.6, atomic Construct, for detailed description of 'x', 'v' and 'expr').

Parameters
CAST context.
StartLocStarting location of the directive kind.
EndLocEnding Location of the directive.
ClausesList of clauses.
AssociatedStmtStatement, associated with the directive.
X'x' part of the associated expression/statement.
V'v' part of the associated expression/statement.
E'expr' part of the associated expression/statement.
UEHelper expression of the form 'OpaqueValueExpr(x) binop OpaqueValueExpr(expr)' or 'OpaqueValueExpr(expr) binop OpaqueValueExpr(x)'.
IsXLHSInRHSParttrue if UE has the first form and false if the second.
IsPostfixUpdatetrue if original value of 'x' must be stored in 'v', not an updated one.

Definition at line 2184 of file Stmt.cpp.

References clang::ASTContext::Allocate(), clang::OMPExecutableDirective::setAssociatedStmt(), and clang::OMPExecutableDirective::setClauses().

Referenced by clang::Sema::ActOnOpenMPAtomicDirective().

OMPAtomicDirective * OMPAtomicDirective::CreateEmpty ( const ASTContext C,
unsigned  NumClauses,
EmptyShell   
)
static

Creates an empty directive with the place for NumClauses clauses.

Parameters
CAST context.
NumClausesNumber of clauses.

Definition at line 2205 of file Stmt.cpp.

References clang::ASTContext::Allocate().

Expr* clang::OMPAtomicDirective::getExpr ( )
inline

Get 'expr' part of the associated expression/statement.

Definition at line 1753 of file StmtOpenMP.h.

Referenced by clang::CodeGen::CodeGenFunction::EmitOMPAtomicDirective().

const Expr* clang::OMPAtomicDirective::getExpr ( ) const
inline

Definition at line 1754 of file StmtOpenMP.h.

Expr* clang::OMPAtomicDirective::getUpdateExpr ( )
inline

Get helper expression of the form 'OpaqueValueExpr(x) binop OpaqueValueExpr(expr)' or 'OpaqueValueExpr(expr) binop OpaqueValueExpr(x)'.

Definition at line 1734 of file StmtOpenMP.h.

Referenced by clang::CodeGen::CodeGenFunction::EmitOMPAtomicDirective().

const Expr* clang::OMPAtomicDirective::getUpdateExpr ( ) const
inline

Definition at line 1737 of file StmtOpenMP.h.

Expr* clang::OMPAtomicDirective::getV ( )
inline

Get 'v' part of the associated expression/statement.

Definition at line 1748 of file StmtOpenMP.h.

Referenced by clang::CodeGen::CodeGenFunction::EmitOMPAtomicDirective().

const Expr* clang::OMPAtomicDirective::getV ( ) const
inline

Definition at line 1749 of file StmtOpenMP.h.

Expr* clang::OMPAtomicDirective::getX ( )
inline

Get 'x' part of the associated expression/statement.

Definition at line 1727 of file StmtOpenMP.h.

Referenced by clang::CodeGen::CodeGenFunction::EmitOMPAtomicDirective().

const Expr* clang::OMPAtomicDirective::getX ( ) const
inline

Definition at line 1728 of file StmtOpenMP.h.

bool clang::OMPAtomicDirective::isPostfixUpdate ( ) const
inline

Return true if 'v' expression must be updated to original value of 'x', false if 'v' must be updated to the new value of 'x'.

Definition at line 1746 of file StmtOpenMP.h.

Referenced by clang::CodeGen::CodeGenFunction::EmitOMPAtomicDirective().

bool clang::OMPAtomicDirective::isXLHSInRHSPart ( ) const
inline

Return true if helper update expression has form 'OpaqueValueExpr(x) binop OpaqueValueExpr(expr)' and false if it has form 'OpaqueValueExpr(expr) binop OpaqueValueExpr(x)'.

Definition at line 1743 of file StmtOpenMP.h.

Referenced by clang::CodeGen::CodeGenFunction::EmitOMPAtomicDirective().

Friends And Related Function Documentation

friend class ASTStmtReader
friend

Definition at line 1638 of file StmtOpenMP.h.


The documentation for this class was generated from the following files: