Namespaces | Classes | Typedefs | Enumerations | Functions | Variables
clang::insights Namespace Reference

Namespaces

 asthelpers
 
 details
 

Classes

struct  IsClangNewerThan
 
class  ArrayInitCodeGenerator
 
class  StructuredBindingsCodeGenerator
 
class  UsingCodeGenerator
 Handle using statements which pull functions ore members from a base class into the class. More...
 
class  LambdaInitCaptureCodeGenerator
 A special code generator for Lambda init captures which use std::move. More...
 
class  LambdaNameOnlyCodeGenerator
 
class  BindingDeclFinder
 Find a DeclRefExpr belonging to a DecompositionDecl. More...
 
class  TemporaryDeclFinder
 Find a DeclRefExpr belonging to a DecompositionDecl. More...
 
class  ContinueASTTransformer
 
class  CppInsightsCommentStmt
 
struct  LifetimeEntry
 
class  LifetimeTracker
 
class  CodeGenerator
 More or less the heart of C++ Insights. More...
 
class  LambdaCodeGenerator
 
class  MultiStmtDeclCodeGenerator
 
struct  CoroutineASTData
 
class  CoroutinesCodeGenerator
 A special generator for coroutines. It is only activated, if -show-coroutines-transformation is given as a command line option. More...
 
class  CfrontCodeGenerator
 A special generator for coroutines. It is only activated, if -show-coroutines-transformation is given as a command line option. More...
 
class  CodeGeneratorVariant
 A special container which creates either a CodeGenerator or a CfrontCodeGenerator depending on the command line options. More...
 
class  CoroutineASTTransformer
 Find a SuspendsExpr's in a coroutine body statement for early transformation. More...
 
struct  CppInsightsPrintingPolicy
 
struct  overloaded
 
struct  ScopeHelper
 Track the scope we are currently in to build a properly scoped variable. More...
 
class  ScopeHandler
 The ScopeHandler tracks the current scope. More...
 
class  StringStream
 Specialization for ::llvm::raw_string_ostream with an internal std::string buffer. More...
 
class  FinalAction
 A helper which invokes a lambda when the scope is destroyed. More...
 
struct  is
 Handy helper to avoid longish comparisons. More...
 
class  P0315Visitor
 ! Find a LambdaExpr inside a Decltype More...
 
struct  BackupAndRestore
 
class  MyOptional
 
class  Once
 A helper object which returns a boolean value just once and toggles it after the first query. More...
 
class  OutputFormatHelper
 The C++ Insights formatter. More...
 

Typedefs

using GlobalInsertMap = std::pair< bool, std::string_view >
 
using OnceTrue = Once< true >
 Returns true only once, following checks return false. More...
 
using OnceFalse = Once< false >
 Returns false only once, following checks return true. More...
 

Enumerations

enum class  GlobalInserts {
  HeaderNew , HeaderException , HeaderUtility , HeaderStddef ,
  HeaderAssert , HeaderStdlib , FuncCxaStart , FuncCxaAtExit ,
  FuncMalloc , FuncFree , FuncMemset , FuncMemcpy ,
  FuncCxaVecNew , FuncCxaVecCtor , FuncCxaVecDel , FuncCxaVecDtor ,
  FuncVtableStruct , FuncCxaPureVirtual , MAX
}
 

Functions

static MemberExpr * AccessMember (std::string_view name, const ValueDecl *vd, QualType type)
 
static bool IsCopyOrMoveCtor (const CXXConstructorDecl *ctor)
 
static bool IsCopyOrMoveAssign (const CXXMethodDecl *stmt)
 
static std::string GetSpecialMemberName (const ValueDecl *vd, QualType type)
 
std::string GetSpecialMemberName (const ValueDecl *vd)
 
static bool HasCtor (QualType t)
 
static bool HasDtor (QualType t)
 
static auto * CallVecDeleteOrDtor (Expr *objectParam, QualType allocatedType, std::string_view name, uint64_t size)
 
static auto * CallVecDelete (Expr *objectParam, QualType allocatedType)
 
static auto * CallVecDtor (Expr *objectParam, const ConstantArrayType *ar)
 
static auto * CallVecNewOrCtor (std::string_view ctorName, Expr *objectParam, QualType allocatedType, Expr *arraySizeExpr, std::string_view funName)
 
static auto * CallVecNew (std::string_view ctorName, Expr *objectParam, QualType allocatedType, Expr *arraySizeExpr)
 
static auto * CallVecCtor (std::string_view ctorName, const VarDecl *objectParam, QualType allocatedType, Expr *arraySizeExpr)
 
static void InsertVtblPtr (const CXXMethodDecl *stmt, const CXXRecordDecl *cur, StmtsContainer &bodyStmts)
 
static void ProcessFields (CXXRecordDecl *recordDecl, const CXXRecordDecl *rd)
 
static std::string GetFirstPolymorphicBaseName (const RecordDecl *decl, const RecordDecl *to)
 
static const CXXRecordDecl * GetFirstPolymorphicBase (const RecordDecl *decl)
 ! Find the first polymorphic base class. More...
 
 BUILD_OPT_AND (IsPointer, QualType)
 
 BUILD_OPT_AND (IsPOD, QualType)
 
 BUILD_OPT_AND_O (CanonicalType, const InitListExpr &, QualType)
 
static std::string AccessToStringWithColon (const AccessSpecifier &access)
 
static std::string_view GetCastName (const CastKind castKind, bool constnessChange=false)
 
static std::string_view GetTagDeclTypeName (const TagDecl &decl)
 
static std::string_view ArrowOrDot (bool isArrow)
 
template<typename T >
static T ValueOrDefault (bool b, T v)
 
template<typename T >
static T ValueOr (bool b, T val, T el)
 
static std::optional< std::string > GetFieldDeclNameForLambda (const FieldDecl &fieldDecl, const CXXRecordDecl &cxxRecordDecl)
 
static std::string_view GetStorageClassAsString (const StorageClass &sc)
 
static std::string GetStorageClassAsStringWithSpace (const StorageClass &sc)
 
static std::string GetQualifiers (const VarDecl &vd)
 
static std::string FormatVarTemplateSpecializationDecl (const Decl *decl, std::string &&defaultName)
 
int GetGlobalVtablePos (const CXXRecordDecl *record, const CXXRecordDecl *recordB)
 
void PushVtableEntry (const CXXRecordDecl *record, const CXXRecordDecl *recordB, VarDecl *decl)
 
static void PushGlobalVariable (const Expr *callExpr)
 
static void PushGlobalVariableDtor (const Expr *callExpr)
 
std::string EmitGlobalVariableCtors ()
 
static bool IsPrimaryTemplatePackExpansionExpr (const ParenListExpr *stmt)
 
static std::string GetTypeConstraintAsString (const TypeConstraint *typeConstraint)
 
static std::string_view Ellipsis (bool b)
 
static std::string_view EllipsisSpace (bool b)
 
static std::optional< std::pair< QualType, APValue > > EvaluateNTTPAsConstantExpr (const Expr *expr)
 Evaluates a potential NTTP as a constant expression. More...
 
template<typename... Args>
static bool IsStmtRequiringSemi (const Stmt *stmt)
 
static bool IsConstQualifiedType (QualType type)
 
static auto & GetRecordLayout (const RecordDecl *recordDecl)
 
auto GetSpaces (std::string::size_type offset)
 
static FieldDecl * AddField (CoroutineASTData &astData, std::string_view name, QualType type)
 
static auto * CreateCoroFunctionDecl (std::string funcName, QualType type)
 
static void SetFunctionBody (FunctionDecl *fd, StmtsContainer &bodyStmts)
 
static std::string BuildSuspendVarName (const OpaqueValueExpr *stmt)
 
static std::optional< std::string > FindValue (llvm::DenseMap< const Expr *, std::pair< const DeclRefExpr *, std::string >> &map, const Expr *key)
 
static void ToDo (std::string_view name, OutputFormatHelper &outputFormatHelper, std::source_location loc)
 
void ToDo (const Stmt *stmt, OutputFormatHelper &outputFormatHelper, std::source_location loc)
 
void ToDo (const Decl *stmt, OutputFormatHelper &outputFormatHelper, std::source_location loc)
 
void ToDo (const class TemplateArgument &stmt, class OutputFormatHelper &outputFormatHelper, std::source_location loc=std::source_location::current())
 Helper function to generate TODO comments for an unsupported TemplateArgument. More...
 
void DPrint ([[maybe_unused]] const char *fmt, [[maybe_unused]] const auto &... args)
 Debug print which is disabled in release-mode. More...
 
void Error (const char *fmt, const auto &... args)
 Log an error. More...
 
void Dump ([[maybe_unused]] const auto *stmt)
 
void Error (const Decl *stmt, const char *fmt, const auto &... args)
 Log an error. More...
 
void Error (const Stmt *stmt, const char *fmt, const auto &... args)
 Log an error. More...
 
void ToDo (const class Stmt *stmt, class OutputFormatHelper &outputFormatHelper, std::source_location loc=std::source_location::current())
 Helper function to generate TODO comments for an unsupported Stmt. More...
 
void ToDo (const class Decl *stmt, class OutputFormatHelper &outputFormatHelper, std::source_location loc=std::source_location::current())
 Helper function to generate TODO comments for an unsupported Decl. More...
 
void AddGLobalInsertMapEntry (GlobalInserts idx, std::string_view value)
 
void EnableGlobalInsert (GlobalInserts idx)
 
static std::string GetNamePlain (const NamedDecl &decl)
 
std::string GetPlainName (const DeclRefExpr &DRE)
 
 STRONG_BOOL (InsightsSuppressScope)
 
 STRONG_BOOL (InsightsCanonicalTypes)
 
static std::string GetUnqualifiedScopelessName (const Type *type, const InsightsSuppressScope supressScope)
 
void ReplaceAll (std::string &str, std::string_view from, std::string_view to)
 
std::string GetNestedName (const NestedNameSpecifier *nns, const IgnoreNamespace ignoreNamespace)
 
static const std::string GetAsCPPStyleString (const QualType &t, const CppInsightsPrintingPolicy &printingPolicy)
 
std::string BuildInternalVarName (const std::string_view &varName)
 
static std::string BuildInternalVarName (const std::string_view &varName, const SourceLocation &loc, const SourceManager &sm)
 
void InsertBefore (std::string &source, const std::string_view &find, const std::string_view &replace)
 
static void InsertAfter (std::string &source, const std::string_view &find, const std::string_view &replace)
 
std::string MakeLineColumnName (const SourceManager &sm, const SourceLocation &loc, const std::string_view &prefix)
 
static std::string MakeLineColumnName (const Decl &decl, const std::string_view prefix)
 
std::string GetLambdaName (const CXXRecordDecl &lambda)
 
static std::string GetAnonymStructOrUnionName (const CXXRecordDecl &cxxRecordDecl)
 
std::string BuildRetTypeName (const Decl &decl)
 
const QualType GetDesugarType (const QualType &QT)
 Remove decltype from a QualType, if possible. More...
 
static const VarDecl * GetVarDeclFromDeclRefExpr (const DeclRefExpr &declRefExpr)
 
std::string GetDeclContext (const DeclContext *ctx, WithTemplateParameters withTemplateParameters)
 
static bool HasOverload (const FunctionDecl *fd)
 
std::string GetCfrontOverloadedFunctionName (const FunctionDecl *fd)
 
 STRONG_BOOL (UseLexicalParent)
 
static bool NeedsNamespace (const Decl &decl, UseLexicalParent useLexicalParent)
 
static const SubstTemplateTypeParmType * GetSubstTemplateTypeParmType (const Type *t)
 
static const DeclRefExpr * FindVarDeclRef (const Stmt *stmt)
 
static std::string GetTemplateParameterPackArgumentName (std::string_view name, const Decl *decl)
 
std::string GetName (const NamedDecl &nd, const QualifiedName qualifiedName)
 
std::string BuildTemplateParamObjectName (std::string name)
 
std::string GetName (const TemplateParamObjectDecl &decl)
 
std::string GetName (const CXXRecordDecl &RD)
 
std::string GetTemporaryName (const Expr &tmp)
 
std::string GetName (const CXXTemporaryObjectExpr &tmp)
 
std::string GetName (const QualType &t, const Unqualified unqualified)
 
std::string GetUnqualifiedScopelessName (const Type *type)
 
QualType GetType (QualType)
 In Cfront mode we transform references to pointers. More...
 
template<typename QT , typename SUB_T , typename SUB_T2 = void>
static bool HasTypeWithSubType (const QualType &t)
 
template<typename QT , typename SUB_T >
static bool HasTypePath (const QualType &t)
 
std::string GetTypeNameAsParameter (const QualType &t, std::string_view varName, const Unqualified unqualified)
 
void AppendTemplateTypeParamName (OutputFormatHelper &ofm, const TemplateTypeParmDecl *decl, const bool isParameter, const TemplateTypeParmType *type)
 
static bool IsTrivialStaticClassVarDecl (const DeclRefExpr &declRefExpr)
 
APValue * GetEvaluatedValue (const VarDecl &varDecl)
 Get the evaluated APValue from a VarDecl More...
 
bool IsEvaluatable (const VarDecl &varDecl)
 Check whether a VarDecls initialization can be done a compile-time. More...
 
bool IsTrivialStaticClassVarDecl (const VarDecl &varDecl)
 
std::string GetName (const DeclRefExpr &declRefExpr)
 
const DeclRefExpr * FindDeclRef (const Stmt *stmt)
 Go deep in a Stmt if necessary and look to all childs for a DeclRefExpr. More...
 
std::string GetName (const VarDecl &VD)
 
static std::optional< bool > EvaluateAsBoolenCondition (const Expr &expr, const Decl &decl)
 
const std::string GetNoExcept (const FunctionDecl &decl)
 
const std::string_view GetConst (const FunctionDecl &decl)
 
std::string GetElaboratedTypeKeyword (const ElaboratedTypeKeyword keyword)
 
uint64_t GetSize (const ConstantArrayType *arrayType)
 
template<class... Ts>
 overloaded (Ts...) -> overloaded< Ts... >
 
bool IsStaticStorageClass (const CXXMethodDecl *md)
 
bool IsReferenceType (const ValueDecl *decl)
 
bool IsReferenceType (const DeclRefExpr *decl)
 
bool Contains (const std::string_view source, const std::string_view search)
 
template<typename K , typename V , typename U >
bool Contains (const llvm::DenseMap< K, V > &map, const U &key)
 
const SourceManager & GetSM (const Decl &decl)
 
const LangOptions & GetLangOpts (const Decl &decl)
 
 STRONG_BOOL (QualifiedName)
 
std::string GetNameAsFunctionPointer (const QualType &t)
 
std::string GetLambdaName (const LambdaExpr &lambda)
 
bool IsAnonymousStructOrUnion (const CXXRecordDecl *cxxRecordDecl)
 Check whether this is an anonymous struct or union. More...
 
QualType GetDesugarReturnType (const FunctionDecl &FD)
 
 STRONG_BOOL (Unqualified)
 
 STRONG_BOOL (WithTemplateParameters)
 
 STRONG_BOOL (IgnoreNamespace)
 
template<typename QT , typename SUB_T >
static bool TypeContainsSubType (const QualType &t)
 
template<typename T , typename TFunc >
void for_each (T start, T end, TFunc &&func)
 
template<typename T >
 is (T) -> is< T >
 
std::string ToString (const llvm::APSInt &val)
 
uint64_t Normalize (const llvm::APInt &arg)
 
std::string Normalize (const llvm::APSInt &arg)
 
std::string Normalize (const llvm::APFloat &arg)
 
std::string Normalize (const APValue &arg)
 
std::string_view Normalize (const StringRef &arg)
 
static std::string Normalize (const CharUnits &arg)
 
template<class T >
decltype(auto) Normalize (const T &arg)
 
std::string StrCat (const auto &... args)
 

Variables

static llvm::DenseMap< std::pair< const CXXRecordDecl *, const CXXRecordDecl * >, int > mThisPointerOffset {}
 Store the this pointer offset from derived to base class. More...
 
template<typename T >
std::function Isa
 
static SmallVector< std::pair< std::pair< const CXXRecordDecl *, const CXXRecordDecl * >, VarDecl * >, 10 > gVtables {}
 
static SmallVector< Expr *, 10 > globalVarCtors {}
 
static SmallVector< Expr *, 10 > globalVarDtors {}
 
constexpr std::string_view CORO_FRAME_NAME {"__f"sv}
 
const std::string CORO_FRAME_ACCESS {StrCat(CORO_FRAME_NAME, "->"sv)}
 
const std::string CORO_FRAME_ACCESS_THIS {StrCat(CORO_FRAME_ACCESS, kwInternalThis)}
 
const std::string SUSPEND_INDEX_NAME {BuildInternalVarName("suspend_index"sv)}
 
const std::string INITIAL_AWAIT_SUSPEND_CALLED_NAME {BuildInternalVarName("initial_await_suspend_called"sv)}
 
const std::string RESUME_LABEL_PREFIX {BuildInternalVarName("resume"sv)}
 
const std::string FINAL_SUSPEND_NAME {BuildInternalVarName("final_suspend"sv)}
 
static constinit std::array< GlobalInsertMap, static_cast< size_t >GlobalInserts::MAX)> gGlobalInserts {}
 

Typedef Documentation

◆ GlobalInsertMap

using clang::insights::GlobalInsertMap = typedef std::pair<bool, std::string_view>

Definition at line 97 of file Insights.cpp.

◆ OnceFalse

using clang::insights::OnceFalse = typedef Once<false>

Returns false only once, following checks return true.

Definition at line 57 of file InsightsOnce.h.

◆ OnceTrue

using clang::insights::OnceTrue = typedef Once<true>

Returns true only once, following checks return false.

Definition at line 55 of file InsightsOnce.h.

Enumeration Type Documentation

◆ GlobalInserts

Enumerator
HeaderNew 

Track whether we have at least one local static variable in this TU. If so we need to insert the <new> header for the placement-new.

HeaderException 

Track whether there was a noexcept transformation requireing the exception header.

HeaderUtility 

Track whether there was a std::move inserted.

HeaderStddef 

Track whether we need to insert <stddef.h> in Cfront mode.

HeaderAssert 

Track whether we need to insert <assert.h> in Cfront mode.

HeaderStdlib 

Track whether we need to insert <stdlib.h> in Cfront mode.

FuncCxaStart 
FuncCxaAtExit 
FuncMalloc 
FuncFree 
FuncMemset 
FuncMemcpy 
FuncCxaVecNew 
FuncCxaVecCtor 
FuncCxaVecDel 
FuncCxaVecDtor 
FuncVtableStruct 
FuncCxaPureVirtual 
MAX 

Definition at line 40 of file Insights.h.

Function Documentation

◆ AccessMember()

static MemberExpr* clang::insights::AccessMember ( std::string_view  name,
const ValueDecl *  vd,
QualType  type 
)
static

◆ AccessToStringWithColon()

static std::string clang::insights::AccessToStringWithColon ( const AccessSpecifier &  access)
static

Definition at line 80 of file CodeGenerator.cpp.

◆ AddField()

static FieldDecl* clang::insights::AddField ( CoroutineASTData astData,
std::string_view  name,
QualType  type 
)
static

◆ AddGLobalInsertMapEntry()

void clang::insights::AddGLobalInsertMapEntry ( GlobalInserts  idx,
std::string_view  value 
)

Definition at line 101 of file Insights.cpp.

References gGlobalInserts.

Referenced by main().

◆ AppendTemplateTypeParamName()

void clang::insights::AppendTemplateTypeParamName ( OutputFormatHelper ofm,
const TemplateTypeParmDecl *  decl,
const bool  isParameter,
const TemplateTypeParmType *  type 
)

◆ ArrowOrDot()

static std::string_view clang::insights::ArrowOrDot ( bool  isArrow)
static

Definition at line 281 of file CodeGenerator.cpp.

◆ BUILD_OPT_AND() [1/2]

clang::insights::BUILD_OPT_AND ( IsPOD  ,
QualType   
)

Definition at line 57 of file CodeGenerator.cpp.

References GetGlobalAST().

◆ BUILD_OPT_AND() [2/2]

clang::insights::BUILD_OPT_AND ( IsPointer  ,
QualType   
)

Definition at line 48 of file CodeGenerator.cpp.

◆ BUILD_OPT_AND_O()

clang::insights::BUILD_OPT_AND_O ( CanonicalType  ,
const InitListExpr &  ,
QualType   
)

Definition at line 75 of file CodeGenerator.cpp.

◆ BuildInternalVarName() [1/2]

std::string clang::insights::BuildInternalVarName ( const std::string_view &  varName)

◆ BuildInternalVarName() [2/2]

static std::string clang::insights::BuildInternalVarName ( const std::string_view &  varName,
const SourceLocation &  loc,
const SourceManager &  sm 
)
static

Definition at line 227 of file InsightsHelpers.cpp.

References BuildInternalVarName(), and StrCat().

◆ BuildRetTypeName()

std::string clang::insights::BuildRetTypeName ( const Decl &  decl)

◆ BuildSuspendVarName()

static std::string clang::insights::BuildSuspendVarName ( const OpaqueValueExpr *  stmt)
static

◆ BuildTemplateParamObjectName()

std::string clang::insights::BuildTemplateParamObjectName ( std::string  name)

◆ CallVecCtor()

static auto* clang::insights::CallVecCtor ( std::string_view  ctorName,
const VarDecl *  objectParam,
QualType  allocatedType,
Expr *  arraySizeExpr 
)
static

◆ CallVecDelete()

static auto* clang::insights::CallVecDelete ( Expr *  objectParam,
QualType  allocatedType 
)
static

◆ CallVecDeleteOrDtor()

static auto* clang::insights::CallVecDeleteOrDtor ( Expr *  objectParam,
QualType  allocatedType,
std::string_view  name,
uint64_t  size 
)
static

◆ CallVecDtor()

static auto* clang::insights::CallVecDtor ( Expr *  objectParam,
const ConstantArrayType *  ar 
)
static

◆ CallVecNew()

static auto* clang::insights::CallVecNew ( std::string_view  ctorName,
Expr *  objectParam,
QualType  allocatedType,
Expr *  arraySizeExpr 
)
static

◆ CallVecNewOrCtor()

static auto* clang::insights::CallVecNewOrCtor ( std::string_view  ctorName,
Expr *  objectParam,
QualType  allocatedType,
Expr *  arraySizeExpr,
std::string_view  funName 
)
static

◆ Contains() [1/2]

template<typename K , typename V , typename U >
bool clang::insights::Contains ( const llvm::DenseMap< K, V > &  map,
const U &  key 
)
inline

Definition at line 65 of file InsightsHelpers.h.

◆ Contains() [2/2]

bool clang::insights::Contains ( const std::string_view  source,
const std::string_view  search 
)
inline

◆ CreateCoroFunctionDecl()

static auto* clang::insights::CreateCoroFunctionDecl ( std::string  funcName,
QualType  type 
)
static

◆ DPrint()

void clang::insights::DPrint ( [[maybe_unused] ] const char *  fmt,
[[maybe_unused] ] const auto &...  args 
)
inline

Debug print which is disabled in release-mode.

It takes a variable number of parameters which are normalized if they are a std::string or a StringRef.

Definition at line 71 of file DPrint.h.

References clang::insights::details::FPrintf().

Referenced by clang::insights::CfrontCodeGenerator::InsertArg(), clang::insights::LambdaCodeGenerator::InsertArg(), and clang::insights::CodeGenerator::InsertArg().

◆ Dump()

void clang::insights::Dump ( [[maybe_unused] ] const auto *  stmt)
inline

Definition at line 86 of file DPrint.h.

Referenced by Error(), and ToDo().

◆ Ellipsis()

static std::string_view clang::insights::Ellipsis ( bool  b)
static

◆ EllipsisSpace()

static std::string_view clang::insights::EllipsisSpace ( bool  b)
static

◆ EmitGlobalVariableCtors()

std::string clang::insights::EmitGlobalVariableCtors ( )

◆ EnableGlobalInsert()

void clang::insights::EnableGlobalInsert ( GlobalInserts  idx)

◆ Error() [1/3]

void clang::insights::Error ( const char *  fmt,
const auto &...  args 
)
inline

Log an error.

Definition at line 80 of file DPrint.h.

References clang::insights::details::FPrintf().

Referenced by Error(), clang::insights::CodeGenerator::GetValueOfValueInit(), main(), and ToDo().

◆ Error() [2/3]

void clang::insights::Error ( const Decl *  stmt,
const char *  fmt,
const auto &...  args 
)
inline

Log an error.

In debug-mode this dumps the Decl which caused the error and the error message.

Definition at line 99 of file DPrint.h.

References Dump(), and Error().

◆ Error() [3/3]

void clang::insights::Error ( const Stmt stmt,
const char *  fmt,
const auto &...  args 
)
inline

Log an error.

In debug-mode this dumps the Stmt which caused the error and the error message.

Definition at line 112 of file DPrint.h.

References Dump(), and Error().

◆ EvaluateAsBoolenCondition()

static std::optional<bool> clang::insights::EvaluateAsBoolenCondition ( const Expr &  expr,
const Decl &  decl 
)
static

Definition at line 1503 of file InsightsHelpers.cpp.

Referenced by GetNoExcept().

◆ EvaluateNTTPAsConstantExpr()

static std::optional<std::pair<QualType, APValue> > clang::insights::EvaluateNTTPAsConstantExpr ( const Expr *  expr)
static

Evaluates a potential NTTP as a constant expression.

Used for C++20's struct/class as NTTP.

Definition at line 1748 of file CodeGenerator.cpp.

References GetGlobalAST().

Referenced by clang::insights::CodeGenerator::InsertTemplateArg(), and clang::insights::CodeGenerator::InsertTemplateParameters().

◆ FindDeclRef()

const DeclRefExpr * clang::insights::FindDeclRef ( const Stmt stmt)

Go deep in a Stmt if necessary and look to all childs for a DeclRefExpr.

Definition at line 1448 of file InsightsHelpers.cpp.

Referenced by GetName(), clang::insights::CoroutinesCodeGenerator::InsertArg(), and clang::insights::CoroutineASTTransformer::VisitCoroutineBodyStmt().

◆ FindValue()

static std::optional<std::string> clang::insights::FindValue ( llvm::DenseMap< const Expr *, std::pair< const DeclRefExpr *, std::string >> &  map,
const Expr *  key 
)
static

◆ FindVarDeclRef()

static const DeclRefExpr* clang::insights::FindVarDeclRef ( const Stmt stmt)
static

Definition at line 1012 of file InsightsHelpers.cpp.

Referenced by GetTemplateParameterPackArgumentName().

◆ for_each()

template<typename T , typename TFunc >
void clang::insights::for_each ( start,
end,
TFunc &&  func 
)

◆ FormatVarTemplateSpecializationDecl()

static std::string clang::insights::FormatVarTemplateSpecializationDecl ( const Decl *  decl,
std::string &&  defaultName 
)
static

Definition at line 873 of file CodeGenerator.cpp.

◆ GetAnonymStructOrUnionName()

static std::string clang::insights::GetAnonymStructOrUnionName ( const CXXRecordDecl &  cxxRecordDecl)
static

Definition at line 278 of file InsightsHelpers.cpp.

References MakeLineColumnName().

Referenced by GetName().

◆ GetAsCPPStyleString()

static const std::string clang::insights::GetAsCPPStyleString ( const QualType &  t,
const CppInsightsPrintingPolicy printingPolicy 
)
static

Definition at line 214 of file InsightsHelpers.cpp.

Referenced by clang::insights::details::GetName().

◆ GetCastName()

static std::string_view clang::insights::GetCastName ( const CastKind  castKind,
bool  constnessChange = false 
)
static

◆ GetCfrontOverloadedFunctionName()

std::string clang::insights::GetCfrontOverloadedFunctionName ( const FunctionDecl *  fd)

Definition at line 900 of file InsightsHelpers.cpp.

References GetInsightsOptions(), GetName(), GetSpecialMemberName(), HasOverload(), and ReplaceAll().

Referenced by GetName().

◆ GetConst()

const std::string_view clang::insights::GetConst ( const FunctionDecl &  decl)

◆ GetDeclContext()

std::string clang::insights::GetDeclContext ( const DeclContext *  ctx,
WithTemplateParameters  withTemplateParameters 
)

◆ GetDesugarReturnType()

QualType clang::insights::GetDesugarReturnType ( const FunctionDecl &  FD)
inline

◆ GetDesugarType()

const QualType clang::insights::GetDesugarType ( const QualType &  QT)

Remove decltype from a QualType, if possible.

Definition at line 292 of file InsightsHelpers.cpp.

Referenced by GetDesugarReturnType(), HasTypePath(), HasTypeWithSubType(), clang::insights::LambdaCodeGenerator::InsertArg(), and TypeContainsSubType().

◆ GetElaboratedTypeKeyword()

std::string clang::insights::GetElaboratedTypeKeyword ( const ElaboratedTypeKeyword  keyword)

Definition at line 1561 of file InsightsHelpers.cpp.

Referenced by clang::insights::details::BuildNamespace().

◆ GetEvaluatedValue()

APValue * clang::insights::GetEvaluatedValue ( const VarDecl &  varDecl)

Get the evaluated APValue from a VarDecl

Returns nullptr is the VarDecl is not evaluatable.

Definition at line 1370 of file InsightsHelpers.cpp.

Referenced by IsEvaluatable().

◆ GetFieldDeclNameForLambda()

static std::optional<std::string> clang::insights::GetFieldDeclNameForLambda ( const FieldDecl &  fieldDecl,
const CXXRecordDecl &  cxxRecordDecl 
)
static

Get the name of a FieldDecl in case this FieldDecl is part of a lambda. The name has to be retrieved from the capture fields or can be __this.

Definition at line 597 of file CodeGenerator.cpp.

References GetName(), and kwInternalThis.

◆ GetFirstPolymorphicBase()

static const CXXRecordDecl* clang::insights::GetFirstPolymorphicBase ( const RecordDecl *  decl)
static

! Find the first polymorphic base class.

Definition at line 1010 of file CfrontCodeGenerator.cpp.

Referenced by clang::insights::CfrontCodeGenerator::InsertArg().

◆ GetFirstPolymorphicBaseName()

static std::string clang::insights::GetFirstPolymorphicBaseName ( const RecordDecl *  decl,
const RecordDecl *  to 
)
static

Definition at line 830 of file CfrontCodeGenerator.cpp.

References GetName().

Referenced by clang::insights::CfrontCodeGenerator::InsertArg().

◆ GetGlobalVtablePos()

int clang::insights::GetGlobalVtablePos ( const CXXRecordDecl *  record,
const CXXRecordDecl *  recordB 
)

Definition at line 1093 of file CodeGenerator.cpp.

References gVtables.

Referenced by InsertVtblPtr().

◆ GetLambdaName() [1/2]

std::string clang::insights::GetLambdaName ( const CXXRecordDecl &  lambda)

◆ GetLambdaName() [2/2]

std::string clang::insights::GetLambdaName ( const LambdaExpr &  lambda)
inline

Definition at line 123 of file InsightsHelpers.h.

References GetLambdaName().

◆ GetLangOpts()

const LangOptions& clang::insights::GetLangOpts ( const Decl &  decl)
inline

◆ GetName() [1/7]

std::string clang::insights::GetName ( const CXXRecordDecl &  RD)

◆ GetName() [2/7]

std::string clang::insights::GetName ( const CXXTemporaryObjectExpr &  tmp)

Definition at line 1170 of file InsightsHelpers.cpp.

References GetTemporaryName().

◆ GetName() [3/7]

std::string clang::insights::GetName ( const DeclRefExpr &  declRefExpr)

◆ GetName() [4/7]

std::string clang::insights::GetName ( const NamedDecl &  nd,
const QualifiedName  qualifiedName 
)

◆ GetName() [5/7]

std::string clang::insights::GetName ( const QualType &  t,
const Unqualified  unqualified 
)

Definition at line 1176 of file InsightsHelpers.cpp.

References clang::insights::details::GetName().

◆ GetName() [6/7]

std::string clang::insights::GetName ( const TemplateParamObjectDecl &  decl)

◆ GetName() [7/7]

std::string clang::insights::GetName ( const VarDecl &  VD)

◆ GetNameAsFunctionPointer()

std::string clang::insights::GetNameAsFunctionPointer ( const QualType &  t)

◆ GetNamePlain()

static std::string clang::insights::GetNamePlain ( const NamedDecl &  decl)
static

Definition at line 87 of file InsightsHelpers.cpp.

References GetInsightsOptions().

Referenced by GetName(), and GetPlainName().

◆ GetNestedName()

std::string clang::insights::GetNestedName ( const NestedNameSpecifier *  nns,
const IgnoreNamespace  ignoreNamespace 
)

◆ GetNoExcept()

const std::string clang::insights::GetNoExcept ( const FunctionDecl &  decl)

◆ GetPlainName()

std::string clang::insights::GetPlainName ( const DeclRefExpr &  DRE)

◆ GetQualifiers()

static std::string clang::insights::GetQualifiers ( const VarDecl &  vd)
static

◆ GetRecordLayout()

static auto& clang::insights::GetRecordLayout ( const RecordDecl *  recordDecl)
static

Definition at line 3361 of file CodeGenerator.cpp.

References GetGlobalAST().

◆ GetSize()

uint64_t clang::insights::GetSize ( const ConstantArrayType *  arrayType)

◆ GetSM()

const SourceManager& clang::insights::GetSM ( const Decl &  decl)
inline

◆ GetSpaces()

auto clang::insights::GetSpaces ( std::string::size_type  offset)

Definition at line 3368 of file CodeGenerator.cpp.

◆ GetSpecialMemberName() [1/2]

std::string clang::insights::GetSpecialMemberName ( const ValueDecl *  vd)

◆ GetSpecialMemberName() [2/2]

static std::string clang::insights::GetSpecialMemberName ( const ValueDecl *  vd,
QualType  type 
)
static

◆ GetStorageClassAsString()

static std::string_view clang::insights::GetStorageClassAsString ( const StorageClass &  sc)
static

Definition at line 833 of file CodeGenerator.cpp.

Referenced by GetStorageClassAsStringWithSpace().

◆ GetStorageClassAsStringWithSpace()

static std::string clang::insights::GetStorageClassAsStringWithSpace ( const StorageClass &  sc)
static

◆ GetSubstTemplateTypeParmType()

static const SubstTemplateTypeParmType* clang::insights::GetSubstTemplateTypeParmType ( const Type *  t)
static

Definition at line 1000 of file InsightsHelpers.cpp.

Referenced by GetTemplateParameterPackArgumentName().

◆ GetTagDeclTypeName()

static std::string_view clang::insights::GetTagDeclTypeName ( const TagDecl &  decl)
static

Definition at line 107 of file CodeGenerator.cpp.

References kwClassSpace, kwStructSpace, and kwUnionSpace.

◆ GetTemplateParameterPackArgumentName()

static std::string clang::insights::GetTemplateParameterPackArgumentName ( std::string_view  name,
const Decl *  decl 
)
static

◆ GetTemporaryName()

std::string clang::insights::GetTemporaryName ( const Expr &  tmp)

◆ GetType()

QualType clang::insights::GetType ( QualType  t)

In Cfront mode we transform references to pointers.

Definition at line 1194 of file InsightsHelpers.cpp.

References GetGlobalAST(), and GetInsightsOptions().

Referenced by clang::insights::OutputFormatHelper::AppendParameterList(), and clang::insights::CodeGenerator::InsertFunctionNameWithReturnType().

◆ GetTypeConstraintAsString()

static std::string clang::insights::GetTypeConstraintAsString ( const TypeConstraint *  typeConstraint)
static

◆ GetTypeNameAsParameter()

std::string clang::insights::GetTypeNameAsParameter ( const QualType &  t,
std::string_view  varName,
const Unqualified  unqualified 
)

◆ GetUnqualifiedScopelessName() [1/2]

std::string clang::insights::GetUnqualifiedScopelessName ( const Type *  type)

Definition at line 1188 of file InsightsHelpers.cpp.

References GetUnqualifiedScopelessName().

◆ GetUnqualifiedScopelessName() [2/2]

static std::string clang::insights::GetUnqualifiedScopelessName ( const Type *  type,
const InsightsSuppressScope  supressScope 
)
static

◆ GetVarDeclFromDeclRefExpr()

static const VarDecl* clang::insights::GetVarDeclFromDeclRefExpr ( const DeclRefExpr &  declRefExpr)
static

Definition at line 312 of file InsightsHelpers.cpp.

Referenced by GetName(), and IsTrivialStaticClassVarDecl().

◆ HasCtor()

static bool clang::insights::HasCtor ( QualType  t)
static

◆ HasDtor()

static bool clang::insights::HasDtor ( QualType  t)
static

◆ HasOverload()

static bool clang::insights::HasOverload ( const FunctionDecl *  fd)
static

Definition at line 882 of file InsightsHelpers.cpp.

References GetGlobalCI().

Referenced by GetCfrontOverloadedFunctionName().

◆ HasTypePath()

template<typename QT , typename SUB_T >
static bool clang::insights::HasTypePath ( const QualType &  t)
static

Definition at line 1231 of file InsightsHelpers.cpp.

References GetDesugarType().

◆ HasTypeWithSubType()

template<typename QT , typename SUB_T , typename SUB_T2 = void>
static bool clang::insights::HasTypeWithSubType ( const QualType &  t)
static

Definition at line 1205 of file InsightsHelpers.cpp.

References GetDesugarType().

◆ InsertAfter()

static void clang::insights::InsertAfter ( std::string &  source,
const std::string_view &  find,
const std::string_view &  replace 
)
static

Definition at line 245 of file InsightsHelpers.cpp.

Referenced by GetTypeNameAsParameter().

◆ InsertBefore()

void clang::insights::InsertBefore ( std::string &  source,
const std::string_view &  find,
const std::string_view &  replace 
)

Definition at line 235 of file InsightsHelpers.cpp.

Referenced by GetTypeNameAsParameter().

◆ InsertVtblPtr()

static void clang::insights::InsertVtblPtr ( const CXXMethodDecl *  stmt,
const CXXRecordDecl *  cur,
StmtsContainer bodyStmts 
)
static

◆ is()

template<typename T >
clang::insights::is ( ) -> is< T >

◆ IsAnonymousStructOrUnion()

bool clang::insights::IsAnonymousStructOrUnion ( const CXXRecordDecl *  cxxRecordDecl)
inline

Check whether this is an anonymous struct or union.

There is a dedicated function isAnonymousStructOrUnion which at this point no longer returns true. Hence this method uses an empty record decl name as indication for an anonymous struct/union.

Definition at line 146 of file InsightsHelpers.h.

◆ IsConstQualifiedType()

static bool clang::insights::IsConstQualifiedType ( QualType  type)
static

Definition at line 2667 of file CodeGenerator.cpp.

◆ IsCopyOrMoveAssign()

static bool clang::insights::IsCopyOrMoveAssign ( const CXXMethodDecl *  stmt)
static

◆ IsCopyOrMoveCtor()

static bool clang::insights::IsCopyOrMoveCtor ( const CXXConstructorDecl *  ctor)
static

◆ IsEvaluatable()

bool clang::insights::IsEvaluatable ( const VarDecl &  varDecl)

Check whether a VarDecls initialization can be done a compile-time.

This method checks, whether a VarDecl is initialized by a constant expression.

Definition at line 1381 of file InsightsHelpers.cpp.

References GetEvaluatedValue().

Referenced by IsTrivialStaticClassVarDecl().

◆ IsPrimaryTemplatePackExpansionExpr()

static bool clang::insights::IsPrimaryTemplatePackExpansionExpr ( const ParenListExpr *  stmt)
static

Definition at line 1196 of file CodeGenerator.cpp.

◆ IsReferenceType() [1/2]

bool clang::insights::IsReferenceType ( const DeclRefExpr *  decl)
inline

Definition at line 49 of file InsightsHelpers.h.

References IsReferenceType().

◆ IsReferenceType() [2/2]

bool clang::insights::IsReferenceType ( const ValueDecl *  decl)
inline

◆ IsStaticStorageClass()

bool clang::insights::IsStaticStorageClass ( const CXXMethodDecl *  md)
inline

◆ IsStmtRequiringSemi()

template<typename... Args>
static bool clang::insights::IsStmtRequiringSemi ( const Stmt stmt)
static

◆ IsTrivialStaticClassVarDecl() [1/2]

static bool clang::insights::IsTrivialStaticClassVarDecl ( const DeclRefExpr &  declRefExpr)
static

Definition at line 1360 of file InsightsHelpers.cpp.

References GetVarDeclFromDeclRefExpr().

Referenced by GetName().

◆ IsTrivialStaticClassVarDecl() [2/2]

bool clang::insights::IsTrivialStaticClassVarDecl ( const VarDecl &  varDecl)

Definition at line 1387 of file InsightsHelpers.cpp.

References IsEvaluatable().

◆ MakeLineColumnName() [1/2]

static std::string clang::insights::MakeLineColumnName ( const Decl &  decl,
const std::string_view  prefix 
)
static

Definition at line 265 of file InsightsHelpers.cpp.

References GetSM(), and MakeLineColumnName().

◆ MakeLineColumnName() [2/2]

std::string clang::insights::MakeLineColumnName ( const SourceManager &  sm,
const SourceLocation &  loc,
const std::string_view &  prefix 
)

◆ NeedsNamespace()

static bool clang::insights::NeedsNamespace ( const Decl &  decl,
UseLexicalParent  useLexicalParent 
)
static

Definition at line 978 of file InsightsHelpers.cpp.

Referenced by GetName().

◆ Normalize() [1/7]

std::string clang::insights::Normalize ( const APValue &  arg)
inline

Definition at line 72 of file InsightsStrCat.h.

References Normalize().

◆ Normalize() [2/7]

static std::string clang::insights::Normalize ( const CharUnits &  arg)
inlinestatic

Definition at line 90 of file InsightsStrCat.h.

◆ Normalize() [3/7]

std::string clang::insights::Normalize ( const llvm::APFloat &  arg)
inline

Definition at line 54 of file InsightsStrCat.h.

◆ Normalize() [4/7]

uint64_t clang::insights::Normalize ( const llvm::APInt &  arg)
inline

Definition at line 42 of file InsightsStrCat.h.

Referenced by Normalize().

◆ Normalize() [5/7]

std::string clang::insights::Normalize ( const llvm::APSInt &  arg)
inline

Definition at line 48 of file InsightsStrCat.h.

References ToString().

◆ Normalize() [6/7]

std::string_view clang::insights::Normalize ( const StringRef &  arg)
inline

Definition at line 84 of file InsightsStrCat.h.

◆ Normalize() [7/7]

template<class T >
decltype(auto) clang::insights::Normalize ( const T &  arg)
inline

◆ overloaded()

template<class... Ts>
clang::insights::overloaded ( Ts...  ) -> overloaded< Ts... >

◆ ProcessFields()

static void clang::insights::ProcessFields ( CXXRecordDecl *  recordDecl,
const CXXRecordDecl *  rd 
)
static

◆ PushGlobalVariable()

static void clang::insights::PushGlobalVariable ( const Expr *  callExpr)
static

Definition at line 1112 of file CodeGenerator.cpp.

References globalVarCtors.

◆ PushGlobalVariableDtor()

static void clang::insights::PushGlobalVariableDtor ( const Expr *  callExpr)
static

Definition at line 1118 of file CodeGenerator.cpp.

References globalVarDtors.

◆ PushVtableEntry()

void clang::insights::PushVtableEntry ( const CXXRecordDecl *  record,
const CXXRecordDecl *  recordB,
VarDecl *  decl 
)

Definition at line 1106 of file CodeGenerator.cpp.

References gVtables.

Referenced by clang::insights::CfrontCodeGenerator::InsertArg().

◆ ReplaceAll()

void clang::insights::ReplaceAll ( std::string &  str,
std::string_view  from,
std::string_view  to 
)

◆ SetFunctionBody()

static void clang::insights::SetFunctionBody ( FunctionDecl *  fd,
StmtsContainer bodyStmts 
)
static

◆ StrCat()

std::string clang::insights::StrCat ( const auto &...  args)
inline

◆ STRONG_BOOL() [1/7]

clang::insights::STRONG_BOOL ( IgnoreNamespace  )

◆ STRONG_BOOL() [2/7]

clang::insights::STRONG_BOOL ( InsightsCanonicalTypes  )

◆ STRONG_BOOL() [3/7]

clang::insights::STRONG_BOOL ( InsightsSuppressScope  )

◆ STRONG_BOOL() [4/7]

clang::insights::STRONG_BOOL ( QualifiedName  )

◆ STRONG_BOOL() [5/7]

clang::insights::STRONG_BOOL ( Unqualified  )

◆ STRONG_BOOL() [6/7]

clang::insights::STRONG_BOOL ( UseLexicalParent  )

◆ STRONG_BOOL() [7/7]

clang::insights::STRONG_BOOL ( WithTemplateParameters  )

◆ ToDo() [1/6]

void clang::insights::ToDo ( const class Decl *  stmt,
class OutputFormatHelper outputFormatHelper,
std::source_location  loc = std::source_location::current() 
)

Helper function to generate TODO comments for an unsupported Decl.

◆ ToDo() [2/6]

void clang::insights::ToDo ( const class Stmt stmt,
class OutputFormatHelper outputFormatHelper,
std::source_location  loc = std::source_location::current() 
)

Helper function to generate TODO comments for an unsupported Stmt.

◆ ToDo() [3/6]

void clang::insights::ToDo ( const class TemplateArgument &  stmt,
class OutputFormatHelper outputFormatHelper,
std::source_location  loc 
)

Helper function to generate TODO comments for an unsupported TemplateArgument.

Definition at line 69 of file DPrint.cpp.

References StrCat(), and ToDo().

◆ ToDo() [4/6]

void clang::insights::ToDo ( const Decl *  stmt,
OutputFormatHelper outputFormatHelper,
std::source_location  loc 
)

Definition at line 52 of file DPrint.cpp.

References Dump(), Error(), and ToDo().

◆ ToDo() [5/6]

void clang::insights::ToDo ( const Stmt stmt,
OutputFormatHelper outputFormatHelper,
std::source_location  loc 
)

Definition at line 34 of file DPrint.cpp.

References Dump(), Error(), and ToDo().

◆ ToDo() [6/6]

static void clang::insights::ToDo ( std::string_view  name,
OutputFormatHelper outputFormatHelper,
std::source_location  loc 
)
static

◆ ToString()

std::string clang::insights::ToString ( const llvm::APSInt &  val)
inline

◆ TypeContainsSubType()

template<typename QT , typename SUB_T >
static bool clang::insights::TypeContainsSubType ( const QualType &  t)
static

Definition at line 203 of file InsightsHelpers.h.

References GetDesugarType().

◆ ValueOr()

template<typename T >
static T clang::insights::ValueOr ( bool  b,
val,
el 
)
static

◆ ValueOrDefault()

template<typename T >
static T clang::insights::ValueOrDefault ( bool  b,
v 
)
static

Variable Documentation

◆ CORO_FRAME_ACCESS

const std::string clang::insights::CORO_FRAME_ACCESS {StrCat(CORO_FRAME_NAME, "->"sv)}

◆ CORO_FRAME_ACCESS_THIS

const std::string clang::insights::CORO_FRAME_ACCESS_THIS {StrCat(CORO_FRAME_ACCESS, kwInternalThis)}

◆ CORO_FRAME_NAME

constexpr std::string_view clang::insights::CORO_FRAME_NAME {"__f"sv}
constexpr

◆ FINAL_SUSPEND_NAME

const std::string clang::insights::FINAL_SUSPEND_NAME {BuildInternalVarName("final_suspend"sv)}

◆ gGlobalInserts

constinit std::array<GlobalInsertMap, static_cast<size_t>GlobalInserts::MAX)> clang::insights::gGlobalInserts {}
static

◆ globalVarCtors

SmallVector<Expr*, 10> clang::insights::globalVarCtors {}
static

Definition at line 1089 of file CodeGenerator.cpp.

Referenced by EmitGlobalVariableCtors(), and PushGlobalVariable().

◆ globalVarDtors

SmallVector<Expr*, 10> clang::insights::globalVarDtors {}
static

Definition at line 1090 of file CodeGenerator.cpp.

Referenced by EmitGlobalVariableCtors(), and PushGlobalVariableDtor().

◆ gVtables

SmallVector<std::pair<std::pair<const CXXRecordDecl*, const CXXRecordDecl*>, VarDecl*>, 10> clang::insights::gVtables {}
static

◆ INITIAL_AWAIT_SUSPEND_CALLED_NAME

const std::string clang::insights::INITIAL_AWAIT_SUSPEND_CALLED_NAME {BuildInternalVarName("initial_await_suspend_called"sv)}

◆ Isa

template<typename T >
std::function clang::insights::Isa
Initial value:
= [](QualType t) -> MyOptional<QualType> {
if(isa<T>(t.getTypePtrOrNull())) {
return t;
}
return {};
}

Definition at line 67 of file CodeGenerator.cpp.

◆ mThisPointerOffset

llvm::DenseMap<std::pair<const CXXRecordDecl*, const CXXRecordDecl*>, int> clang::insights::mThisPointerOffset {}
static

Store the this pointer offset from derived to base class.

Definition at line 30 of file CfrontCodeGenerator.cpp.

Referenced by clang::insights::CfrontCodeGenerator::FormatCast(), and clang::insights::CfrontCodeGenerator::InsertArg().

◆ RESUME_LABEL_PREFIX

const std::string clang::insights::RESUME_LABEL_PREFIX {BuildInternalVarName("resume"sv)}

Definition at line 31 of file CoroutinesCodeGenerator.cpp.

◆ SUSPEND_INDEX_NAME

const std::string clang::insights::SUSPEND_INDEX_NAME {BuildInternalVarName("suspend_index"sv)}