clang 22.0.0git
|
#include "clang/Sema/SemaARM.h"
Public Types | |
enum | ArmStreamingType { ArmNonStreaming , ArmStreaming , ArmStreamingCompatible , VerifyRuntimeMode } |
Public Member Functions | |
SemaARM (Sema &S) | |
bool | CheckImmediateArg (CallExpr *TheCall, unsigned CheckTy, unsigned ArgIdx, unsigned EltBitWidth, unsigned VecBitWidth) |
bool | CheckARMBuiltinExclusiveCall (const TargetInfo &TI, unsigned BuiltinID, CallExpr *TheCall) |
bool | CheckNeonBuiltinFunctionCall (const TargetInfo &TI, unsigned BuiltinID, CallExpr *TheCall) |
bool | PerformNeonImmChecks (CallExpr *TheCall, SmallVectorImpl< std::tuple< int, int, int, int > > &ImmChecks, int OverloadType=-1) |
bool | PerformSVEImmChecks (CallExpr *TheCall, SmallVectorImpl< std::tuple< int, int, int > > &ImmChecks) |
bool | CheckMVEBuiltinFunctionCall (unsigned BuiltinID, CallExpr *TheCall) |
bool | CheckSVEBuiltinFunctionCall (unsigned BuiltinID, CallExpr *TheCall) |
bool | CheckSMEBuiltinFunctionCall (unsigned BuiltinID, CallExpr *TheCall) |
bool | CheckCDEBuiltinFunctionCall (const TargetInfo &TI, unsigned BuiltinID, CallExpr *TheCall) |
bool | CheckARMCoprocessorImmediate (const TargetInfo &TI, const Expr *CoprocArg, bool WantCDE) |
bool | CheckARMBuiltinFunctionCall (const TargetInfo &TI, unsigned BuiltinID, CallExpr *TheCall) |
bool | CheckAArch64BuiltinFunctionCall (const TargetInfo &TI, unsigned BuiltinID, CallExpr *TheCall) |
bool | BuiltinARMSpecialReg (unsigned BuiltinID, CallExpr *TheCall, int ArgNum, unsigned ExpectedFieldNum, bool AllowName) |
BuiltinARMSpecialReg - Handle a check if argument ArgNum of CallExpr TheCall is an ARM/AArch64 special register string literal. | |
bool | BuiltinARMMemoryTaggingCall (unsigned BuiltinID, CallExpr *TheCall) |
BuiltinARMMemoryTaggingCall - Handle calls of memory tagging extensions. | |
bool | MveAliasValid (unsigned BuiltinID, llvm::StringRef AliasName) |
bool | CdeAliasValid (unsigned BuiltinID, llvm::StringRef AliasName) |
bool | SveAliasValid (unsigned BuiltinID, llvm::StringRef AliasName) |
bool | SmeAliasValid (unsigned BuiltinID, llvm::StringRef AliasName) |
void | handleBuiltinAliasAttr (Decl *D, const ParsedAttr &AL) |
void | handleNewAttr (Decl *D, const ParsedAttr &AL) |
void | handleCmseNSEntryAttr (Decl *D, const ParsedAttr &AL) |
void | handleInterruptAttr (Decl *D, const ParsedAttr &AL) |
void | handleInterruptSaveFPAttr (Decl *D, const ParsedAttr &AL) |
void | CheckSMEFunctionDefAttributes (const FunctionDecl *FD) |
bool | areCompatibleSveTypes (QualType FirstType, QualType SecondType) |
Return true if the given types are an SVE builtin and a VectorType that is a fixed-length representation of the SVE builtin for a specific vector-length. | |
bool | areLaxCompatibleSveTypes (QualType FirstType, QualType SecondType) |
Return true if the given vector types are lax-compatible SVE vector types, false otherwise. | |
bool | checkTargetVersionAttr (const StringRef Str, const SourceLocation Loc) |
bool | checkTargetClonesAttr (SmallVectorImpl< StringRef > &Params, SmallVectorImpl< SourceLocation > &Locs, SmallVectorImpl< SmallString< 64 > > &NewParams) |
Public Member Functions inherited from clang::SemaBase | |
SemaBase (Sema &S) | |
ASTContext & | getASTContext () const |
DiagnosticsEngine & | getDiagnostics () const |
const LangOptions & | getLangOpts () const |
DeclContext * | getCurContext () 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. | |
SemaDiagnosticBuilder | DiagCompat (SourceLocation Loc, unsigned CompatDiagId, bool DeferHint=false) |
Emit a compatibility diagnostic. | |
PartialDiagnostic | PDiag (unsigned DiagID=0) |
Build a partial diagnostic. |
Additional Inherited Members | |
Public Attributes inherited from clang::SemaBase | |
Sema & | SemaRef |
Enumerator | |
---|---|
ArmNonStreaming | |
ArmStreaming | Intrinsic is only available in normal mode. |
ArmStreamingCompatible | Intrinsic is only available in Streaming-SVE mode. |
VerifyRuntimeMode | Intrinsic is available both in normal and Streaming-SVE mode. Intrinsic is available in normal mode with SVE flags, or in Streaming-SVE mode with SME flags. Do Sema checks for the runtime mode. |
clang::SemaARM::SemaARM | ( | Sema & | S | ) |
Definition at line 23 of file SemaARM.cpp.
References clang::SemaBase::SemaBase().
Return true if the given types are an SVE builtin and a VectorType that is a fixed-length representation of the SVE builtin for a specific vector-length.
Definition at line 1473 of file SemaARM.cpp.
References clang::Generic, clang::Type::getAs(), clang::SemaBase::getASTContext(), clang::SemaBase::getLangOpts(), clang::Type::getSveEltType(), clang::getSVETypeSize(), clang::IsArmStreamingFunction(), clang::SemaBase::SemaRef, clang::FunctionType::SME_PStateSMCompatibleMask, clang::SveFixedLengthData, clang::SveFixedLengthPredicate, and clang::T.
Referenced by CompareStandardConversionSequences(), and IsVectorConversion().
Return true if the given vector types are lax-compatible SVE vector types, false otherwise.
Definition at line 1517 of file SemaARM.cpp.
References clang::LangOptionsBase::All, clang::Generic, clang::Type::getAs(), clang::SemaBase::getASTContext(), clang::SemaBase::getLangOpts(), clang::Type::getSveEltType(), clang::getSVETypeSize(), clang::LangOptionsBase::Integer, clang::IsArmStreamingFunction(), clang::Type::isIntegerType(), clang::SemaBase::SemaRef, clang::FunctionType::SME_PStateSMCompatibleMask, clang::SveFixedLengthData, and clang::T.
Referenced by IsVectorConversion().
BuiltinARMMemoryTaggingCall - Handle calls of memory tagging extensions.
Definition at line 26 of file SemaARM.cpp.
References clang::SemaBase::Diag(), clang::ActionResult< PtrTy, Compress >::get(), clang::CallExpr::getArg(), clang::SemaBase::getASTContext(), clang::CallExpr::getBeginLoc(), clang::Type::getPointeeType(), clang::Stmt::getSourceRange(), clang::Expr::getType(), clang::Type::isAnyPointerType(), clang::Type::isIntegerType(), clang::ActionResult< PtrTy, Compress >::isInvalid(), clang::Expr::NPC_ValueDependentIsNotNull, clang::SemaBase::SemaRef, clang::CallExpr::setArg(), and clang::Expr::setType().
Referenced by CheckAArch64BuiltinFunctionCall().
bool clang::SemaARM::BuiltinARMSpecialReg | ( | unsigned | BuiltinID, |
CallExpr * | TheCall, | ||
int | ArgNum, | ||
unsigned | ExpectedFieldNum, | ||
bool | AllowName ) |
BuiltinARMSpecialReg - Handle a check if argument ArgNum of CallExpr TheCall is an ARM/AArch64 special register string literal.
Definition at line 188 of file SemaARM.cpp.
References clang::cast(), clang::SemaBase::Diag(), clang::CallExpr::getArg(), clang::CallExpr::getBeginLoc(), clang::CallExpr::getNumArgs(), clang::Stmt::getSourceRange(), clang::Expr::IgnoreParenImpCasts(), clang::isa(), clang::Expr::isTypeDependent(), clang::Expr::isValueDependent(), and clang::SemaBase::SemaRef.
Referenced by CheckAArch64BuiltinFunctionCall(), and CheckARMBuiltinFunctionCall().
Definition at line 1212 of file SemaARM.cpp.
References clang::BuiltinAliasValid().
Referenced by handleBuiltinAliasAttr(), and handleBuiltinAliasAttr().
bool clang::SemaARM::CheckAArch64BuiltinFunctionCall | ( | const TargetInfo & | TI, |
unsigned | BuiltinID, | ||
CallExpr * | TheCall ) |
Definition at line 1093 of file SemaARM.cpp.
References BuiltinARMMemoryTaggingCall(), BuiltinARMSpecialReg(), CheckARMBuiltinExclusiveCall(), CheckNeonBuiltinFunctionCall(), CheckSMEBuiltinFunctionCall(), CheckSVEBuiltinFunctionCall(), and clang::SemaBase::SemaRef.
bool clang::SemaARM::CheckARMBuiltinExclusiveCall | ( | const TargetInfo & | TI, |
unsigned | BuiltinID, | ||
CallExpr * | TheCall ) |
Definition at line 849 of file SemaARM.cpp.
References clang::QualType::addConst(), clang::cast(), clang::SemaBase::Diag(), clang::ActionResult< PtrTy, Compress >::get(), clang::CallExpr::getArg(), clang::TargetInfo::getARMLDREXMask(), clang::Type::getAs(), clang::SemaBase::getASTContext(), clang::DeclRefExpr::getBeginLoc(), clang::CallExpr::getCallee(), clang::QualType::getObjCLifetime(), clang::Stmt::getSourceRange(), clang::TargetInfo::getTriple(), clang::Expr::getType(), clang::QualType::getUnqualifiedType(), clang::Expr::IgnoreParenCasts(), clang::InitializedEntity::InitializeParameter(), clang::Type::isAnyPointerType(), clang::QualType::isAtLeastAsQualifiedAs(), clang::Type::isBlockPointerType(), clang::Type::isFloatingType(), clang::Type::isIntegerType(), clang::ActionResult< PtrTy, Compress >::isInvalid(), clang::Qualifiers::OCL_Autoreleasing, clang::Qualifiers::OCL_ExplicitNone, clang::Qualifiers::OCL_None, clang::Qualifiers::OCL_Strong, clang::Qualifiers::OCL_Weak, clang::Passing, clang::ast_matchers::pointerType, clang::SemaBase::SemaRef, clang::CallExpr::setArg(), clang::Expr::setType(), and clang::QualType::withVolatile().
Referenced by CheckAArch64BuiltinFunctionCall(), and CheckARMBuiltinFunctionCall().
bool clang::SemaARM::CheckARMBuiltinFunctionCall | ( | const TargetInfo & | TI, |
unsigned | BuiltinID, | ||
CallExpr * | TheCall ) |
Definition at line 1012 of file SemaARM.cpp.
References BuiltinARMSpecialReg(), CheckARMBuiltinExclusiveCall(), CheckARMCoprocessorImmediate(), CheckCDEBuiltinFunctionCall(), CheckMVEBuiltinFunctionCall(), CheckNeonBuiltinFunctionCall(), clang::CallExpr::getArg(), and clang::SemaBase::SemaRef.
bool clang::SemaARM::CheckARMCoprocessorImmediate | ( | const TargetInfo & | TI, |
const Expr * | CoprocArg, | ||
bool | WantCDE ) |
Definition at line 824 of file SemaARM.cpp.
References clang::SemaBase::Diag(), clang::TargetInfo::getARMCDECoprocMask(), clang::SemaBase::getASTContext(), clang::Stmt::getBeginLoc(), clang::Expr::getIntegerConstantExpr(), clang::Stmt::getSourceRange(), int, clang::Expr::isTypeDependent(), clang::Expr::isValueDependent(), and clang::SemaBase::SemaRef.
Referenced by CheckARMBuiltinFunctionCall(), and CheckCDEBuiltinFunctionCall().
bool clang::SemaARM::CheckCDEBuiltinFunctionCall | ( | const TargetInfo & | TI, |
unsigned | BuiltinID, | ||
CallExpr * | TheCall ) |
Definition at line 808 of file SemaARM.cpp.
References CheckARMCoprocessorImmediate(), and clang::CallExpr::getArg().
Referenced by CheckARMBuiltinFunctionCall().
bool clang::SemaARM::CheckImmediateArg | ( | CallExpr * | TheCall, |
unsigned | CheckTy, | ||
unsigned | ArgIdx, | ||
unsigned | EltBitWidth, | ||
unsigned | VecBitWidth ) |
Definition at line 375 of file SemaARM.cpp.
References clang::SemaBase::Diag(), clang::CallExpr::getArg(), clang::CallExpr::getBeginLoc(), clang::Stmt::getSourceRange(), clang::Expr::isTypeDependent(), clang::Expr::isValueDependent(), clang::SemaBase::SemaRef, and clang::Set.
Referenced by PerformNeonImmChecks(), and PerformSVEImmChecks().
Definition at line 799 of file SemaARM.cpp.
Referenced by CheckARMBuiltinFunctionCall().
bool clang::SemaARM::CheckNeonBuiltinFunctionCall | ( | const TargetInfo & | TI, |
unsigned | BuiltinID, | ||
CallExpr * | TheCall ) |
Definition at line 712 of file SemaARM.cpp.
References Arch, clang::Assigning, clang::checkArmStreamingBuiltin(), clang::SemaBase::Diag(), clang::ActionResult< PtrTy, Compress >::get(), clang::CallExpr::getArg(), clang::SemaBase::getASTContext(), clang::CallExpr::getBeginLoc(), clang::Stmt::getBeginLoc(), clang::TargetInfo::getInt64Type(), clang::getNeonEltType(), clang::CallExpr::getNumArgs(), clang::ASTContext::getPointerType(), clang::Stmt::getSourceRange(), clang::TargetInfo::getTriple(), clang::Expr::getType(), clang::ActionResult< PtrTy, Compress >::isInvalid(), PerformNeonImmChecks(), clang::Result, clang::SemaBase::SemaRef, clang::TransferrableTargetInfo::SignedLong, and clang::QualType::withConst().
Referenced by CheckAArch64BuiltinFunctionCall(), and CheckARMBuiltinFunctionCall().
Definition at line 642 of file SemaARM.cpp.
References clang::ArmZAMask, clang::ArmZT0Mask, clang::checkArmStreamingBuiltin(), clang::SemaBase::Diag(), clang::CallExpr::getBeginLoc(), clang::getSMEState(), clang::Stmt::getSourceRange(), clang::hasArmZAState(), clang::hasArmZT0State(), PerformSVEImmChecks(), and clang::SemaBase::SemaRef.
Referenced by CheckAArch64BuiltinFunctionCall().
void clang::SemaARM::CheckSMEFunctionDefAttributes | ( | const FunctionDecl * | FD | ) |
Definition at line 1403 of file SemaARM.cpp.
References clang::FunctionProtoType::ExtProtoInfo::AArch64SMEAttributes, clang::FunctionType::ARM_None, clang::SemaBase::Diag(), clang::FunctionType::getArmZAState(), clang::FunctionType::getArmZT0State(), clang::Type::getAs(), clang::SemaBase::getASTContext(), clang::Decl::getAttr(), clang::Decl::getLocation(), clang::FunctionDecl::getReturnType(), clang::ValueDecl::getType(), clang::Decl::hasAttr(), clang::Type::isSizelessVectorType(), clang::FunctionDecl::parameters(), clang::FunctionType::SME_AgnosticZAStateMask, and clang::FunctionType::SME_PStateSMEnabledMask.
Referenced by clang::Sema::ActOnStartOfLambdaDefinition(), and clang::Sema::CheckFunctionDeclaration().
Definition at line 683 of file SemaARM.cpp.
References clang::checkArmStreamingBuiltin(), PerformSVEImmChecks(), and clang::SemaBase::SemaRef.
Referenced by CheckAArch64BuiltinFunctionCall().
bool clang::SemaARM::checkTargetClonesAttr | ( | SmallVectorImpl< StringRef > & | Params, |
SmallVectorImpl< SourceLocation > & | Locs, | ||
SmallVectorImpl< SmallString< 64 > > & | NewParams ) |
Definition at line 1599 of file SemaARM.cpp.
References clang::SemaBase::Diag(), clang::SemaBase::getASTContext(), hasFeature(), clang::None, and clang::TargetClones.
Referenced by handleTargetClonesAttr().
bool clang::SemaARM::checkTargetVersionAttr | ( | const StringRef | Str, |
const SourceLocation | Loc ) |
Definition at line 1582 of file SemaARM.cpp.
References clang::SemaBase::Diag(), clang::SemaBase::getASTContext(), clang::None, and clang::TargetVersion.
Referenced by handleTargetVersionAttr().
void clang::SemaARM::handleBuiltinAliasAttr | ( | Decl * | D, |
const ParsedAttr & | AL ) |
Definition at line 1231 of file SemaARM.cpp.
References clang::AANT_ArgumentIdentifier, clang::Decl::addAttr(), clang::cast(), CdeAliasValid(), clang::SemaBase::Diag(), clang::ParsedAttr::getArgAsIdent(), clang::SemaBase::getASTContext(), clang::IdentifierInfo::getBuiltinID(), clang::IdentifierLoc::getIdentifierInfo(), clang::AttributeCommonInfo::getLoc(), clang::ParsedAttr::isArgIdent(), MveAliasValid(), SmeAliasValid(), and SveAliasValid().
Referenced by ProcessDeclAttribute().
void clang::SemaARM::handleCmseNSEntryAttr | ( | Decl * | D, |
const ParsedAttr & | AL ) |
Definition at line 1331 of file SemaARM.cpp.
References clang::Decl::addAttr(), clang::cast(), clang::CPlusPlus, clang::SemaBase::Diag(), clang::SemaBase::getASTContext(), clang::Decl::getDeclContext(), clang::SemaBase::getLangOpts(), clang::AttributeCommonInfo::getLoc(), and clang::DeclContext::isExternCContext().
Referenced by ProcessDeclAttribute().
void clang::SemaARM::handleInterruptAttr | ( | Decl * | D, |
const ParsedAttr & | AL ) |
Definition at line 1346 of file SemaARM.cpp.
References clang::Decl::addAttr(), clang::SemaBase::Diag(), clang::SemaBase::getASTContext(), clang::AttributeCommonInfo::getLoc(), clang::Decl::getLocation(), clang::ParsedAttr::getNumArgs(), clang::ASTContext::getTargetInfo(), clang::Decl::hasAttr(), clang::TargetInfo::hasFeature(), and clang::SemaBase::SemaRef.
Referenced by handleInterruptAttr().
void clang::SemaARM::handleInterruptSaveFPAttr | ( | Decl * | D, |
const ParsedAttr & | AL ) |
Definition at line 1378 of file SemaARM.cpp.
References clang::Decl::addAttr(), clang::Decl::dropAttr(), clang::Decl::getLocation(), clang::Decl::hasAttr(), and clang::SemaBase::SemaRef.
Referenced by ProcessDeclAttribute().
void clang::SemaARM::handleNewAttr | ( | Decl * | D, |
const ParsedAttr & | AL ) |
Definition at line 1278 of file SemaARM.cpp.
References clang::Decl::addAttr(), clang::FunctionType::ARM_None, clang::checkNewAttrMutualExclusion(), clang::SemaBase::Diag(), clang::Decl::dropAttr(), clang::FunctionType::getArmZAState(), clang::FunctionType::getArmZT0State(), clang::SemaBase::getASTContext(), clang::Decl::getAttr(), clang::Decl::getFunctionType(), clang::AttributeCommonInfo::getLoc(), clang::ParsedAttr::getNumArgs(), clang::SemaBase::SemaRef, and clang::ParsedAttr::setInvalid().
Referenced by ProcessDeclAttribute().
Definition at line 1204 of file SemaARM.cpp.
References clang::BuiltinAliasValid().
Referenced by handleBuiltinAliasAttr(), and handleBuiltinAliasAttr().
bool clang::SemaARM::PerformNeonImmChecks | ( | CallExpr * | TheCall, |
SmallVectorImpl< std::tuple< int, int, int, int > > & | ImmChecks, | ||
int | OverloadType = -1 ) |
Definition at line 513 of file SemaARM.cpp.
References CheckImmediateArg(), and clang::NeonTypeFlags::getEltSizeInBits().
Referenced by CheckNeonBuiltinFunctionCall().
bool clang::SemaARM::PerformSVEImmChecks | ( | CallExpr * | TheCall, |
SmallVectorImpl< std::tuple< int, int, int > > & | ImmChecks ) |
Definition at line 532 of file SemaARM.cpp.
References CheckImmediateArg().
Referenced by CheckSMEBuiltinFunctionCall(), and CheckSVEBuiltinFunctionCall().
Definition at line 1224 of file SemaARM.cpp.
References clang::ASTContext::BuiltinInfo, clang::AArch64::FirstSMEBuiltin, clang::SemaBase::getASTContext(), clang::Builtin::Context::getAuxBuiltinID(), and clang::AArch64::LastSMEBuiltin.
Referenced by handleBuiltinAliasAttr().
Definition at line 1217 of file SemaARM.cpp.
References clang::ASTContext::BuiltinInfo, clang::AArch64::FirstSVEBuiltin, clang::SemaBase::getASTContext(), clang::Builtin::Context::getAuxBuiltinID(), and clang::AArch64::LastSVEBuiltin.
Referenced by handleBuiltinAliasAttr(), and handleBuiltinAliasAttr().