A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://clang.llvm.org/doxygen/classclang_1_1SemaCUDA.html below:

clang: clang::SemaCUDA Class Reference

#include "clang/Sema/SemaCUDA.h"

  SemaCUDA (Sema &S)   void  PushForceHostDevice ()   Increments our count of the number of times we've seen a pragma forcing functions to be host device.
  bool  PopForceHostDevice ()   Decrements our count of the number of times we've seen a pragma forcing functions to be host device.
  ExprResult  ActOnExecConfigExpr (Scope *S, SourceLocation LLLLoc, MultiExprArg ExecConfig, SourceLocation GGGLoc)   SemaDiagnosticBuilder  DiagIfDeviceCode (SourceLocation Loc, unsigned DiagID)   Creates a SemaDiagnosticBuilder that emits the diagnostic if the current context is "used as device code".
  SemaDiagnosticBuilder  DiagIfHostCode (SourceLocation Loc, unsigned DiagID)   Creates a SemaDiagnosticBuilder that emits the diagnostic if the current context is "used as host code".
  CUDAFunctionTarget  IdentifyTarget (const FunctionDecl *D, bool IgnoreImplicitHDAttr=false)   Determines whether the given function is a CUDA device/host/kernel/etc.
  CUDAFunctionTarget  IdentifyTarget (const ParsedAttributesView &Attrs)   CUDAVariableTarget  IdentifyTarget (const VarDecl *D)   Determines whether the given variable is emitted on host or device side.
  CUDAFunctionTarget  CurrentTarget ()   Gets the CUDA target for the current context.
  CUDAFunctionPreference  IdentifyPreference (const FunctionDecl *Caller, const FunctionDecl *Callee)   Identifies relative preference of a given Caller/Callee combination, based on their host/device attributes.
  bool  IsAllowedCall (const FunctionDecl *Caller, const FunctionDecl *Callee)   Determines whether Caller may invoke Callee, based on their CUDA host/device attributes.
  void  maybeAddHostDeviceAttrs (FunctionDecl *FD, const LookupResult &Previous)   May add implicit CUDAHostAttr and CUDADeviceAttr attributes to FD, depending on FD and the current compilation settings.
  void  MaybeAddConstantAttr (VarDecl *VD)   May add implicit CUDAConstantAttr attribute to VD, depending on VD and current compilation settings.
  bool  CheckCall (SourceLocation Loc, FunctionDecl *Callee)   Check whether we're allowed to call Callee from the current context.
  void  CheckLambdaCapture (CXXMethodDecl *D, const sema::Capture &Capture)   void  SetLambdaAttrs (CXXMethodDecl *Method)   Set device or host device attributes on the given lambda operator() method.
  void  RecordImplicitHostDeviceFuncUsedByDevice (const FunctionDecl *FD)   Record FD if it is a CUDA/HIP implicit host device function used on device side in device compilation.
  void  EraseUnwantedMatches (const FunctionDecl *Caller, llvm::SmallVectorImpl< std::pair< DeclAccessPair, FunctionDecl * > > &Matches)   Finds a function in Matches with highest calling priority from Caller context and erases all functions with lower calling priority.
  bool  inferTargetForImplicitSpecialMember (CXXRecordDecl *ClassDecl, CXXSpecialMemberKind CSM, CXXMethodDecl *MemberDecl, bool ConstRHS, bool Diagnose)   Given a implicit special member, infer its CUDA target from the calls it needs to make to underlying base/field special members.
  bool  isEmptyConstructor (SourceLocation Loc, CXXConstructorDecl *CD)   bool  isEmptyDestructor (SourceLocation Loc, CXXDestructorDecl *CD)   void  checkAllowedInitializer (VarDecl *VD)   void  checkTargetOverload (FunctionDecl *NewFD, const LookupResult &Previous)   Check whether NewFD is a valid overload for CUDA.
  void  inheritTargetAttrs (FunctionDecl *FD, const FunctionTemplateDecl &TD)   Copies target attributes from the template TD to the function FD.
  std::string  getConfigureFuncName () const   Returns the name of the launch configuration function.
    SemaBase (Sema &S)   ASTContextgetASTContext () const   DiagnosticsEnginegetDiagnostics () const   const LangOptionsgetLangOpts () const   SemaDiagnosticBuilder  Diag (SourceLocation Loc, unsigned DiagID, bool DeferHint=false)   Emit a diagnostic.
  SemaDiagnosticBuilder  Diag (SourceLocation Loc, const PartialDiagnostic &PD, bool DeferHint=false)   Emit a partial diagnostic.
  PartialDiagnostic  PDiag (unsigned DiagID=0)   Build a partial diagnostic.
 

Definition at line 45 of file SemaCUDA.h.

◆ CUDAFunctionPreference Enumerator CFP_Never  CFP_WrongSide  CFP_HostDevice  CFP_SameSide  CFP_Native 

Definition at line 160 of file SemaCUDA.h.

◆ CUDATargetContextKind

Defines kinds of CUDA global host/device context where a function may be called.

Enumerator CTCK_Unknown  CTCK_InitGlobalVar 

Unknown context.

Definition at line 129 of file SemaCUDA.h.

◆ CUDAVariableTarget Enumerator CVT_Device  CVT_Host 

Emitted on device side with a shadow variable on host side.

CVT_Both 

Emitted on host side only.

CVT_Unified 

Emitted on both sides with different addresses.

Definition at line 118 of file SemaCUDA.h.

◆ SemaCUDA() ◆ ActOnExecConfigExpr() ◆ checkAllowedInitializer() void SemaCUDA::checkAllowedInitializer ( VarDeclVD )

Definition at line 656 of file SemaCUDA.cpp.

References clang::SemaBase::Diag(), clang::Decl::getDeclContext(), clang::VarDecl::getInit(), clang::Decl::getLocation(), clang::Decl::hasAttr(), clang::VarDecl::hasGlobalStorage(), clang::VarDecl::hasInit(), clang::Host, clang::HostDevice, IdentifyTarget(), clang::Init, clang::DeclContext::isDependentContext(), clang::Decl::isInvalidDecl(), and clang::Decl::setInvalidDecl().

Referenced by clang::Sema::FinalizeDeclaration(), and clang::Sema::InstantiateVariableInitializer().

◆ CheckCall()

Check whether we're allowed to call Callee from the current context.

Definition at line 880 of file SemaCUDA.cpp.

References CFP_Never, CFP_WrongSide, clang::CUDA, clang::ASTContext::CUDAExternalDeviceDeclODRUsedByHost, clang::Sema::currentEvaluationContext(), clang::Sema::Emitted, clang::SemaBase::getASTContext(), clang::Sema::getCurFunctionDecl(), clang::FunctionDecl::getDescribedFunctionTemplate(), clang::Sema::getEmissionStatus(), clang::ASTContext::GetGVALinkageForFunction(), clang::SemaBase::getLangOpts(), clang::GVA_StrongExternal, IdentifyPreference(), Loc, LocsWithCUDACallDiags, and clang::SemaBase::SemaRef.

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

◆ CheckLambdaCapture() ◆ checkTargetOverload()

Check whether NewFD is a valid overload for CUDA.

Emits diagnostics and invalidates NewFD if not.

Definition at line 1003 of file SemaCUDA.cpp.

References clang::CUDA, clang::Device, clang::SemaBase::Diag(), clang::Decl::getAsFunction(), clang::NamedDecl::getDeclName(), clang::SemaBase::getLangOpts(), clang::Decl::getLocation(), clang::Global, clang::Host, clang::HostDevice, IdentifyTarget(), isImplicitHostDeviceFunction(), clang::Sema::IsOverload(), Previous, clang::SemaBase::SemaRef, and clang::Decl::setInvalidDecl().

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

◆ CurrentTarget() ◆ DiagIfDeviceCode()

Creates a SemaDiagnosticBuilder that emits the diagnostic if the current context is "used as device code".

Example usage:

// Variable-length arrays are not allowed in CUDA device code. if (DiagIfDeviceCode(Loc, diag::err_cuda_vla) << CurrentTarget()) return ExprError(); // Otherwise, continue parsing as normal.

Definition at line 817 of file SemaCUDA.cpp.

References clang::CUDA, CurrentTarget(), clang::Device, clang::Sema::Emitted, clang::Sema::getCurFunctionDecl(), clang::SemaBase::getDiagnostics(), clang::Sema::getEmissionStatus(), clang::SemaBase::getLangOpts(), clang::Global, clang::HostDevice, clang::Sema::IsLastErrorImmediate, Loc, and clang::SemaBase::SemaRef.

Referenced by clang::Sema::ActOnCXXTryBlock(), clang::Sema::BuildCXXThrow(), and clang::SemaBase::Diag().

◆ DiagIfHostCode()

Creates a SemaDiagnosticBuilder that emits the diagnostic if the current context is "used as host code".

Same as DiagIfDeviceCode, with "host" and "device" switched.

Definition at line 849 of file SemaCUDA.cpp.

References clang::CUDA, CurrentTarget(), clang::Sema::Emitted, clang::Sema::getCurFunctionDecl(), clang::SemaBase::getDiagnostics(), clang::Sema::getEmissionStatus(), clang::SemaBase::getLangOpts(), clang::Host, clang::HostDevice, clang::Sema::IsLastErrorImmediate, Loc, and clang::SemaBase::SemaRef.

Referenced by clang::SemaBase::Diag(), and handleSharedAttr().

◆ EraseUnwantedMatches() ◆ getConfigureFuncName() std::string SemaCUDA::getConfigureFuncName ( ) const ◆ IdentifyPreference()

Identifies relative preference of a given Caller/Callee combination, based on their host/device attributes.

Parameters
Caller function which needs address of Callee. nullptr in case of global context. Callee target function
Returns
preference value for particular Caller/Callee combination.

Definition at line 225 of file SemaCUDA.cpp.

References CFP_HostDevice, CFP_Native, CFP_Never, CFP_SameSide, CFP_WrongSide, CTCK_InitGlobalVar, CurCUDATargetCtx, clang::Device, clang::SemaBase::getLangOpts(), clang::Global, clang::Host, clang::HostDevice, IdentifyTarget(), clang::InvalidTarget, clang::SemaCUDA::CUDATargetContext::Kind, and clang::SemaCUDA::CUDATargetContext::Target.

Referenced by clang::OverloadCandidateSet::BestViableFunction(), CheckCall(), EraseUnwantedMatches(), IsAllowedCall(), clang::isBetterOverloadCandidate(), and clang::Sema::isUsualDeallocationFunction().

◆ IdentifyTarget() [1/3]

Determines whether the given function is a CUDA device/host/kernel/etc.

IdentifyTarget - Determine the CUDA compilation target for this function.

function.

Use this rather than examining the function's attributes yourself – you will get it wrong. Returns CUDAFunctionTarget::Host if D is null.

Definition at line 134 of file SemaCUDA.cpp.

References CurCUDATargetCtx, D, clang::Device, clang::Global, clang::Decl::hasAttr(), clang::Host, clang::HostDevice, clang::InvalidTarget, clang::Decl::isImplicit(), and clang::SemaCUDA::CUDATargetContext::Target.

Referenced by clang::Sema::ActOnExplicitInstantiation(), clang::Sema::BuildVAArgExpr(), checkAllowedInitializer(), clang::Sema::CheckCallingConvAttr(), clang::Sema::CheckFunctionTemplateSpecialization(), checkTargetOverload(), CurrentTarget(), DiagnoseBadTarget(), getCCForDeclaratorChunk(), GetDeclSpecTypeForDeclarator(), clang::Sema::getEmissionStatus(), GetFullTypeForDeclarator(), handleCallConvAttr(), IdentifyPreference(), IdentifyTarget(), inferTargetForImplicitSpecialMember(), IsOverloadOrOverrideImpl(), MarkVarDeclODRUsed(), RecordImplicitHostDeviceFuncUsedByDevice(), and clang::Sema::shouldIgnoreInHostDeviceCheck().

◆ IdentifyTarget() [2/3] ◆ IdentifyTarget() [3/3]

Determines whether the given variable is emitted on host or device side.

IdentifyTarget - Determine the CUDA compilation target for this variable.

Definition at line 163 of file SemaCUDA.cpp.

References CVT_Both, CVT_Device, CVT_Host, CVT_Unified, clang::Device, clang::Decl::getDeclContext(), clang::ValueDecl::getType(), clang::Global, clang::Decl::hasAttr(), clang::HostDevice, IdentifyTarget(), clang::VarDecl::isConstexpr(), clang::QualType::isConstQualified(), clang::Type::isCUDADeviceBuiltinSurfaceType(), and clang::Type::isCUDADeviceBuiltinTextureType().

◆ inferTargetForImplicitSpecialMember()

Given a implicit special member, infer its CUDA target from the calls it needs to make to underlying base/field special members.

Parameters
ClassDecl the class for which the member is being created. CSM the kind of special member. MemberDecl the special member itself. ConstRHS true if this is a copy operation with a const object on its RHS. Diagnose true if this call should emit diagnostics.
Returns
true if there was an error inferring. The result of this call is implicit CUDA target attribute(s) attached to the member declaration.

Definition at line 370 of file SemaCUDA.cpp.

References clang::Decl::addAttr(), clang::CXXRecordDecl::bases(), clang::Device, clang::SemaBase::Diag(), clang::RecordDecl::fields(), clang::Type::getAs(), clang::SemaBase::getASTContext(), clang::Decl::getAttr(), clang::ASTContext::getBaseElementType(), clang::RecordType::getDecl(), clang::DeclContext::getLexicalParent(), clang::Decl::getLocation(), clang::Sema::SpecialMemberOverloadResult::getMethod(), clang::CXXMethodDecl::getParent(), clang::Decl::hasAttr(), clang::Host, IdentifyTarget(), clang::CXXRecordDecl::isAbstract(), clang::Sema::LookupSpecialMember(), resolveCalleeCUDATargetConflict(), clang::SemaBase::SemaRef, and clang::CXXRecordDecl::vbases().

Referenced by clang::Sema::DeclareImplicitCopyAssignment(), clang::Sema::DeclareImplicitCopyConstructor(), clang::Sema::DeclareImplicitDefaultConstructor(), clang::Sema::DeclareImplicitDestructor(), clang::Sema::DeclareImplicitMoveAssignment(), clang::Sema::DeclareImplicitMoveConstructor(), DiagnoseBadTarget(), and clang::Sema::ShouldDeleteSpecialMember().

◆ inheritTargetAttrs() ◆ IsAllowedCall()

Determines whether Caller may invoke Callee, based on their CUDA host/device attributes.

Returns false if the call is not allowed.

Note: Will return true for CFP_WrongSide calls. These may appear in semantically correct CUDA programs, but only if they're never codegen'ed.

Definition at line 186 of file SemaCUDA.h.

References CFP_Never, and IdentifyPreference().

◆ isEmptyConstructor()
Returns
true if CD can be considered empty according to CUDA (E.2.3.1 in CUDA 7.5 Programming guide).

Definition at line 510 of file SemaCUDA.cpp.

References clang::Redeclarable< decl_type >::getFirstDecl(), clang::FunctionDecl::getNumParams(), clang::CXXMethodDecl::getParent(), clang::FunctionDecl::hasTrivialBody(), clang::CXXConstructorDecl::inits(), clang::Sema::InstantiateFunctionDefinition(), clang::FunctionDecl::isDefined(), clang::CXXRecordDecl::isDynamicClass(), clang::FunctionDecl::isTemplateInstantiation(), clang::FunctionDecl::isTrivial(), clang::TagDecl::isUnion(), Loc, and clang::SemaBase::SemaRef.

◆ isEmptyDestructor()

Definition at line 548 of file SemaCUDA.cpp.

References clang::CXXRecordDecl::bases(), clang::RecordDecl::fields(), clang::Redeclarable< decl_type >::getFirstDecl(), clang::CXXMethodDecl::getParent(), clang::FunctionDecl::hasTrivialBody(), clang::Sema::InstantiateFunctionDefinition(), clang::FunctionDecl::isDefined(), clang::CXXRecordDecl::isDynamicClass(), clang::FunctionDecl::isTemplateInstantiation(), clang::FunctionDecl::isTrivial(), clang::TagDecl::isUnion(), Loc, and clang::SemaBase::SemaRef.

◆ isImplicitHostDeviceFunction() ◆ MaybeAddConstantAttr() void SemaCUDA::MaybeAddConstantAttr ( VarDeclVD ) ◆ maybeAddHostDeviceAttrs()

May add implicit CUDAHostAttr and CUDADeviceAttr attributes to FD, depending on FD and the current compilation settings.

Definition at line 738 of file SemaCUDA.cpp.

References clang::Decl::addAttr(), clang::CUDA, D, clang::SemaBase::Diag(), clang::Decl::getAsFunction(), clang::SemaBase::getASTContext(), clang::FunctionDecl::getDescribedFunctionTemplate(), clang::SemaBase::getLangOpts(), clang::Decl::getLocation(), clang::Sema::getSourceManager(), clang::Decl::hasAttr(), clang::FunctionDecl::isConstexpr(), clang::FunctionDecl::isFunctionTemplateSpecialization(), clang::SourceManager::isInSystemHeader(), clang::Sema::IsOverload(), clang::FunctionDecl::isVariadic(), Previous, and clang::SemaBase::SemaRef.

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

◆ PopForceHostDevice() bool SemaCUDA::PopForceHostDevice ( )

Decrements our count of the number of times we've seen a pragma forcing functions to be host device.

Returns false if the count is 0 before incrementing, so you can emit an error.

Definition at line 44 of file SemaCUDA.cpp.

References clang::CUDA, and clang::SemaBase::getLangOpts().

◆ PushForceHostDevice() void SemaCUDA::PushForceHostDevice ( )

Increments our count of the number of times we've seen a pragma forcing functions to be host device.

So long as this count is greater than zero, all functions encountered will be host device.

Definition at line 39 of file SemaCUDA.cpp.

References clang::CUDA, and clang::SemaBase::getLangOpts().

◆ RecordImplicitHostDeviceFuncUsedByDevice() void SemaCUDA::RecordImplicitHostDeviceFuncUsedByDevice ( const FunctionDeclFD ) ◆ SetLambdaAttrs() ◆ ASTReader ◆ ASTWriter ◆ CurCUDATargetCtx ◆ DeviceKnownEmittedFns

An inverse call graph, mapping known-emitted functions to one of their known-emitted callers (plus the location of the call).

Functions that we can tell a priori must be emitted aren't added to this map.

Definition at line 82 of file SemaCUDA.h.

Referenced by emitCallStackNotes().

◆ LocsWithCUDACallDiags

FunctionDecls and SourceLocations for which CheckCall has emitted a (maybe deferred) "bad call" diagnostic.

We use this to avoid emitting the same deferred diag twice.

Definition at line 73 of file SemaCUDA.h.

Referenced by CheckCall().

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


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4