clang 17.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/SourceManager.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 <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/TransformTypeTraits.def"
#include "clang/AST/StmtNodes.inc"
Go to the source code of this file.
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(InternalName, MangledName, Id, SingletonId, NumEls, ElBits, IsSigned, IsFP, IsBF) |
#define | SVE_PREDICATE_TYPE(InternalName, MangledName, Id, SingletonId, NumEls) |
#define | SVE_OPAQUE_TYPE(InternalName, 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 | TRANSFORM_TYPE_TRAIT_DEF(Enum, Trait) |
#define | ABSTRACT_STMT(Type) |
#define | EXPR(Type, Base) |
#define | STMT(Type, Base) case Expr::Type##Class: |
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 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. | |
#define ABSTRACT_STMT | ( | Type | ) |
#define ABSTRACT_TYPE | ( | CLASS, | |
PARENT | |||
) |
Definition at line 548 of file ItaniumMangle.cpp.
#define ABSTRACT_TYPE | ( | CLASS, | |
PARENT | |||
) |
Definition at line 548 of file ItaniumMangle.cpp.
#define BUILTIN_TYPE | ( | Id, | |
SingletonId | |||
) |
#define EXT_OPAQUE_TYPE | ( | ExtType, | |
Id, | |||
Ext | |||
) |
#define IMAGE_TYPE | ( | ImgType, | |
Id, | |||
SingletonId, | |||
Access, | |||
Suffix | |||
) |
#define NON_CANONICAL_TYPE | ( | CLASS, | |
PARENT | |||
) |
Definition at line 549 of file ItaniumMangle.cpp.
#define NON_CANONICAL_TYPE | ( | CLASS, | |
PARENT | |||
) |
Definition at line 549 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 | ( | InternalName, | |
MangledName, | |||
Id, | |||
SingletonId | |||
) |
#define SVE_PREDICATE_TYPE | ( | InternalName, | |
MangledName, | |||
Id, | |||
SingletonId, | |||
NumEls | |||
) |
#define SVE_VECTOR_TYPE | ( | InternalName, | |
MangledName, | |||
Id, | |||
SingletonId, | |||
NumEls, | |||
ElBits, | |||
IsSigned, | |||
IsFP, | |||
IsBF | |||
) |
#define TRANSFORM_TYPE_TRAIT_DEF | ( | Enum, | |
Trait | |||
) |
#define TYPE | ( | CLASS, | |
PARENT | |||
) | void mangleType(const CLASS##Type *T); |
Definition at line 550 of file ItaniumMangle.cpp.
#define TYPE | ( | CLASS, | |
PARENT | |||
) |
Definition at line 550 of file ItaniumMangle.cpp.
#define WASM_REF_TYPE | ( | InternalName, | |
MangledName, | |||
Id, | |||
SingletonId, | |||
AS | |||
) |
|
static |
Definition at line 958 of file ItaniumMangle.cpp.
References clang::GlobalDecl::getDecl().
|
static |
Definition at line 5667 of file ItaniumMangle.cpp.
References clang::ASTContext::getAsArrayType(), clang::APValue::getLValueBase(), clang::APValue::getLValuePath(), clang::ASTContext::getRecordType(), clang::APValue::LValueBase::getType(), and clang::ValueDecl::getType().
|
static |
Definition at line 1769 of file ItaniumMangle.cpp.
References clang::Ctor_Complete, and clang::Dtor_Complete.
|
static |
Definition at line 5682 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 6151 of file ItaniumMangle.cpp.
References clang::Qualifiers::getCVRQualifiers(), clang::QualType::getQualifiers(), clang::Qualifiers::hasAddressSpace(), and clang::Qualifiers::hasUnaligned().
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 4216 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 931 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 2779 of file ItaniumMangle.cpp.
References clang::Type::getAs(), clang::ASTContext::getLangOpts(), clang::Type::isBuiltinType(), clang::Type::isOpenCLSpecificType(), and clang::Type::isSpecificBuiltinType().
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 5582 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::APValue::Union, V, and clang::APValue::Vector.
Referenced by isZeroInitialized().
|
static |
Definition at line 3641 of file ItaniumMangle.cpp.
References clang::BuiltinType::getKind().