clang  3.9.0
Macros | Enumerations | Functions
SemaOpenMP.cpp File Reference

This file implements semantic analysis for OpenMP directives and clauses. More...

#include "TreeTransform.h"
#include "clang/AST/ASTContext.h"
#include "clang/AST/ASTMutationListener.h"
#include "clang/AST/CXXInheritance.h"
#include "clang/AST/Decl.h"
#include "clang/AST/DeclCXX.h"
#include "clang/AST/DeclOpenMP.h"
#include "clang/AST/StmtCXX.h"
#include "clang/AST/StmtOpenMP.h"
#include "clang/AST/StmtVisitor.h"
#include "clang/AST/TypeOrdering.h"
#include "clang/Basic/OpenMPKinds.h"
#include "clang/Basic/TargetInfo.h"
#include "clang/Lex/Preprocessor.h"
#include "clang/Sema/Initialization.h"
#include "clang/Sema/Lookup.h"
#include "clang/Sema/Scope.h"
#include "clang/Sema/ScopeInfo.h"
#include "clang/Sema/SemaInternal.h"
Include dependency graph for SemaOpenMP.cpp:

Go to the source code of this file.

Macros

#define DSAStack   static_cast<DSAStackTy *>(VarDataSharingAttributesStack)
 

Enumerations

enum  DefaultDataSharingAttributes
 Default data sharing attributes, which can be applied to directive. More...
 

Functions

static ValueDeclgetCanonicalDecl (ValueDecl *D)
 
static VarDeclbuildVarDecl (Sema &SemaRef, SourceLocation Loc, QualType Type, StringRef Name, const AttrVec *Attrs=nullptr)
 Build a variable declaration for OpenMP loop iteration variable. More...
 
static DeclRefExprbuildDeclRefExpr (Sema &S, VarDecl *D, QualType Ty, SourceLocation Loc, bool RefersToCapture=false)
 
static bool FinishOpenMPLinearClause (OMPLinearClause &Clause, DeclRefExpr *IV, Expr *NumIterations, Sema &SemaRef, Scope *S, DSAStackTy *Stack)
 
static void ReportOriginalDSA (Sema &SemaRef, DSAStackTy *Stack, const ValueDecl *D, DSAStackTy::DSAVarData DVar, bool IsLoopIterVar=false)
 
static OMPCapturedExprDeclbuildCaptureDecl (Sema &S, IdentifierInfo *Id, Expr *CaptureExpr, bool WithInit, bool AsExpression)
 
static DeclRefExprbuildCapture (Sema &S, ValueDecl *D, Expr *CaptureExpr, bool WithInit)
 
static ExprResult buildCapture (Sema &S, Expr *CaptureExpr, DeclRefExpr *&Ref)
 
static bool CheckNestingOfRegions (Sema &SemaRef, DSAStackTy *Stack, OpenMPDirectiveKind CurrentRegion, const DeclarationNameInfo &CurrentName, OpenMPDirectiveKind CancelRegion, SourceLocation StartLoc)
 
static bool checkIfClauses (Sema &S, OpenMPDirectiveKind Kind, ArrayRef< OMPClause * > Clauses, ArrayRef< OpenMPDirectiveKind > AllowedNameModifiers)
 
static bool CheckOpenMPIterationSpace (OpenMPDirectiveKind DKind, Stmt *S, Sema &SemaRef, DSAStackTy &DSA, unsigned CurrentNestedLoopCount, unsigned NestedLoopCount, Expr *CollapseLoopCountExpr, Expr *OrderedLoopCountExpr, llvm::DenseMap< ValueDecl *, Expr * > &VarsWithImplicitDSA, LoopIterationSpace &ResultIterSpace, llvm::MapVector< Expr *, DeclRefExpr * > &Captures)
 Called on a for stmt to check and extract its iteration space for further processing (such as collapsing). More...
 
static ExprResult BuildCounterInit (Sema &SemaRef, Scope *S, SourceLocation Loc, ExprResult VarRef, ExprResult Start, llvm::MapVector< Expr *, DeclRefExpr * > &Captures)
 Build 'VarRef = Start. More...
 
static ExprResult BuildCounterUpdate (Sema &SemaRef, Scope *S, SourceLocation Loc, ExprResult VarRef, ExprResult Start, ExprResult Iter, ExprResult Step, bool Subtract, llvm::MapVector< Expr *, DeclRefExpr * > *Captures=nullptr)
 Build 'VarRef = Start + Iter * Step'. More...
 
static ExprResult WidenIterationCount (unsigned Bits, Expr *E, Sema &SemaRef)
 Convert integer expression E to make it have at least Bits bits. More...
 
static bool FitsInto (unsigned Bits, bool Signed, Expr *E, Sema &SemaRef)
 Check if the given expression E is a constant integer that fits into Bits bits. More...
 
static StmtbuildPreInits (ASTContext &Context, SmallVectorImpl< Decl * > &PreInits)
 Build preinits statement for the given declarations. More...
 
static StmtbuildPreInits (ASTContext &Context, llvm::MapVector< Expr *, DeclRefExpr * > &Captures)
 Build preinits statement for the given declarations. More...
 
static ExprbuildPostUpdate (Sema &S, ArrayRef< Expr * > PostUpdates)
 Build postupdate expression for the given list of postupdates expressions. More...
 
static unsigned CheckOpenMPLoop (OpenMPDirectiveKind DKind, Expr *CollapseLoopCountExpr, Expr *OrderedLoopCountExpr, Stmt *AStmt, Sema &SemaRef, DSAStackTy &DSA, llvm::DenseMap< ValueDecl *, Expr * > &VarsWithImplicitDSA, OMPLoopDirective::HelperExprs &Built)
 Called on a for stmt to check itself and nested loops (if any). More...
 
static ExprgetCollapseNumberExpr (ArrayRef< OMPClause * > Clauses)
 
static ExprgetOrderedNumberExpr (ArrayRef< OMPClause * > Clauses)
 
static bool checkSimdlenSafelenSpecified (Sema &S, const ArrayRef< OMPClause * > Clauses)
 
static bool HasMapClause (ArrayRef< OMPClause * > Clauses)
 Check for existence of a map clause in the list of clauses. More...
 
static bool checkGrainsizeNumTasksClauses (Sema &S, ArrayRef< OMPClause * > Clauses)
 
static bool IsNonNegativeIntegerValue (Expr *&ValExpr, Sema &SemaRef, OpenMPClauseKind CKind, bool StrictlyPositive)
 
static std::string getListOfPossibleValues (OpenMPClauseKind K, unsigned First, unsigned Last, ArrayRef< unsigned > Exclude=llvm::None)
 
static bool checkScheduleModifiers (Sema &S, OpenMPScheduleClauseModifier M1, OpenMPScheduleClauseModifier M2, SourceLocation M1Loc, SourceLocation M2Loc)
 
static std::pair< ValueDecl
*, bool
getPrivateItem (Sema &S, Expr *&RefExpr, SourceLocation &ELoc, SourceRange &ERange, bool AllowArraySection=false)
 
template<typename T >
static T filterLookupForUDR (SmallVectorImpl< UnresolvedSet< 8 >> &Lookups, const llvm::function_ref< T(ValueDecl *)> &Gen)
 
static ExprResult buildDeclareReductionRef (Sema &SemaRef, SourceLocation Loc, SourceRange Range, Scope *S, CXXScopeSpec &ReductionIdScopeSpec, const DeclarationNameInfo &ReductionId, QualType Ty, CXXCastPath &BasePath, Expr *UnresolvedReduction)
 
static bool IsCXXRecordForMappable (Sema &SemaRef, SourceLocation Loc, DSAStackTy *Stack, CXXRecordDecl *RD)
 
static bool CheckTypeMappable (SourceLocation SL, SourceRange SR, Sema &SemaRef, DSAStackTy *Stack, QualType QTy)
 
static bool CheckArrayExpressionDoesNotReferToWholeSize (Sema &SemaRef, const Expr *E, QualType BaseQTy)
 Return true if it can be proven that the provided array expression (array section or array subscript) does NOT specify the whole size of the array whose base type is BaseQTy. More...
 
static bool CheckArrayExpressionDoesNotReferToUnitySize (Sema &SemaRef, const Expr *E, QualType BaseQTy)
 
static ExprCheckMapClauseExpressionBase (Sema &SemaRef, Expr *E, OMPClauseMappableExprCommon::MappableExprComponentList &CurComponents, OpenMPClauseKind CKind)
 
static bool CheckMapConflicts (Sema &SemaRef, DSAStackTy *DSAS, ValueDecl *VD, Expr *E, bool CurrentRegionOnly, OMPClauseMappableExprCommon::MappableExprComponentListRef CurComponents, OpenMPClauseKind CKind)
 
static void checkMappableExpressionList (Sema &SemaRef, DSAStackTy *DSAS, OpenMPClauseKind CKind, MappableVarListInfo &MVLI, SourceLocation StartLoc, OpenMPMapClauseKind MapType=OMPC_MAP_unknown, bool IsMapTypeImplicit=false)
 
static void checkDeclInTargetContext (SourceLocation SL, SourceRange SR, Sema &SemaRef, Decl *D)
 
static bool checkValueDeclInTarget (SourceLocation SL, SourceRange SR, Sema &SemaRef, DSAStackTy *Stack, ValueDecl *VD)
 

Detailed Description

This file implements semantic analysis for OpenMP directives and clauses.

Definition in file SemaOpenMP.cpp.

Macro Definition Documentation

#define DSAStack   static_cast<DSAStackTy *>(VarDataSharingAttributesStack)

Definition at line 840 of file SemaOpenMP.cpp.

Referenced by clang::Sema::ActOnOpenMPAlignedClause(), clang::Sema::ActOnOpenMPCancelDirective(), clang::Sema::ActOnOpenMPCancellationPointDirective(), clang::Sema::ActOnOpenMPCopyinClause(), clang::Sema::ActOnOpenMPCopyprivateClause(), clang::Sema::ActOnOpenMPCriticalDirective(), clang::Sema::ActOnOpenMPDefaultClause(), clang::Sema::ActOnOpenMPDependClause(), clang::Sema::ActOnOpenMPDistributeDirective(), clang::Sema::ActOnOpenMPDistributeParallelForDirective(), clang::Sema::ActOnOpenMPDistributeParallelForSimdDirective(), clang::Sema::ActOnOpenMPDistributeSimdDirective(), clang::Sema::ActOnOpenMPDistScheduleClause(), clang::Sema::ActOnOpenMPExecutableDirective(), clang::Sema::ActOnOpenMPFirstprivateClause(), clang::Sema::ActOnOpenMPForDirective(), clang::Sema::ActOnOpenMPForSimdDirective(), clang::Sema::ActOnOpenMPFromClause(), clang::Sema::ActOnOpenMPIdExpression(), clang::Sema::ActOnOpenMPLastprivateClause(), clang::Sema::ActOnOpenMPLinearClause(), clang::Sema::ActOnOpenMPLoopInitialization(), clang::Sema::ActOnOpenMPMapClause(), clang::Sema::ActOnOpenMPNowaitClause(), clang::Sema::ActOnOpenMPOrderedClause(), clang::Sema::ActOnOpenMPOrderedDirective(), clang::Sema::ActOnOpenMPParallelDirective(), clang::Sema::ActOnOpenMPParallelForDirective(), clang::Sema::ActOnOpenMPParallelForSimdDirective(), clang::Sema::ActOnOpenMPParallelSectionsDirective(), clang::Sema::ActOnOpenMPPrivateClause(), clang::Sema::ActOnOpenMPReductionClause(), clang::Sema::ActOnOpenMPRegionEnd(), clang::Sema::ActOnOpenMPRegionStart(), clang::Sema::ActOnOpenMPScheduleClause(), clang::Sema::ActOnOpenMPSectionDirective(), clang::Sema::ActOnOpenMPSectionsDirective(), clang::Sema::ActOnOpenMPSharedClause(), clang::Sema::ActOnOpenMPSimdDirective(), clang::Sema::ActOnOpenMPTargetDirective(), clang::Sema::ActOnOpenMPTargetParallelForDirective(), clang::Sema::ActOnOpenMPTargetParallelForSimdDirective(), clang::Sema::ActOnOpenMPTaskDirective(), clang::Sema::ActOnOpenMPTaskLoopDirective(), clang::Sema::ActOnOpenMPTaskLoopSimdDirective(), clang::Sema::ActOnOpenMPToClause(), clang::Sema::checkDeclIsAllowedInOpenMPTarget(), clang::Sema::CheckOMPThreadPrivateDecl(), clang::Sema::EndOpenMPClause(), clang::Sema::EndOpenMPDSABlock(), clang::Sema::IsOpenMPCapturedByRef(), clang::Sema::IsOpenMPCapturedDecl(), clang::Sema::isOpenMPPrivateDecl(), clang::Sema::isOpenMPTargetCapturedDecl(), clang::Sema::StartOpenMPClause(), and clang::Sema::StartOpenMPDSABlock().

Enumeration Type Documentation

Default data sharing attributes, which can be applied to directive.

Definition at line 42 of file SemaOpenMP.cpp.

Function Documentation

static DeclRefExpr* buildCapture ( Sema S,
ValueDecl D,
Expr CaptureExpr,
bool  WithInit 
)
static
static ExprResult buildCapture ( Sema S,
Expr CaptureExpr,
DeclRefExpr *&  Ref 
)
static
static OMPCapturedExprDecl* buildCaptureDecl ( Sema S,
IdentifierInfo Id,
Expr CaptureExpr,
bool  WithInit,
bool  AsExpression 
)
static
static ExprResult BuildCounterInit ( Sema SemaRef,
Scope S,
SourceLocation  Loc,
ExprResult  VarRef,
ExprResult  Start,
llvm::MapVector< Expr *, DeclRefExpr * > &  Captures 
)
static
static ExprResult BuildCounterUpdate ( Sema SemaRef,
Scope S,
SourceLocation  Loc,
ExprResult  VarRef,
ExprResult  Start,
ExprResult  Iter,
ExprResult  Step,
bool  Subtract,
llvm::MapVector< Expr *, DeclRefExpr * > *  Captures = nullptr 
)
static
static ExprResult buildDeclareReductionRef ( Sema SemaRef,
SourceLocation  Loc,
SourceRange  Range,
Scope S,
CXXScopeSpec ReductionIdScopeSpec,
const DeclarationNameInfo ReductionId,
QualType  Ty,
CXXCastPath BasePath,
Expr UnresolvedReduction 
)
static
static DeclRefExpr* buildDeclRefExpr ( Sema S,
VarDecl D,
QualType  Ty,
SourceLocation  Loc,
bool  RefersToCapture = false 
)
static
static Expr* buildPostUpdate ( Sema S,
ArrayRef< Expr * >  PostUpdates 
)
static
static Stmt* buildPreInits ( ASTContext Context,
SmallVectorImpl< Decl * > &  PreInits 
)
static
static Stmt* buildPreInits ( ASTContext Context,
llvm::MapVector< Expr *, DeclRefExpr * > &  Captures 
)
static

Build preinits statement for the given declarations.

Definition at line 4896 of file SemaOpenMP.cpp.

References buildPreInits().

static VarDecl* buildVarDecl ( Sema SemaRef,
SourceLocation  Loc,
QualType  Type,
StringRef  Name,
const AttrVec Attrs = nullptr 
)
static
static bool CheckArrayExpressionDoesNotReferToUnitySize ( Sema SemaRef,
const Expr E,
QualType  BaseQTy 
)
static
static bool CheckArrayExpressionDoesNotReferToWholeSize ( Sema SemaRef,
const Expr E,
QualType  BaseQTy 
)
static

Return true if it can be proven that the provided array expression (array section or array subscript) does NOT specify the whole size of the array whose base type is BaseQTy.

Definition at line 10315 of file SemaOpenMP.cpp.

References E, clang::Sema::getASTContext(), clang::ConstantArrayType::getSize(), clang::QualType::getTypePtr(), clang::Type::isPointerType(), and Length.

Referenced by CheckMapClauseExpressionBase().

static void checkDeclInTargetContext ( SourceLocation  SL,
SourceRange  SR,
Sema SemaRef,
Decl D 
)
static
static bool checkGrainsizeNumTasksClauses ( Sema S,
ArrayRef< OMPClause * >  Clauses 
)
static
static bool checkIfClauses ( Sema S,
OpenMPDirectiveKind  Kind,
ArrayRef< OMPClause * >  Clauses,
ArrayRef< OpenMPDirectiveKind AllowedNameModifiers 
)
static
static Expr* CheckMapClauseExpressionBase ( Sema SemaRef,
Expr E,
OMPClauseMappableExprCommon::MappableExprComponentList CurComponents,
OpenMPClauseKind  CKind 
)
static
static bool CheckMapConflicts ( Sema SemaRef,
DSAStackTy *  DSAS,
ValueDecl VD,
Expr E,
bool  CurrentRegionOnly,
OMPClauseMappableExprCommon::MappableExprComponentListRef  CurComponents,
OpenMPClauseKind  CKind 
)
static
static void checkMappableExpressionList ( Sema SemaRef,
DSAStackTy *  DSAS,
OpenMPClauseKind  CKind,
MappableVarListInfo &  MVLI,
SourceLocation  StartLoc,
OpenMPMapClauseKind  MapType = OMPC_MAP_unknown,
bool  IsMapTypeImplicit = false 
)
static
static bool CheckNestingOfRegions ( Sema SemaRef,
DSAStackTy *  Stack,
OpenMPDirectiveKind  CurrentRegion,
const DeclarationNameInfo CurrentName,
OpenMPDirectiveKind  CancelRegion,
SourceLocation  StartLoc 
)
static
static bool CheckOpenMPIterationSpace ( OpenMPDirectiveKind  DKind,
Stmt S,
Sema SemaRef,
DSAStackTy &  DSA,
unsigned  CurrentNestedLoopCount,
unsigned  NestedLoopCount,
Expr CollapseLoopCountExpr,
Expr OrderedLoopCountExpr,
llvm::DenseMap< ValueDecl *, Expr * > &  VarsWithImplicitDSA,
LoopIterationSpace &  ResultIterSpace,
llvm::MapVector< Expr *, DeclRefExpr * > &  Captures 
)
static
static unsigned CheckOpenMPLoop ( OpenMPDirectiveKind  DKind,
Expr CollapseLoopCountExpr,
Expr OrderedLoopCountExpr,
Stmt AStmt,
Sema SemaRef,
DSAStackTy &  DSA,
llvm::DenseMap< ValueDecl *, Expr * > &  VarsWithImplicitDSA,
OMPLoopDirective::HelperExprs Built 
)
static

Called on a for stmt to check itself and nested loops (if any).

Returns
Returns 0 if one of the collapsed stmts is not canonical for loop, number of collapsed loops otherwise.

Definition at line 4931 of file SemaOpenMP.cpp.

References clang::Sema::AA_Converting, clang::Sema::ActOnConditionalOp(), clang::Sema::ActOnFinishFullExpr(), clang::Sema::ActOnIntegerConstant(), clang::Sema::AddInitializerToDecl(), clang::Sema::BuildBinOp(), BuildCounterInit(), BuildCounterUpdate(), buildDeclRefExpr(), buildPreInits(), buildVarDecl(), clang::OMPLoopDirective::HelperExprs::CalcLastIteration, CheckOpenMPIterationSpace(), clang::OMPLoopDirective::HelperExprs::clear(), clang::OMPLoopDirective::HelperExprs::Cond, clang::Sema::Context, clang::OMPLoopDirective::HelperExprs::Counters, clang::Sema::CurContext, clang::Sema::DefaultLvalueConversion(), clang::Sema::Diag(), clang::OMPLoopDirective::HelperExprs::EUB, clang::Expr::EvaluateAsInt(), clang::OMPLoopDirective::HelperExprs::Finals, FitsInto(), clang::ActionResult< PtrTy, CompressInvalid >::get(), clang::Sema::getASTContext(), clang::Expr::getExprLoc(), clang::ASTContext::getIntTypeForBitwidth(), clang::Expr::getType(), clang::ASTContext::getTypeSize(), clang::Type::hasSignedIntegerRepresentation(), I, clang::OMPLoopDirective::HelperExprs::IL, clang::OMPLoopDirective::HelperExprs::Inc, clang::OMPLoopDirective::HelperExprs::Init, clang::OMPLoopDirective::HelperExprs::Inits, clang::DeclContext::isDependentContext(), clang::Expr::isIntegerConstantExpr(), clang::isOpenMPDistributeDirective(), clang::isOpenMPLoopBoundSharingDirective(), clang::isOpenMPTaskLoopDirective(), clang::isOpenMPWorksharingDirective(), clang::ActionResult< PtrTy, CompressInvalid >::isUnset(), clang::ActionResult< PtrTy, CompressInvalid >::isUsable(), clang::OMPLoopDirective::HelperExprs::IterationVarRef, clang::OMPLoopDirective::HelperExprs::LastIteration, clang::OMPLoopDirective::HelperExprs::LB, clang::OMPLoopDirective::HelperExprs::NLB, clang::OMPLoopDirective::HelperExprs::NUB, clang::OMPLoopDirective::HelperExprs::NumIterations, clang::Sema::PerformImplicitConversion(), clang::OMPLoopDirective::HelperExprs::PreCond, clang::OMPLoopDirective::HelperExprs::PreInits, clang::OMPLoopDirective::HelperExprs::PrevLB, clang::OMPLoopDirective::HelperExprs::PrevUB, clang::OMPLoopDirective::HelperExprs::PrivateCounters, clang::Result, clang::OMPLoopDirective::HelperExprs::ST, clang::OMPLoopDirective::HelperExprs::UB, clang::OMPLoopDirective::HelperExprs::Updates, and WidenIterationCount().

Referenced by clang::Sema::ActOnOpenMPDistributeDirective(), clang::Sema::ActOnOpenMPDistributeParallelForDirective(), clang::Sema::ActOnOpenMPDistributeParallelForSimdDirective(), clang::Sema::ActOnOpenMPDistributeSimdDirective(), clang::Sema::ActOnOpenMPForDirective(), clang::Sema::ActOnOpenMPForSimdDirective(), clang::Sema::ActOnOpenMPParallelForDirective(), clang::Sema::ActOnOpenMPParallelForSimdDirective(), clang::Sema::ActOnOpenMPSimdDirective(), clang::Sema::ActOnOpenMPTargetParallelForDirective(), clang::Sema::ActOnOpenMPTargetParallelForSimdDirective(), clang::Sema::ActOnOpenMPTaskLoopDirective(), and clang::Sema::ActOnOpenMPTaskLoopSimdDirective().

static bool checkScheduleModifiers ( Sema S,
OpenMPScheduleClauseModifier  M1,
OpenMPScheduleClauseModifier  M2,
SourceLocation  M1Loc,
SourceLocation  M2Loc 
)
static
static bool checkSimdlenSafelenSpecified ( Sema S,
const ArrayRef< OMPClause * >  Clauses 
)
static
static bool CheckTypeMappable ( SourceLocation  SL,
SourceRange  SR,
Sema SemaRef,
DSAStackTy *  Stack,
QualType  QTy 
)
static
static bool checkValueDeclInTarget ( SourceLocation  SL,
SourceRange  SR,
Sema SemaRef,
DSAStackTy *  Stack,
ValueDecl VD 
)
static
template<typename T >
static T filterLookupForUDR ( SmallVectorImpl< UnresolvedSet< 8 >> &  Lookups,
const llvm::function_ref< T(ValueDecl *)> &  Gen 
)
static

Definition at line 8850 of file SemaOpenMP.cpp.

static bool FinishOpenMPLinearClause ( OMPLinearClause Clause,
DeclRefExpr IV,
Expr NumIterations,
Sema SemaRef,
Scope S,
DSAStackTy *  Stack 
)
static
static bool FitsInto ( unsigned  Bits,
bool  Signed,
Expr E,
Sema SemaRef 
)
static

Check if the given expression E is a constant integer that fits into Bits bits.

Definition at line 4875 of file SemaOpenMP.cpp.

References clang::Sema::Context, clang::Expr::isIntegerConstantExpr(), and clang::Result.

Referenced by CheckOpenMPLoop().

static ValueDecl* getCanonicalDecl ( ValueDecl D)
static
static Expr* getCollapseNumberExpr ( ArrayRef< OMPClause * >  Clauses)
static
static std::string getListOfPossibleValues ( OpenMPClauseKind  K,
unsigned  First,
unsigned  Last,
ArrayRef< unsigned Exclude = llvm::None 
)
static
static Expr* getOrderedNumberExpr ( ArrayRef< OMPClause * >  Clauses)
static
static std::pair<ValueDecl *, bool> getPrivateItem ( Sema S,
Expr *&  RefExpr,
SourceLocation ELoc,
SourceRange ERange,
bool  AllowArraySection = false 
)
static
static bool HasMapClause ( ArrayRef< OMPClause * >  Clauses)
static

Check for existence of a map clause in the list of clauses.

Definition at line 6790 of file SemaOpenMP.cpp.

References E, and I.

Referenced by clang::Sema::ActOnOpenMPTargetDataDirective(), clang::Sema::ActOnOpenMPTargetEnterDataDirective(), and clang::Sema::ActOnOpenMPTargetExitDataDirective().

static bool IsCXXRecordForMappable ( Sema SemaRef,
SourceLocation  Loc,
DSAStackTy *  Stack,
CXXRecordDecl RD 
)
static
static bool IsNonNegativeIntegerValue ( Expr *&  ValExpr,
Sema SemaRef,
OpenMPClauseKind  CKind,
bool  StrictlyPositive 
)
static
static void ReportOriginalDSA ( Sema SemaRef,
DSAStackTy *  Stack,
const ValueDecl D,
DSAStackTy::DSAVarData  DVar,
bool  IsLoopIterVar = false 
)
static
static ExprResult WidenIterationCount ( unsigned  Bits,
Expr E,
Sema SemaRef 
)
static

Convert integer expression E to make it have at least Bits bits.

Definition at line 4858 of file SemaOpenMP.cpp.

References clang::Sema::AA_Converting, clang::Sema::Context, clang::ExprError(), clang::Expr::getType(), and clang::Sema::PerformImplicitConversion().

Referenced by CheckOpenMPLoop().