clang  20.0.0git
Macros | Enumerations | Functions
SemaStmtAttr.cpp File Reference
#include "clang/AST/ASTContext.h"
#include "clang/AST/EvaluatedExprVisitor.h"
#include "clang/Basic/SourceManager.h"
#include "clang/Basic/TargetInfo.h"
#include "clang/Sema/DelayedDiagnostic.h"
#include "clang/Sema/Lookup.h"
#include "clang/Sema/ParsedAttr.h"
#include "clang/Sema/ScopeInfo.h"
#include "clang/Sema/SemaInternal.h"
#include "clang/Sema/SemaSYCL.h"
#include "llvm/ADT/StringExtras.h"
#include <optional>
#include "clang/Sema/AttrParsedAttrImpl.inc"

Go to the source code of this file.

Macros

#define WANT_STMT_MERGE_LOGIC
 

Enumerations

enum class  IVDepExprResult {
  Invalid , Null , Dependent , Array ,
  SafeLen
}
 

Functions

static AttrhandleFallThroughAttr (Sema &S, Stmt *St, const ParsedAttr &A, SourceRange Range)
 
static AttrhandleSuppressAttr (Sema &S, Stmt *St, const ParsedAttr &A, SourceRange Range)
 
static AttrhandleSYCLIntelMaxConcurrencyAttr (Sema &S, Stmt *St, const ParsedAttr &A)
 
static AttrhandleSYCLIntelInitiationIntervalAttr (Sema &S, Stmt *St, const ParsedAttr &A)
 
static AttrhandleSYCLIntelMaxInterleavingAttr (Sema &S, Stmt *St, const ParsedAttr &A)
 
static AttrhandleSYCLIntelLoopCoalesceAttr (Sema &S, Stmt *St, const ParsedAttr &A)
 
static AttrhandleSYCLIntelSpeculatedIterationsAttr (Sema &S, Stmt *St, const ParsedAttr &A)
 
static AttrhandleSYCLIntelDisableLoopPipeliningAttr (Sema &S, Stmt *, const ParsedAttr &A)
 
static bool checkSYCLIntelIVDepSafeLen (Sema &S, llvm::APSInt &Value, Expr *E)
 
static IVDepExprResult HandleIVDepAttrExpr (Sema &S, Expr *E, unsigned &SafelenValue)
 
template<typename T >
static void FilterAttributeList (ArrayRef< const Attr * > Attrs, SmallVectorImpl< const T * > &FilteredAttrs)
 
static void CheckRedundantSYCLIntelIVDepAttrs (Sema &S, ArrayRef< const Attr * > Attrs)
 
static AttrhandleIntelIVDepAttr (Sema &S, Stmt *St, const ParsedAttr &A)
 
static void CheckForDuplicateSYCLIntelLoopCountAttrs (Sema &S, ArrayRef< const Attr * > Attrs)
 
static AttrhandleSYCLIntelLoopCountAttr (Sema &S, Stmt *St, const ParsedAttr &A)
 
static AttrhandleIntelNofusionAttr (Sema &S, Stmt *St, const ParsedAttr &A)
 
static AttrhandleSYCLIntelMaxReinvocationDelayAttr (Sema &S, Stmt *St, const ParsedAttr &A)
 
static AttrhandleSYCLIntelEnableLoopPipeliningAttr (Sema &S, Stmt *, const ParsedAttr &A)
 
static AttrhandleLoopHintAttr (Sema &S, Stmt *St, const ParsedAttr &A, SourceRange)
 
static AttrhandleNoMergeAttr (Sema &S, Stmt *St, const ParsedAttr &A, SourceRange Range)
 
static AttrhandleNoConvergentAttr (Sema &S, Stmt *St, const ParsedAttr &A, SourceRange Range)
 
template<typename OtherAttr , int DiagIdx>
static bool CheckStmtInlineAttr (Sema &SemaRef, const Stmt *OrigSt, const Stmt *CurSt, const AttributeCommonInfo &A)
 
static AttrhandleNoInlineAttr (Sema &S, Stmt *St, const ParsedAttr &A, SourceRange Range)
 
static AttrhandleAlwaysInlineAttr (Sema &S, Stmt *St, const ParsedAttr &A, SourceRange Range)
 
static AttrhandleCXXAssumeAttr (Sema &S, Stmt *St, const ParsedAttr &A, SourceRange Range)
 
static AttrhandleMustTailAttr (Sema &S, Stmt *St, const ParsedAttr &A, SourceRange Range)
 
static AttrhandleLikely (Sema &S, Stmt *St, const ParsedAttr &A, SourceRange Range)
 
static AttrhandleUnlikely (Sema &S, Stmt *St, const ParsedAttr &A, SourceRange Range)
 
static AttrhandleCodeAlignAttr (Sema &S, Stmt *St, const ParsedAttr &A)
 
template<typename LoopAttrT >
static void CheckForDuplicateLoopAttrs (Sema &S, ArrayRef< const Attr * > Attrs)
 
static AttrhandleMSConstexprAttr (Sema &S, Stmt *St, const ParsedAttr &A, SourceRange Range)
 
static void CheckForIncompatibleAttributes (Sema &S, const SmallVectorImpl< const Attr * > &Attrs)
 
template<typename LoopAttrT >
static void CheckForDuplicationSYCLLoopAttribute (Sema &S, const SmallVectorImpl< const Attr * > &Attrs, bool isIntelFPGAAttr=true)
 
template<typename LoopAttrT >
static void CheckForDuplicateAttrs (Sema &S, ArrayRef< const Attr * > Attrs)
 
static void CheckForIncompatibleSYCLLoopAttributes (Sema &S, const SmallVectorImpl< const Attr * > &Attrs)
 
void CheckForIncompatibleUnrollHintAttributes (Sema &S, const SmallVectorImpl< const Attr * > &Attrs, SourceRange Range)
 
static bool CheckLoopUnrollAttrExpr (Sema &S, Expr *E, const AttributeCommonInfo &A, unsigned *UnrollFactor=nullptr)
 
static AttrhandleLoopUnrollHint (Sema &S, Stmt *St, const ParsedAttr &A, SourceRange Range)
 
static AttrhandleHLSLLoopHintAttr (Sema &S, Stmt *St, const ParsedAttr &A, SourceRange Range)
 
static AttrProcessStmtAttribute (Sema &S, Stmt *St, const ParsedAttr &A, SourceRange Range)
 

Macro Definition Documentation

◆ WANT_STMT_MERGE_LOGIC

#define WANT_STMT_MERGE_LOGIC

Definition at line 861 of file SemaStmtAttr.cpp.

Enumeration Type Documentation

◆ IVDepExprResult

enum IVDepExprResult
strong
Enumerator
Invalid 
Null 
Dependent 
Array 
SafeLen 

Definition at line 239 of file SemaStmtAttr.cpp.

Function Documentation

◆ CheckForDuplicateAttrs()

template<typename LoopAttrT >
static void CheckForDuplicateAttrs ( Sema S,
ArrayRef< const Attr * >  Attrs 
)
static

Definition at line 1009 of file SemaStmtAttr.cpp.

◆ CheckForDuplicateLoopAttrs()

template<typename LoopAttrT >
static void CheckForDuplicateLoopAttrs ( Sema S,
ArrayRef< const Attr * >  Attrs 
)
static

Definition at line 813 of file SemaStmtAttr.cpp.

◆ CheckForDuplicateSYCLIntelLoopCountAttrs()

static void CheckForDuplicateSYCLIntelLoopCountAttrs ( Sema S,
ArrayRef< const Attr * >  Attrs 
)
static

Definition at line 397 of file SemaStmtAttr.cpp.

◆ CheckForDuplicationSYCLLoopAttribute()

template<typename LoopAttrT >
static void CheckForDuplicationSYCLLoopAttribute ( Sema S,
const SmallVectorImpl< const Attr * > &  Attrs,
bool  isIntelFPGAAttr = true 
)
static

Definition at line 987 of file SemaStmtAttr.cpp.

◆ CheckForIncompatibleAttributes()

static void CheckForIncompatibleAttributes ( Sema S,
const SmallVectorImpl< const Attr * > &  Attrs 
)
static

Definition at line 866 of file SemaStmtAttr.cpp.

◆ CheckForIncompatibleSYCLLoopAttributes()

static void CheckForIncompatibleSYCLLoopAttributes ( Sema S,
const SmallVectorImpl< const Attr * > &  Attrs 
)
static

Definition at line 1046 of file SemaStmtAttr.cpp.

◆ CheckForIncompatibleUnrollHintAttributes()

void CheckForIncompatibleUnrollHintAttributes ( Sema S,
const SmallVectorImpl< const Attr * > &  Attrs,
SourceRange  Range 
)

Definition at line 1064 of file SemaStmtAttr.cpp.

◆ CheckLoopUnrollAttrExpr()

static bool CheckLoopUnrollAttrExpr ( Sema S,
Expr E,
const AttributeCommonInfo A,
unsigned UnrollFactor = nullptr 
)
static

◆ CheckRedundantSYCLIntelIVDepAttrs()

static void CheckRedundantSYCLIntelIVDepAttrs ( Sema S,
ArrayRef< const Attr * >  Attrs 
)
static

Definition at line 331 of file SemaStmtAttr.cpp.

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

◆ CheckStmtInlineAttr()

template<typename OtherAttr , int DiagIdx>
static bool CheckStmtInlineAttr ( Sema SemaRef,
const Stmt OrigSt,
const Stmt CurSt,
const AttributeCommonInfo A 
)
static

Definition at line 662 of file SemaStmtAttr.cpp.

References clang::SemaBase::Diag(), and clang::Stmt::getBeginLoc().

◆ checkSYCLIntelIVDepSafeLen()

static bool checkSYCLIntelIVDepSafeLen ( Sema S,
llvm::APSInt Value,
Expr E 
)
static

Definition at line 229 of file SemaStmtAttr.cpp.

◆ FilterAttributeList()

template<typename T >
static void FilterAttributeList ( ArrayRef< const Attr * >  Attrs,
SmallVectorImpl< const T * > &  FilteredAttrs 
)
static

Definition at line 316 of file SemaStmtAttr.cpp.

References clang::interp::Cast(), clang::transformer::remove(), and clang::T.

◆ handleAlwaysInlineAttr()

static Attr* handleAlwaysInlineAttr ( Sema S,
Stmt St,
const ParsedAttr A,
SourceRange  Range 
)
static

Definition at line 729 of file SemaStmtAttr.cpp.

◆ handleCodeAlignAttr()

static Attr* handleCodeAlignAttr ( Sema S,
Stmt St,
const ParsedAttr A 
)
static

Definition at line 804 of file SemaStmtAttr.cpp.

◆ handleCXXAssumeAttr()

static Attr* handleCXXAssumeAttr ( Sema S,
Stmt St,
const ParsedAttr A,
SourceRange  Range 
)
static

Definition at line 744 of file SemaStmtAttr.cpp.

◆ handleFallThroughAttr()

static Attr* handleFallThroughAttr ( Sema S,
Stmt St,
const ParsedAttr A,
SourceRange  Range 
)
static

Definition at line 29 of file SemaStmtAttr.cpp.

◆ handleHLSLLoopHintAttr()

static Attr* handleHLSLLoopHintAttr ( Sema S,
Stmt St,
const ParsedAttr A,
SourceRange  Range 
)
static

Definition at line 1144 of file SemaStmtAttr.cpp.

◆ handleIntelIVDepAttr()

static Attr* handleIntelIVDepAttr ( Sema S,
Stmt St,
const ParsedAttr A 
)
static

Definition at line 386 of file SemaStmtAttr.cpp.

◆ handleIntelNofusionAttr()

static Attr* handleIntelNofusionAttr ( Sema S,
Stmt St,
const ParsedAttr A 
)
static

Definition at line 455 of file SemaStmtAttr.cpp.

◆ HandleIVDepAttrExpr()

static IVDepExprResult HandleIVDepAttrExpr ( Sema S,
Expr E,
unsigned SafelenValue 
)
static

Definition at line 247 of file SemaStmtAttr.cpp.

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

◆ handleLikely()

static Attr* handleLikely ( Sema S,
Stmt St,
const ParsedAttr A,
SourceRange  Range 
)
static

Definition at line 759 of file SemaStmtAttr.cpp.

◆ handleLoopHintAttr()

static Attr* handleLoopHintAttr ( Sema S,
Stmt St,
const ParsedAttr A,
SourceRange   
)
static

Definition at line 494 of file SemaStmtAttr.cpp.

◆ handleLoopUnrollHint()

static Attr* handleLoopUnrollHint ( Sema S,
Stmt St,
const ParsedAttr A,
SourceRange  Range 
)
static

Definition at line 1127 of file SemaStmtAttr.cpp.

◆ handleMSConstexprAttr()

static Attr* handleMSConstexprAttr ( Sema S,
Stmt St,
const ParsedAttr A,
SourceRange  Range 
)
static

Definition at line 851 of file SemaStmtAttr.cpp.

◆ handleMustTailAttr()

static Attr* handleMustTailAttr ( Sema S,
Stmt St,
const ParsedAttr A,
SourceRange  Range 
)
static

Definition at line 753 of file SemaStmtAttr.cpp.

◆ handleNoConvergentAttr()

static Attr* handleNoConvergentAttr ( Sema S,
Stmt St,
const ParsedAttr A,
SourceRange  Range 
)
static

Definition at line 648 of file SemaStmtAttr.cpp.

◆ handleNoInlineAttr()

static Attr* handleNoInlineAttr ( Sema S,
Stmt St,
const ParsedAttr A,
SourceRange  Range 
)
static

Definition at line 714 of file SemaStmtAttr.cpp.

◆ handleNoMergeAttr()

static Attr* handleNoMergeAttr ( Sema S,
Stmt St,
const ParsedAttr A,
SourceRange  Range 
)
static

Definition at line 635 of file SemaStmtAttr.cpp.

◆ handleSuppressAttr()

static Attr* handleSuppressAttr ( Sema S,
Stmt St,
const ParsedAttr A,
SourceRange  Range 
)
static

Definition at line 56 of file SemaStmtAttr.cpp.

◆ handleSYCLIntelDisableLoopPipeliningAttr()

static Attr* handleSYCLIntelDisableLoopPipeliningAttr ( Sema S,
Stmt ,
const ParsedAttr A 
)
static

Definition at line 223 of file SemaStmtAttr.cpp.

◆ handleSYCLIntelEnableLoopPipeliningAttr()

static Attr* handleSYCLIntelEnableLoopPipeliningAttr ( Sema S,
Stmt ,
const ParsedAttr A 
)
static

Definition at line 489 of file SemaStmtAttr.cpp.

◆ handleSYCLIntelInitiationIntervalAttr()

static Attr* handleSYCLIntelInitiationIntervalAttr ( Sema S,
Stmt St,
const ParsedAttr A 
)
static

Definition at line 129 of file SemaStmtAttr.cpp.

◆ handleSYCLIntelLoopCoalesceAttr()

static Attr* handleSYCLIntelLoopCoalesceAttr ( Sema S,
Stmt St,
const ParsedAttr A 
)
static

Definition at line 186 of file SemaStmtAttr.cpp.

◆ handleSYCLIntelLoopCountAttr()

static Attr* handleSYCLIntelLoopCountAttr ( Sema S,
Stmt St,
const ParsedAttr A 
)
static

Definition at line 447 of file SemaStmtAttr.cpp.

◆ handleSYCLIntelMaxConcurrencyAttr()

static Attr* handleSYCLIntelMaxConcurrencyAttr ( Sema S,
Stmt St,
const ParsedAttr A 
)
static

Definition at line 100 of file SemaStmtAttr.cpp.

◆ handleSYCLIntelMaxInterleavingAttr()

static Attr* handleSYCLIntelMaxInterleavingAttr ( Sema S,
Stmt St,
const ParsedAttr A 
)
static

Definition at line 157 of file SemaStmtAttr.cpp.

◆ handleSYCLIntelMaxReinvocationDelayAttr()

static Attr* handleSYCLIntelMaxReinvocationDelayAttr ( Sema S,
Stmt St,
const ParsedAttr A 
)
static

Definition at line 481 of file SemaStmtAttr.cpp.

◆ handleSYCLIntelSpeculatedIterationsAttr()

static Attr* handleSYCLIntelSpeculatedIterationsAttr ( Sema S,
Stmt St,
const ParsedAttr A 
)
static

Definition at line 215 of file SemaStmtAttr.cpp.

◆ handleUnlikely()

static Attr* handleUnlikely ( Sema S,
Stmt St,
const ParsedAttr A,
SourceRange  Range 
)
static

Definition at line 768 of file SemaStmtAttr.cpp.

◆ ProcessStmtAttribute()

static Attr* ProcessStmtAttribute ( Sema S,
Stmt St,
const ParsedAttr A,
SourceRange  Range 
)
static

Definition at line 1170 of file SemaStmtAttr.cpp.