clang
13.0.0git
|
#include "clang/AST/Mangle.h"
#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/ExprConcepts.h"
#include "clang/AST/ExprCXX.h"
#include "clang/AST/ExprObjC.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 "llvm/ADT/StringExtras.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/raw_ostream.h"
#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/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 | PPC_VECTOR_TYPE(Name, Id, Size) |
#define | RVV_TYPE(Name, Id, SingletonId) |
#define | ABSTRACT_STMT(Type) |
#define | EXPR(Type, Base) |
#define | STMT(Type, Base) case Expr::Type##Class: |
Functions | |
static bool | isInternalLinkageDecl (const NamedDecl *ND) |
static const DeclContext * | IgnoreLinkageSpecDecls (const DeclContext *DC) |
static bool | isStd (const NamespaceDecl *NS) |
Return whether a given namespace is the 'std' namespace. More... | |
static bool | isStdNamespace (const DeclContext *DC) |
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. More... | |
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. More... | |
static QualType | getLValueType (ASTContext &Ctx, const APValue &LV) |
static bool | hasMangledSubstitutionQualifiers (QualType T) |
Determine whether the given type has any qualifiers that are relevant for substitutions. More... | |
static bool | isCharType (QualType T) |
static bool | isCharSpecialization (QualType T, const char *Name) |
Returns whether a given type is a template specialization of a given name with a single argument of type char. More... | |
template<std::size_t StrLen> | |
static bool | isStreamCharSpecialization (const ClassTemplateSpecializationDecl *SD, const char(&Str)[StrLen]) |
#define ABSTRACT_STMT | ( | Type | ) |
#define ABSTRACT_TYPE | ( | CLASS, | |
PARENT | |||
) |
Definition at line 557 of file ItaniumMangle.cpp.
#define ABSTRACT_TYPE | ( | CLASS, | |
PARENT | |||
) |
Definition at line 557 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 558 of file ItaniumMangle.cpp.
#define NON_CANONICAL_TYPE | ( | CLASS, | |
PARENT | |||
) |
Definition at line 558 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_PREDICATE_TYPE | ( | InternalName, | |
MangledName, | |||
Id, | |||
SingletonId, | |||
NumEls | |||
) |
#define SVE_VECTOR_TYPE | ( | InternalName, | |
MangledName, | |||
Id, | |||
SingletonId, | |||
NumEls, | |||
ElBits, | |||
IsSigned, | |||
IsFP, | |||
IsBF | |||
) |
#define TYPE | ( | CLASS, | |
PARENT | |||
) | void mangleType(const CLASS##Type *T); |
Definition at line 559 of file ItaniumMangle.cpp.
#define TYPE | ( | CLASS, | |
PARENT | |||
) |
Definition at line 559 of file ItaniumMangle.cpp.
|
static |
Definition at line 909 of file ItaniumMangle.cpp.
References clang::GlobalDecl::getDecl().
|
static |
Definition at line 5363 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 1680 of file ItaniumMangle.cpp.
References clang::Ctor_Complete, and clang::Dtor_Complete.
Determine whether the given type has any qualifiers that are relevant for substitutions.
Definition at line 5794 of file ItaniumMangle.cpp.
References clang::Qualifiers::getCVRQualifiers(), clang::QualType::getQualifiers(), clang::Qualifiers::hasAddressSpace(), and clang::Qualifiers::hasUnaligned().
|
static |
Definition at line 854 of file ItaniumMangle.cpp.
Referenced by isStd().
Returns whether a given type is a template specialization of a given name with a single argument of type char.
Definition at line 5841 of file ItaniumMangle.cpp.
Referenced by isStreamCharSpecialization().
Definition at line 5831 of file ItaniumMangle.cpp.
References clang::QualType::isNull(), and clang::Type::isSpecificBuiltinType().
Referenced by isStreamCharSpecialization().
Definition at line 622 of file ItaniumMangle.cpp.
References clang::NamedDecl::getFormalLinkage(), clang::InternalLinkage, clang::NamedDecl::isExternallyVisible(), and clang::Decl::isInAnonymousNamespace().
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 3929 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 |
Return whether a given namespace is the 'std' namespace.
Definition at line 863 of file ItaniumMangle.cpp.
References clang::NamedDecl::getIdentifier(), clang::NamespaceDecl::getOriginalNamespace(), IgnoreLinkageSpecDecls(), and clang::IdentifierInfo::isStr().
Referenced by isStdNamespace().
|
static |
Definition at line 874 of file ItaniumMangle.cpp.
References clang::DeclContext::isNamespace(), and isStd().
|
static |
Definition at line 5868 of file ItaniumMangle.cpp.
References clang::NamedDecl::getIdentifier(), clang::ClassTemplateSpecializationDecl::getTemplateArgs(), isCharSpecialization(), isCharType(), clang::IdentifierInfo::isStr(), and clang::TemplateArgumentList::size().
|
static |
Definition at line 882 of file ItaniumMangle.cpp.
References clang::GlobalDecl::getDecl(), clang::FunctionDecl::getPrimaryTemplate(), clang::FunctionDecl::getTemplateSpecializationArgs(), and clang::GlobalDecl::getWithDecl().
|
static |
Definition at line 2598 of file ItaniumMangle.cpp.
References clang::Type::getAs(), clang::ASTContext::getLangOpts(), clang::Type::isBuiltinType(), clang::Type::isOpenCLSpecificType(), clang::Type::isSpecificBuiltinType(), and clang::LangOptions::Ver6.
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 5278 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, clang::APValue::LValue, clang::APValue::MemberPointer, clang::APValue::None, clang::APValue::Struct, clang::APValue::Union, V, and clang::APValue::Vector.
|
static |
Definition at line 3354 of file ItaniumMangle.cpp.
References clang::BuiltinType::getKind().