clang
15.0.0git
|
#include "CGCleanup.h"
#include "CGOpenMPRuntime.h"
#include "CodeGenFunction.h"
#include "CodeGenModule.h"
#include "TargetInfo.h"
#include "clang/AST/ASTContext.h"
#include "clang/AST/Attr.h"
#include "clang/AST/DeclOpenMP.h"
#include "clang/AST/OpenMPClause.h"
#include "clang/AST/Stmt.h"
#include "clang/AST/StmtOpenMP.h"
#include "clang/AST/StmtVisitor.h"
#include "clang/Basic/OpenMPKinds.h"
#include "clang/Basic/PrettyStackTrace.h"
#include "llvm/ADT/SmallSet.h"
#include "llvm/BinaryFormat/Dwarf.h"
#include "llvm/Frontend/OpenMP/OMPConstants.h"
#include "llvm/Frontend/OpenMP/OMPIRBuilder.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DebugInfoMetadata.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/Metadata.h"
#include "llvm/Support/AtomicOrdering.h"
Go to the source code of this file.
Typedefs | |
using | EmittedClosureTy = std::pair< llvm::Function *, llvm::Value * > |
Functions | |
static const VarDecl * | getBaseDecl (const Expr *Ref) |
static void | emitCommonOMPTargetDirective (CodeGenFunction &CGF, const OMPExecutableDirective &S, const RegionCodeGenTy &CodeGen) |
static Address | castValueFromUintptr (CodeGenFunction &CGF, SourceLocation Loc, QualType DstType, StringRef Name, LValue AddrLV) |
static QualType | getCanonicalParamType (ASTContext &C, QualType T) |
static llvm::Function * | emitOutlinedFunctionPrologue (CodeGenFunction &CGF, FunctionArgList &Args, llvm::MapVector< const Decl *, std::pair< const VarDecl *, Address >> &LocalAddrs, llvm::DenseMap< const Decl *, std::pair< const Expr *, llvm::Value * >> &VLASizes, llvm::Value *&CXXThisValue, const FunctionOptions &FO) |
static void | emitPostUpdateForReductionClause (CodeGenFunction &CGF, const OMPExecutableDirective &D, const llvm::function_ref< llvm::Value *(CodeGenFunction &)> CondGen) |
static void | checkForLastprivateConditionalUpdate (CodeGenFunction &CGF, const OMPExecutableDirective &S) |
static void | emitCommonOMPParallelDirective (CodeGenFunction &CGF, const OMPExecutableDirective &S, OpenMPDirectiveKind InnermostKind, const RegionCodeGenTy &CodeGen, const CodeGenBoundParametersTy &CodeGenBoundParameters) |
static bool | isAllocatableDecl (const VarDecl *VD) |
static void | emitEmptyBoundParameters (CodeGenFunction &, const OMPExecutableDirective &, llvm::SmallVectorImpl< llvm::Value * > &) |
static void | emitBody (CodeGenFunction &CGF, const Stmt *S, const Stmt *NextLoop, int MaxLevel, int Level=0) |
static EmittedClosureTy | emitCapturedStmtFunc (CodeGenFunction &ParentCGF, const CapturedStmt *S) |
Emit a captured statement and return the function as well as its captured closure context. More... | |
static llvm::CallInst * | emitCapturedStmtCall (CodeGenFunction &ParentCGF, EmittedClosureTy Cap, llvm::ArrayRef< llvm::Value * > Args) |
Emit a call to a previously captured closure. More... | |
static void | emitAlignedClause (CodeGenFunction &CGF, const OMPExecutableDirective &D) |
static void | emitPreCond (CodeGenFunction &CGF, const OMPLoopDirective &S, const Expr *Cond, llvm::BasicBlock *TrueBlock, llvm::BasicBlock *FalseBlock, uint64_t TrueCount) |
static void | emitSimdlenSafelenClause (CodeGenFunction &CGF, const OMPExecutableDirective &D) |
static void | emitOMPLoopBodyWithStopPoint (CodeGenFunction &CGF, const OMPLoopDirective &S, CodeGenFunction::JumpDest LoopExit) |
static LValue | EmitOMPHelperVar (CodeGenFunction &CGF, const DeclRefExpr *Helper) |
Emit a helper variable and return corresponding lvalue. More... | |
static void | emitCommonSimdLoop (CodeGenFunction &CGF, const OMPLoopDirective &S, const RegionCodeGenTy &SimdInitGen, const RegionCodeGenTy &BodyCodeGen) |
static void | emitOMPSimdRegion (CodeGenFunction &CGF, const OMPLoopDirective &S, PrePostActionTy &Action) |
static bool | isSupportedByOpenMPIRBuilder (const OMPExecutableDirective &S) |
static void | emitEmptyOrdered (CodeGenFunction &, SourceLocation Loc, const unsigned IVSize, const bool IVSigned) |
static std::pair< LValue, LValue > | emitDistributeParallelForInnerBounds (CodeGenFunction &CGF, const OMPExecutableDirective &S) |
static std::pair< llvm::Value *, llvm::Value * > | emitDistributeParallelForDispatchBounds (CodeGenFunction &CGF, const OMPExecutableDirective &S, Address LB, Address UB) |
if the 'for' loop has a dispatch schedule (e.g. More... | |
static void | emitDistributeParallelForDistributeInnerBoundParams (CodeGenFunction &CGF, const OMPExecutableDirective &S, llvm::SmallVectorImpl< llvm::Value * > &CapturedVars) |
static void | emitInnerParallelForWhenCombined (CodeGenFunction &CGF, const OMPLoopDirective &S, CodeGenFunction::JumpDest LoopExit) |
static std::pair< LValue, LValue > | emitForLoopBounds (CodeGenFunction &CGF, const OMPExecutableDirective &S) |
The following two functions generate expressions for the loop lower and upper bounds in case of static and dynamic (dispatch) schedule of the associated 'for' or 'distribute' loop. More... | |
static std::pair< llvm::Value *, llvm::Value * > | emitDispatchForLoopBounds (CodeGenFunction &CGF, const OMPExecutableDirective &S, Address LB, Address UB) |
When dealing with dispatch schedules (e.g. More... | |
static void | emitScanBasedDirectiveDecls (CodeGenFunction &CGF, const OMPLoopDirective &S, llvm::function_ref< llvm::Value *(CodeGenFunction &)> NumIteratorsGen) |
Emits internal temp array declarations for the directive with inscan reductions. More... | |
static void | emitScanBasedDirectiveFinals (CodeGenFunction &CGF, const OMPLoopDirective &S, llvm::function_ref< llvm::Value *(CodeGenFunction &)> NumIteratorsGen) |
Copies final inscan reductions values to the original variables. More... | |
static void | emitScanBasedDirective (CodeGenFunction &CGF, const OMPLoopDirective &S, llvm::function_ref< llvm::Value *(CodeGenFunction &)> NumIteratorsGen, llvm::function_ref< void(CodeGenFunction &)> FirstGen, llvm::function_ref< void(CodeGenFunction &)> SecondGen) |
Emits the code for the directive with inscan reductions. More... | |
static bool | emitWorksharingDirective (CodeGenFunction &CGF, const OMPLoopDirective &S, bool HasCancel) |
static bool | isSupportedByOpenMPIRBuilder (const OMPForDirective &S) |
static llvm::omp::ScheduleKind | convertClauseKindToSchedKind (OpenMPScheduleClauseKind ScheduleClauseKind) |
static LValue | createSectionLVal (CodeGenFunction &CGF, QualType Ty, const Twine &Name, llvm::Value *Init=nullptr) |
static void | emitMaster (CodeGenFunction &CGF, const OMPExecutableDirective &S) |
static void | emitMasked (CodeGenFunction &CGF, const OMPExecutableDirective &S) |
static void | buildDependences (const OMPExecutableDirective &S, OMPTaskDataTy &Data) |
static ImplicitParamDecl * | createImplicitFirstprivateForType (ASTContext &C, OMPTaskDataTy &Data, QualType Ty, CapturedDecl *CD, SourceLocation Loc) |
static llvm::Function * | emitOutlinedOrderedFunction (CodeGenModule &CGM, const CapturedStmt *S, SourceLocation Loc) |
static llvm::Value * | convertToScalarValue (CodeGenFunction &CGF, RValue Val, QualType SrcType, QualType DestType, SourceLocation Loc) |
static CodeGenFunction::ComplexPairTy | convertToComplexValue (CodeGenFunction &CGF, RValue Val, QualType SrcType, QualType DestType, SourceLocation Loc) |
static void | emitSimpleAtomicStore (CodeGenFunction &CGF, llvm::AtomicOrdering AO, LValue LVal, RValue RVal) |
static RValue | emitSimpleAtomicLoad (CodeGenFunction &CGF, llvm::AtomicOrdering AO, LValue LVal, SourceLocation Loc) |
static void | emitOMPAtomicReadExpr (CodeGenFunction &CGF, llvm::AtomicOrdering AO, const Expr *X, const Expr *V, SourceLocation Loc) |
static void | emitOMPAtomicWriteExpr (CodeGenFunction &CGF, llvm::AtomicOrdering AO, const Expr *X, const Expr *E, SourceLocation Loc) |
static std::pair< bool, RValue > | emitOMPAtomicRMW (CodeGenFunction &CGF, LValue X, RValue Update, BinaryOperatorKind BO, llvm::AtomicOrdering AO, bool IsXLHSInRHSPart) |
static void | emitOMPAtomicUpdateExpr (CodeGenFunction &CGF, llvm::AtomicOrdering AO, const Expr *X, const Expr *E, const Expr *UE, bool IsXLHSInRHSPart, SourceLocation Loc) |
static RValue | convertToType (CodeGenFunction &CGF, RValue Value, QualType SourceType, QualType ResType, SourceLocation Loc) |
static void | emitOMPAtomicCaptureExpr (CodeGenFunction &CGF, llvm::AtomicOrdering AO, bool IsPostfixUpdate, const Expr *V, const Expr *X, const Expr *E, const Expr *UE, bool IsXLHSInRHSPart, SourceLocation Loc) |
static void | emitOMPAtomicCompareExpr (CodeGenFunction &CGF, llvm::AtomicOrdering AO, const Expr *X, const Expr *V, const Expr *R, const Expr *E, const Expr *D, const Expr *CE, bool IsXBinopExpr, bool IsPostfixUpdate, bool IsFailOnly, SourceLocation Loc) |
static void | emitOMPAtomicExpr (CodeGenFunction &CGF, OpenMPClauseKind Kind, llvm::AtomicOrdering AO, bool IsPostfixUpdate, const Expr *X, const Expr *V, const Expr *R, const Expr *E, const Expr *UE, const Expr *D, const Expr *CE, bool IsXLHSInRHSPart, bool IsFailOnly, SourceLocation Loc) |
static void | emitTargetRegion (CodeGenFunction &CGF, const OMPTargetDirective &S, PrePostActionTy &Action) |
static void | emitCommonOMPTeamsDirective (CodeGenFunction &CGF, const OMPExecutableDirective &S, OpenMPDirectiveKind InnermostKind, const RegionCodeGenTy &CodeGen) |
static void | emitTargetTeamsRegion (CodeGenFunction &CGF, PrePostActionTy &Action, const OMPTargetTeamsDirective &S) |
static void | emitTargetTeamsDistributeRegion (CodeGenFunction &CGF, PrePostActionTy &Action, const OMPTargetTeamsDistributeDirective &S) |
static void | emitTargetTeamsDistributeSimdRegion (CodeGenFunction &CGF, PrePostActionTy &Action, const OMPTargetTeamsDistributeSimdDirective &S) |
static void | emitTargetTeamsDistributeParallelForRegion (CodeGenFunction &CGF, const OMPTargetTeamsDistributeParallelForDirective &S, PrePostActionTy &Action) |
static void | emitTargetTeamsDistributeParallelForSimdRegion (CodeGenFunction &CGF, const OMPTargetTeamsDistributeParallelForSimdDirective &S, PrePostActionTy &Action) |
static void | emitTargetParallelRegion (CodeGenFunction &CGF, const OMPTargetParallelDirective &S, PrePostActionTy &Action) |
static void | emitTargetParallelForRegion (CodeGenFunction &CGF, const OMPTargetParallelForDirective &S, PrePostActionTy &Action) |
static void | emitTargetParallelForSimdRegion (CodeGenFunction &CGF, const OMPTargetParallelForSimdDirective &S, PrePostActionTy &Action) |
static void | mapParam (CodeGenFunction &CGF, const DeclRefExpr *Helper, const ImplicitParamDecl *PVD, CodeGenFunction::OMPPrivateScope &Privates) |
Emit a helper variable and return corresponding lvalue. More... | |
using EmittedClosureTy = std::pair<llvm::Function *, llvm::Value *> |
Definition at line 1941 of file CGStmtOpenMP.cpp.
|
static |
Definition at line 4484 of file CGStmtOpenMP.cpp.
|
static |
Definition at line 371 of file CGStmtOpenMP.cpp.
Referenced by emitOutlinedFunctionPrologue().
|
static |
Definition at line 1483 of file CGStmtOpenMP.cpp.
Referenced by clang::CodeGen::CodeGenFunction::EmitSimpleOMPExecutableDirective().
|
static |
Definition at line 3806 of file CGStmtOpenMP.cpp.
References clang::OMPC_SCHEDULE_unknown.
|
static |
Definition at line 5829 of file CGStmtOpenMP.cpp.
References clang::Type::castAs(), clang::CodeGen::CodeGenFunction::EmitScalarConversion(), clang::CodeGen::RValue::getComplexVal(), clang::CodeGen::CodeGenFunction::getEvaluationKind(), clang::CodeGen::RValue::getScalarVal(), clang::CodeGen::RValue::isComplex(), clang::CodeGen::RValue::isScalar(), and clang::CodeGen::TEK_Complex.
Referenced by convertToType(), and clang::CodeGen::CodeGenFunction::emitOMPSimpleStore().
|
static |
Definition at line 5816 of file CGStmtOpenMP.cpp.
References clang::CodeGen::CodeGenFunction::EmitComplexToScalarConversion(), clang::CodeGen::CodeGenFunction::EmitScalarConversion(), clang::CodeGen::RValue::getComplexVal(), clang::CodeGen::RValue::getScalarVal(), clang::CodeGen::CodeGenFunction::hasScalarEvaluationKind(), clang::CodeGen::RValue::isAggregate(), and clang::CodeGen::RValue::isScalar().
Referenced by convertToType(), and clang::CodeGen::CodeGenFunction::emitOMPSimpleStore().
|
static |
Definition at line 6132 of file CGStmtOpenMP.cpp.
References convertToComplexValue(), convertToScalarValue(), clang::CodeGen::RValue::get(), clang::CodeGen::RValue::getComplex(), clang::CodeGen::CodeGenFunction::getEvaluationKind(), clang::CodeGen::TEK_Aggregate, clang::CodeGen::TEK_Complex, and clang::CodeGen::TEK_Scalar.
Referenced by emitOMPAtomicCaptureExpr().
|
static |
Definition at line 4894 of file CGStmtOpenMP.cpp.
References clang::VarDecl::CInit, clang::DeclRefExpr::Create(), clang::ImplicitParamDecl::Create(), clang::ImplicitCastExpr::Create(), clang::CodeGen::OMPTaskDataTy::FirstprivateCopies, clang::CodeGen::OMPTaskDataTy::FirstprivateInits, clang::CodeGen::OMPTaskDataTy::FirstprivateVars, clang::ImplicitParamDecl::Other, clang::VK_LValue, and clang::VK_PRValue.
|
static |
Definition at line 3899 of file CGStmtOpenMP.cpp.
|
static |
Definition at line 2209 of file CGStmtOpenMP.cpp.
References clang::CodeGen::CodeGenFunction::emitAlignmentAssumption(), clang::CodeGen::CodeGenFunction::EmitScalarExpr(), clang::OMPExecutableDirective::getClausesOfKind(), clang::CodeGen::CodeGenFunction::getContext(), clang::CodeGen::CodeGenFunction::getLLVMContext(), clang::ASTContext::getOpenMPDefaultSimdAlign(), clang::CharUnits::getQuantity(), clang::CodeGen::CodeGenFunction::HaveInsertPoint(), and clang::ASTContext::toCharUnitsFromBits().
|
static |
Definition at line 1834 of file CGStmtOpenMP.cpp.
Referenced by clang::CodeGen::CodeGenFunction::EmitOMPLoopBody().
|
static |
Emit a call to a previously captured closure.
Definition at line 1959 of file CGStmtOpenMP.cpp.
References clang::CodeGen::CodeGenFunction::Builder.
|
static |
Emit a captured statement and return the function as well as its captured closure context.
Definition at line 1945 of file CGStmtOpenMP.cpp.
|
static |
Definition at line 1539 of file CGStmtOpenMP.cpp.
|
static |
Definition at line 6514 of file CGStmtOpenMP.cpp.
|
static |
Definition at line 6637 of file CGStmtOpenMP.cpp.
|
static |
Definition at line 2463 of file CGStmtOpenMP.cpp.
|
static |
When dealing with dispatch schedules (e.g.
dynamic, guided) we do not consider the lower and upper bound expressions generated by the worksharing loop support, but we use 0 and the iteration space size as constants
Definition at line 3454 of file CGStmtOpenMP.cpp.
|
static |
if the 'for' loop has a dispatch schedule (e.g.
dynamic, guided) then we need to use the LB and UB expressions generated by the worksharing code generation support, whereas in non combined situations we would just emit 0 and the LastIteration expression This function is necessary due to the difference of the LB and UB types for the RT emission routines for 'for_static_init' and 'for_dispatch_init'
Definition at line 3066 of file CGStmtOpenMP.cpp.
|
static |
Definition at line 3083 of file CGStmtOpenMP.cpp.
|
static |
Definition at line 3023 of file CGStmtOpenMP.cpp.
|
static |
Definition at line 1592 of file CGStmtOpenMP.cpp.
|
static |
Definition at line 2959 of file CGStmtOpenMP.cpp.
|
static |
The following two functions generate expressions for the loop lower and upper bounds in case of static and dynamic (dispatch) schedule of the associated 'for' or 'distribute' loop.
Definition at line 3440 of file CGStmtOpenMP.cpp.
|
static |
Definition at line 3103 of file CGStmtOpenMP.cpp.
|
static |
Definition at line 4231 of file CGStmtOpenMP.cpp.
|
static |
Definition at line 4195 of file CGStmtOpenMP.cpp.
|
static |
Definition at line 6149 of file CGStmtOpenMP.cpp.
References clang::CodeGen::CodeGenFunction::CGM, clang::CodeGen::CGOpenMPRuntime::checkAndEmitLastprivateConditional(), convertToType(), clang::CodeGen::CodeGenFunction::EmitAnyExpr(), clang::CodeGen::CGOpenMPRuntime::emitFlush(), clang::CodeGen::CodeGenFunction::EmitLValue(), clang::CodeGen::CodeGenFunction::EmitOMPAtomicSimpleUpdateExpr(), clang::CodeGen::CodeGenFunction::emitOMPSimpleStore(), clang::CodeGen::CodeGenModule::getLangOpts(), clang::CodeGen::CodeGenModule::getOpenMPRuntime(), clang::Expr::getType(), clang::Expr::IgnoreImpCasts(), V, and clang::tooling::X().
Referenced by emitOMPAtomicExpr().
|
static |
Definition at line 6256 of file CGStmtOpenMP.cpp.
References clang::CodeGen::CodeGenFunction::Builder, clang::CodeGen::CodeGenFunction::CGM, clang::CodeGen::CodeGenFunction::EmitLValue(), clang::CodeGen::CodeGenFunction::EmitScalarConversion(), clang::CodeGen::CodeGenFunction::EmitScalarExpr(), clang::interp::EQ(), clang::CodeGen::LValue::getAddress(), clang::CodeGen::Address::getElementType(), clang::CodeGen::CGOpenMPRuntime::getOMPBuilder(), clang::CodeGen::CodeGenModule::getOpenMPRuntime(), clang::CodeGen::Address::getPointer(), clang::Expr::getType(), clang::Type::hasSignedIntegerRepresentation(), clang::Expr::IgnoreImplicitAsWritten(), clang::QualType::isVolatileQualified(), V, and clang::tooling::X().
Referenced by emitOMPAtomicExpr().
|
static |
Definition at line 6332 of file CGStmtOpenMP.cpp.
References emitOMPAtomicCaptureExpr(), emitOMPAtomicCompareExpr(), emitOMPAtomicReadExpr(), emitOMPAtomicUpdateExpr(), emitOMPAtomicWriteExpr(), V, and clang::tooling::X().
|
static |
Definition at line 5891 of file CGStmtOpenMP.cpp.
References clang::CodeGen::CodeGenFunction::CGM, clang::CodeGen::CGOpenMPRuntime::checkAndEmitLastprivateConditional(), clang::CodeGen::CGOpenMPRuntime::emitFlush(), clang::CodeGen::CodeGenFunction::EmitLValue(), clang::CodeGen::CodeGenFunction::emitOMPSimpleStore(), emitSimpleAtomicLoad(), clang::CodeGen::CodeGenModule::getOpenMPRuntime(), V, and clang::tooling::X().
Referenced by emitOMPAtomicExpr().
|
static |
Definition at line 5949 of file CGStmtOpenMP.cpp.
References clang::interp::Add(), clang::prec::And, clang::CodeGen::CodeGenFunction::Builder, clang::CodeGen::CodeGenFunction::CGM, clang::CodeGen::CGBuilderTy::CreateAtomicRMW(), clang::CodeGen::RValue::get(), clang::CodeGen::CodeGenFunction::getContext(), clang::CodeGen::CodeGenModule::getDataLayout(), clang::ASTContext::getTargetInfo(), clang::ASTContext::getTypeSize(), clang::TargetInfo::hasBuiltinAtomic(), clang::interp::Sub(), clang::ASTContext::toBits(), clang::diff::Update, and clang::tooling::X().
Referenced by clang::CodeGen::CodeGenFunction::EmitOMPAtomicSimpleUpdateExpr().
|
static |
Definition at line 6084 of file CGStmtOpenMP.cpp.
References clang::CodeGen::CodeGenFunction::CGM, clang::CodeGen::CGOpenMPRuntime::checkAndEmitLastprivateConditional(), clang::CodeGen::CodeGenFunction::EmitAnyExpr(), clang::CodeGen::CGOpenMPRuntime::emitFlush(), clang::CodeGen::CodeGenFunction::EmitLValue(), clang::CodeGen::CodeGenFunction::EmitOMPAtomicSimpleUpdateExpr(), clang::CodeGen::CodeGenModule::getOpenMPRuntime(), clang::Expr::IgnoreImpCasts(), and clang::tooling::X().
Referenced by emitOMPAtomicExpr().
|
static |
Definition at line 5922 of file CGStmtOpenMP.cpp.
References clang::CodeGen::CodeGenFunction::CGM, clang::CodeGen::CGOpenMPRuntime::checkAndEmitLastprivateConditional(), clang::CodeGen::CodeGenFunction::EmitAnyExpr(), clang::CodeGen::CGOpenMPRuntime::emitFlush(), clang::CodeGen::CodeGenFunction::EmitLValue(), emitSimpleAtomicStore(), clang::CodeGen::CodeGenModule::getOpenMPRuntime(), and clang::tooling::X().
Referenced by emitOMPAtomicExpr().
|
static |
Emit a helper variable and return corresponding lvalue.
Definition at line 2456 of file CGStmtOpenMP.cpp.
References clang::CodeGen::CodeGenFunction::EmitLValue(), clang::CodeGen::CodeGenFunction::EmitVarDecl(), and clang::DeclRefExpr::getDecl().
|
static |
Definition at line 2448 of file CGStmtOpenMP.cpp.
|
static |
Definition at line 2499 of file CGStmtOpenMP.cpp.
Referenced by clang::CodeGen::CodeGenFunction::EmitSimpleOMPExecutableDirective().
|
static |
Definition at line 424 of file CGStmtOpenMP.cpp.
References clang::CodeGen::CodeGenTypes::arrangeBuiltinFunctionDeclaration(), clang::Type::castAs(), castValueFromUintptr(), clang::CodeGen::CodeGenFunction::CGM, clang::ImplicitParamDecl::Create(), clang::ParmVarDecl::Create(), clang::FunctionDecl::Create(), clang::CodeGen::Decl, clang::CodeGen::CodeGenFunction::EmitLoadOfPointer(), clang::CodeGen::CodeGenFunction::EmitLoadOfReference(), clang::CodeGen::CodeGenFunction::EmitLoadOfScalar(), clang::RecordDecl::fields(), clang::IdentifierTable::get(), clang::CodeGen::LValue::getAddress(), clang::CodeGen::CodeGenFunction::GetAddrOfLocalVar(), clang::DeclaratorDecl::getBeginLoc(), clang::Stmt::getBeginLoc(), clang::CapturedDecl::getBody(), getCanonicalParamType(), clang::CodeGen::CodeGenModule::getCodeGenOpts(), clang::CodeGen::CodeGenModule::getContext(), clang::CapturedDecl::getContextParamPosition(), clang::ASTContext::getDeclAlign(), clang::CodeGen::CodeGenTypes::GetFunctionType(), clang::ASTContext::getFunctionType(), clang::NamedDecl::getIdentifier(), clang::Decl::getLocation(), clang::CodeGen::CodeGenModule::getModule(), clang::CodeGen::CodeGenModule::getOpenMPRuntime(), clang::CodeGen::CGOpenMPRuntime::getParameterAddress(), clang::VariableArrayType::getSizeExpr(), clang::VarDecl::getTLSKind(), clang::ASTContext::getTranslationUnitDecl(), clang::ASTContext::getTrivialTypeSourceInfo(), clang::CodeGen::Address::getType(), clang::CodeGen::LValue::getType(), clang::ValueDecl::getType(), clang::CodeGen::CodeGenModule::getTypes(), clang::ASTContext::getUIntPtrType(), clang::Decl::hasBody(), clang::ASTContext::Idents, clang::InternalLinkage, clang::CodeGen::Address::invalid(), clang::Type::isAnyPointerType(), clang::Type::isLValueReferenceType(), clang::CapturedDecl::isNothrow(), clang::Type::isPointerType(), clang::Type::isVariablyModifiedType(), clang::CodeGen::CodeGenFunction::MakeAddrLValue(), clang::ImplicitParamDecl::Other, clang::CapturedDecl::param_begin(), clang::CapturedDecl::param_end(), clang::SC_None, clang::SC_Static, clang::CodeGen::CodeGenModule::SetInternalFunctionAttributes(), clang::CodeGen::CodeGenFunction::StartFunction(), clang::ImplicitParamDecl::ThreadPrivateVar, clang::VarDecl::TLS_None, clang::CodeGen::CGOpenMPRuntime::translateParameter(), clang::ASTContext::VoidTy, and clang::CodeGen::Address::withAlignment().
|
static |
Definition at line 5708 of file CGStmtOpenMP.cpp.
|
static |
Definition at line 1447 of file CGStmtOpenMP.cpp.
References clang::CodeGen::CodeGenFunction::Builder, clang::CodeGen::CodeGenFunction::createBasicBlock(), clang::CodeGen::CodeGenFunction::EmitBlock(), clang::CodeGen::CodeGenFunction::EmitIgnoredExpr(), clang::OMPExecutableDirective::getClausesOfKind(), and clang::CodeGen::CodeGenFunction::HaveInsertPoint().
|
static |
Definition at line 2286 of file CGStmtOpenMP.cpp.
|
static |
Emits the code for the directive with inscan reductions.
The code is the following:
Definition at line 3588 of file CGStmtOpenMP.cpp.
|
static |
Emits internal temp array declarations for the directive with inscan reductions.
The code is the following:
Definition at line 3471 of file CGStmtOpenMP.cpp.
|
static |
Copies final inscan reductions values to the original variables.
The code is the following:
Definition at line 3523 of file CGStmtOpenMP.cpp.
|
static |
Definition at line 2358 of file CGStmtOpenMP.cpp.
References clang::CodeGen::CodeGenFunction::EmitAnyExpr(), clang::CodeGen::RValue::getScalarVal(), clang::OMPExecutableDirective::getSingleClause(), clang::CodeGen::CodeGenFunction::HaveInsertPoint(), clang::CodeGen::AggValueSlot::ignored(), clang::CodeGen::CodeGenFunction::LoopStack, clang::CodeGen::LoopInfoStack::setParallel(), and clang::CodeGen::LoopInfoStack::setVectorizeWidth().
Referenced by clang::CodeGen::CodeGenFunction::EmitOMPSimdInit().
|
static |
Definition at line 5863 of file CGStmtOpenMP.cpp.
References clang::CodeGen::CodeGenFunction::EmitAtomicLoad(), clang::CodeGen::CodeGenFunction::EmitLoadOfLValue(), clang::CodeGen::LValue::isGlobalReg(), and clang::CodeGen::LValue::isVolatile().
Referenced by emitOMPAtomicReadExpr().
|
static |
Definition at line 5855 of file CGStmtOpenMP.cpp.
References clang::CodeGen::CodeGenFunction::EmitAtomicStore(), clang::CodeGen::CodeGenFunction::EmitStoreThroughGlobalRegLValue(), clang::CodeGen::LValue::isGlobalReg(), and clang::CodeGen::LValue::isVolatile().
Referenced by emitOMPAtomicWriteExpr().
|
static |
Definition at line 7410 of file CGStmtOpenMP.cpp.
|
static |
Definition at line 7451 of file CGStmtOpenMP.cpp.
|
static |
Definition at line 7363 of file CGStmtOpenMP.cpp.
|
static |
Definition at line 6602 of file CGStmtOpenMP.cpp.
|
static |
Definition at line 6962 of file CGStmtOpenMP.cpp.
|
static |
Definition at line 7013 of file CGStmtOpenMP.cpp.
|
static |
Definition at line 6725 of file CGStmtOpenMP.cpp.
|
static |
Definition at line 6770 of file CGStmtOpenMP.cpp.
|
static |
Definition at line 6680 of file CGStmtOpenMP.cpp.
|
static |
Definition at line 3729 of file CGStmtOpenMP.cpp.
Definition at line 7174 of file CGStmtOpenMP.cpp.
References clang::Expr::IgnoreParenImpCasts().
Referenced by clang::CodeGen::CodeGenFunction::EmitOMPUseDeviceAddrClause().
|
static |
Definition at line 384 of file CGStmtOpenMP.cpp.
References clang::Type::getAsArrayTypeUnsafe(), clang::QualType::getNonReferenceType(), clang::Type::getPointeeType(), clang::Type::isLValueReferenceType(), and clang::Type::isPointerType().
Referenced by emitOutlinedFunctionPrologue().
Definition at line 1581 of file CGStmtOpenMP.cpp.
References clang::Decl::getAttr(), clang::VarDecl::getCanonicalDecl(), and clang::Decl::hasAttr().
Referenced by clang::CodeGen::CodeGenFunction::OMPBuilderCBHelpers::getAddressOfLocalVariable().
|
static |
Definition at line 2594 of file CGStmtOpenMP.cpp.
|
static |
Definition at line 3775 of file CGStmtOpenMP.cpp.
|
static |
Emit a helper variable and return corresponding lvalue.
Definition at line 7490 of file CGStmtOpenMP.cpp.
References clang::CodeGen::CodeGenFunction::OMPPrivateScope::addPrivate(), clang::CodeGen::CodeGenFunction::GetAddrOfLocalVar(), and clang::DeclRefExpr::getDecl().