clang 20.0.0git
|
#include "clang/AST/ASTContext.h"
#include "clang/AST/Attr.h"
#include "clang/AST/Decl.h"
#include "clang/AST/DeclCXX.h"
#include "clang/AST/DeclObjC.h"
#include "clang/AST/DeclOpenMP.h"
#include "clang/AST/DeclTemplate.h"
#include "clang/AST/Expr.h"
#include "clang/AST/ExprCXX.h"
#include "clang/AST/ExprConcepts.h"
#include "clang/AST/ExprObjC.h"
#include "clang/AST/Mangle.h"
#include "clang/AST/TypeLoc.h"
#include "clang/Basic/ABI.h"
#include "clang/Basic/Module.h"
#include "clang/Basic/TargetInfo.h"
#include "clang/Basic/Thunk.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/TargetParser/RISCVTargetParser.h"
#include <optional>
#include "clang/AST/TypeNodes.inc"
#include "clang/AST/BuiltinTypes.def"
#include "clang/Basic/OpenCLImageTypes.def"
#include "clang/Basic/OpenCLExtensionTypes.def"
#include "clang/Basic/AArch64SVEACLETypes.def"
#include "clang/Basic/PPCTypes.def"
#include "clang/Basic/RISCVVTypes.def"
#include "clang/Basic/WebAssemblyReferenceTypes.def"
#include "clang/Basic/AMDGPUTypes.def"
#include "clang/Basic/HLSLIntangibleTypes.def"
#include "clang/Basic/TransformTypeTraits.def"
#include "clang/AST/StmtNodes.inc"
Go to the source code of this file.
Classes | |
struct | CXXNameMangler::TemplateArgManglingInfo |
struct | CXXNameMangler::TemplateArgManglingInfo::Info |
Information about how to mangle a template argument. More... | |
Macros | |
#define | ABSTRACT_TYPE(CLASS, PARENT) |
#define | NON_CANONICAL_TYPE(CLASS, PARENT) |
#define | TYPE(CLASS, PARENT) void mangleType(const CLASS##Type *T); |
#define | ABSTRACT_TYPE(CLASS, PARENT) |
#define | NON_CANONICAL_TYPE(CLASS, PARENT) |
#define | TYPE(CLASS, PARENT) |
#define | BUILTIN_TYPE(Id, SingletonId) |
#define | PLACEHOLDER_TYPE(Id, SingletonId) case BuiltinType::Id: |
#define | IMAGE_TYPE(ImgType, Id, SingletonId, Access, Suffix) |
#define | EXT_OPAQUE_TYPE(ExtType, Id, Ext) |
#define | SVE_VECTOR_TYPE(Name, MangledName, Id, SingletonId) |
#define | SVE_PREDICATE_TYPE(Name, MangledName, Id, SingletonId) |
#define | SVE_OPAQUE_TYPE(Name, MangledName, Id, SingletonId) |
#define | AARCH64_VECTOR_TYPE(Name, MangledName, Id, SingletonId) |
#define | PPC_VECTOR_TYPE(Name, Id, Size) |
#define | RVV_TYPE(Name, Id, SingletonId) |
#define | WASM_REF_TYPE(InternalName, MangledName, Id, SingletonId, AS) |
#define | AMDGPU_TYPE(Name, Id, SingletonId, Width, Align) |
#define | HLSL_INTANGIBLE_TYPE(Name, Id, SingletonId) |
#define | TRANSFORM_TYPE_TRAIT_DEF(Enum, Trait) |
#define | ABSTRACT_STMT(Type) |
#define | EXPR(Type, Base) |
#define | STMT(Type, Base) case Expr::Type##Class: |
Enumerations | |
enum class | AAPCSBitmaskSME : unsigned { ArmStreamingBit = 1 << 0 , ArmStreamingCompatibleBit = 1 << 1 , ArmAgnosticSMEZAStateBit = 1 << 2 , ZA_Shift = 3 , ZT0_Shift = 6 , NoState = 0b000 , ArmIn = 0b001 , ArmOut = 0b010 , ArmInOut = 0b011 , ArmPreserves = 0b100 } |
Functions | |
static const GlobalDecl | isTemplate (GlobalDecl GD, const TemplateArgumentList *&TemplateArgs) |
static TemplateName | asTemplateName (GlobalDecl GD) |
static GlobalDecl | getParentOfLocalEntity (const DeclContext *DC) |
static bool | isTypeSubstitutable (Qualifiers Quals, const Type *Ty, ASTContext &Ctx) |
static AAPCSBitmaskSME | encodeAAPCSZAState (unsigned SMEAttrs) |
static StringRef | mangleAArch64VectorBase (const BuiltinType *EltType) |
static bool | isParenthesizedADLCallee (const CallExpr *call) |
Look at the callee of the given call expression and determine if it's a parenthesized id-expression which would have triggered ADL otherwise. | |
static bool | isZeroInitialized (QualType T, const APValue &V) |
Determine whether a given value is equivalent to zero-initialization for the purpose of discarding a trailing portion of a 'tl' mangling. | |
static QualType | getLValueType (ASTContext &Ctx, const APValue &LV) |
static IdentifierInfo * | getUnionInitName (SourceLocation UnionLoc, DiagnosticsEngine &Diags, const FieldDecl *FD) |
static bool | hasMangledSubstitutionQualifiers (QualType T) |
Determine whether the given type has any qualifiers that are relevant for substitutions. | |
static void | mangleOverrideDiscrimination (CXXNameMangler &Mangler, ASTContext &Context, const ThunkInfo &Thunk) |
Mangles the pointer authentication override attribute for classes that have explicit overrides for the vtable authentication schema. | |
#define AARCH64_VECTOR_TYPE | ( | Name, | |
MangledName, | |||
Id, | |||
SingletonId | |||
) |
#define ABSTRACT_STMT | ( | Type | ) |
#define ABSTRACT_TYPE | ( | CLASS, | |
PARENT | |||
) |
Definition at line 567 of file ItaniumMangle.cpp.
#define ABSTRACT_TYPE | ( | CLASS, | |
PARENT | |||
) |
Definition at line 567 of file ItaniumMangle.cpp.
#define AMDGPU_TYPE | ( | Name, | |
Id, | |||
SingletonId, | |||
Width, | |||
Align | |||
) |
#define BUILTIN_TYPE | ( | Id, | |
SingletonId | |||
) |
#define EXT_OPAQUE_TYPE | ( | ExtType, | |
Id, | |||
Ext | |||
) |
#define HLSL_INTANGIBLE_TYPE | ( | Name, | |
Id, | |||
SingletonId | |||
) |
#define IMAGE_TYPE | ( | ImgType, | |
Id, | |||
SingletonId, | |||
Access, | |||
Suffix | |||
) |
#define NON_CANONICAL_TYPE | ( | CLASS, | |
PARENT | |||
) |
Definition at line 568 of file ItaniumMangle.cpp.
#define NON_CANONICAL_TYPE | ( | CLASS, | |
PARENT | |||
) |
Definition at line 568 of file ItaniumMangle.cpp.
#define PLACEHOLDER_TYPE | ( | Id, | |
SingletonId | |||
) | case BuiltinType::Id: |
#define PPC_VECTOR_TYPE | ( | Name, | |
Id, | |||
Size | |||
) |
#define RVV_TYPE | ( | Name, | |
Id, | |||
SingletonId | |||
) |
#define STMT | ( | Type, | |
Base | |||
) | case Expr::Type##Class: |
#define SVE_OPAQUE_TYPE | ( | Name, | |
MangledName, | |||
Id, | |||
SingletonId | |||
) |
#define SVE_PREDICATE_TYPE | ( | Name, | |
MangledName, | |||
Id, | |||
SingletonId | |||
) |
#define SVE_VECTOR_TYPE | ( | Name, | |
MangledName, | |||
Id, | |||
SingletonId | |||
) |
#define TRANSFORM_TYPE_TRAIT_DEF | ( | Enum, | |
Trait | |||
) |
#define TYPE | ( | CLASS, | |
PARENT | |||
) | void mangleType(const CLASS##Type *T); |
Definition at line 569 of file ItaniumMangle.cpp.
#define TYPE | ( | CLASS, | |
PARENT | |||
) |
Definition at line 569 of file ItaniumMangle.cpp.
#define WASM_REF_TYPE | ( | InternalName, | |
MangledName, | |||
Id, | |||
SingletonId, | |||
AS | |||
) |
|
strong |
Enumerator | |
---|---|
ArmStreamingBit | |
ArmStreamingCompatibleBit | |
ArmAgnosticSMEZAStateBit | |
ZA_Shift | |
ZT0_Shift | |
NoState | |
ArmIn | |
ArmOut | |
ArmInOut | |
ArmPreserves |
Definition at line 3536 of file ItaniumMangle.cpp.
|
static |
Definition at line 1008 of file ItaniumMangle.cpp.
References clang::GlobalDecl::getDecl().
|
static |
Definition at line 3550 of file ItaniumMangle.cpp.
References clang::FunctionType::ARM_In, clang::FunctionType::ARM_InOut, clang::FunctionType::ARM_None, clang::FunctionType::ARM_Out, clang::FunctionType::ARM_Preserves, ArmIn, ArmInOut, ArmOut, ArmPreserves, and NoState.
|
static |
Definition at line 6430 of file ItaniumMangle.cpp.
References E, clang::ASTContext::getAsArrayType(), clang::APValue::getLValueBase(), clang::APValue::getLValuePath(), clang::ASTContext::getRecordType(), clang::APValue::LValueBase::getType(), clang::ValueDecl::getType(), and clang::T.
|
static |
Definition at line 1854 of file ItaniumMangle.cpp.
References clang::Ctor_Complete, and clang::Dtor_Complete.
|
static |
Definition at line 6445 of file ItaniumMangle.cpp.
References clang::DiagnosticsEngine::Error, clang::RecordDecl::fields(), clang::Type::getAsCXXRecordDecl(), clang::DiagnosticsEngine::getCustomDiagID(), clang::NamedDecl::getIdentifier(), clang::ValueDecl::getType(), getUnionInitName(), clang::FieldDecl::isBitField(), and clang::DiagnosticsEngine::Report().
Referenced by getUnionInitName().
Determine whether the given type has any qualifiers that are relevant for substitutions.
Definition at line 6926 of file ItaniumMangle.cpp.
References clang::Qualifiers::getCVRQualifiers(), clang::Qualifiers::hasAddressSpace(), clang::Qualifiers::hasUnaligned(), and clang::T.
Look at the callee of the given call expression and determine if it's a parenthesized id-expression which would have triggered ADL otherwise.
Definition at line 4676 of file ItaniumMangle.cpp.
References clang::OverloadExpr::decls_begin(), clang::CallExpr::getCallee(), clang::OverloadExpr::getNumDecls(), clang::OverloadExpr::getQualifier(), clang::Expr::IgnoreParens(), and clang::UnresolvedLookupExpr::requiresADL().
|
static |
Definition at line 981 of file ItaniumMangle.cpp.
References clang::GlobalDecl::getDecl(), clang::FunctionDecl::getPrimaryTemplate(), clang::FunctionDecl::getTemplateSpecializationArgs(), and clang::GlobalDecl::getWithDecl().
Referenced by clang::Sema::isAcceptableTagRedeclaration().
|
static |
Definition at line 2919 of file ItaniumMangle.cpp.
References clang::Type::getAs(), clang::ASTContext::getLangOpts(), clang::Type::isBuiltinType(), clang::Type::isOpenCLSpecificType(), clang::Type::isSpecificBuiltinType(), and clang::Type::isSVESizelessBuiltinType().
Determine whether a given value is equivalent to zero-initialization for the purpose of discarding a trailing portion of a 'tl' mangling.
Note that this is not in general equivalent to determining whether the value has an all-zeroes bit pattern.
Definition at line 6345 of file ItaniumMangle.cpp.
References clang::APValue::AddrLabelDiff, clang::APValue::Array, clang::CXXRecordDecl::bases(), clang::Type::castAs(), clang::APValue::ComplexFloat, clang::APValue::ComplexInt, clang::declaresSameEntity(), clang::RecordDecl::fields(), clang::APValue::FixedPoint, clang::APValue::Float, clang::Type::getArrayElementTypeNoTypeQual(), clang::Type::getAsCXXRecordDecl(), clang::VectorType::getElementType(), clang::ValueDecl::getType(), clang::APValue::Indeterminate, clang::APValue::Int, isZeroInitialized(), clang::APValue::LValue, clang::APValue::MemberPointer, clang::APValue::None, clang::APValue::Struct, clang::T, clang::APValue::Union, V, and clang::APValue::Vector.
Referenced by isZeroInitialized().
|
static |
Definition at line 3945 of file ItaniumMangle.cpp.
References clang::BuiltinType::getKind().
|
static |
Mangles the pointer authentication override attribute for classes that have explicit overrides for the vtable authentication schema.
The override is mangled as a parameterized vendor extension as follows
<type> ::= U "__vtptrauth" I <key> <addressDiscriminated> <extraDiscriminator> E
The extra discriminator encodes the explicit value derived from the override schema, e.g. if the override has specified type based discrimination the encoded value will be the discriminator derived from the type name.
Definition at line 7242 of file ItaniumMangle.cpp.
References clang::ASTContext::baseForVTableAuthentication(), clang::Decl::getAttr(), clang::ASTContext::getLangOpts(), clang::Type::getPointeeCXXRecordDecl(), clang::ASTContext::getPointerAuthVTablePointerDiscriminator(), and clang::ThunkInfo::ThisType.