clang
3.9.0
|
#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/ExprCXX.h"
#include "clang/AST/ExprObjC.h"
#include "clang/AST/TypeLoc.h"
#include "clang/Basic/ABI.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.def"
#include "clang/AST/BuiltinTypes.def"
#include "clang/Basic/OpenCLImageTypes.def"
#include "clang/AST/StmtNodes.inc"
Go to the source code of this file.
Macros | |
#define | MANGLE_CHECKER 0 |
#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 | ABSTRACT_STMT(Type) |
#define | EXPR(Type, Base) |
#define | STMT(Type, Base) case Expr::Type##Class: |
Functions | |
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 TemplateDecl * | isTemplate (const NamedDecl *ND, const TemplateArgumentList *&TemplateArgs) |
static bool | isTypeSubstitutable (Qualifiers Quals, const Type *Ty) |
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 | 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 519 of file ItaniumMangle.cpp.
#define ABSTRACT_TYPE | ( | CLASS, | |
PARENT | |||
) |
Definition at line 519 of file ItaniumMangle.cpp.
#define BUILTIN_TYPE | ( | Id, | |
SingletonId | |||
) |
#define EXPR | ( | Type, | |
Base | |||
) |
#define IMAGE_TYPE | ( | ImgType, | |
Id, | |||
SingletonId, | |||
Access, | |||
Suffix | |||
) |
#define MANGLE_CHECKER 0 |
Definition at line 36 of file ItaniumMangle.cpp.
#define NON_CANONICAL_TYPE | ( | CLASS, | |
PARENT | |||
) |
Definition at line 520 of file ItaniumMangle.cpp.
#define NON_CANONICAL_TYPE | ( | CLASS, | |
PARENT | |||
) |
Definition at line 520 of file ItaniumMangle.cpp.
#define PLACEHOLDER_TYPE | ( | Id, | |
SingletonId | |||
) | case BuiltinType::Id: |
#define STMT | ( | Type, | |
Base | |||
) | case Expr::Type##Class: |
#define TYPE | ( | CLASS, | |
PARENT | |||
) | void mangleType(const CLASS##Type *T); |
Definition at line 521 of file ItaniumMangle.cpp.
#define TYPE | ( | CLASS, | |
PARENT | |||
) |
Definition at line 521 of file ItaniumMangle.cpp.
Determine whether the given type has any qualifiers that are relevant for substitutions.
Definition at line 4215 of file ItaniumMangle.cpp.
References clang::Qualifiers::getCVRQualifiers(), clang::QualType::getQualifiers(), and clang::Qualifiers::hasAddressSpace().
|
static |
Definition at line 746 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 4262 of file ItaniumMangle.cpp.
References clang::Type::getAs(), clang::RecordType::getDecl(), clang::NamedDecl::getIdentifier(), clang::IdentifierInfo::getName(), clang::ClassTemplateSpecializationDecl::getTemplateArgs(), isCharType(), clang::QualType::isNull(), isStdNamespace(), clang::Name, and clang::TemplateArgumentList::size().
Referenced by isStreamCharSpecialization().
Definition at line 4252 of file ItaniumMangle.cpp.
References clang::QualType::isNull(), and clang::Type::isSpecificBuiltinType().
Referenced by isCharSpecialization(), and isStreamCharSpecialization().
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 3129 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 755 of file ItaniumMangle.cpp.
References clang::NamedDecl::getIdentifier(), clang::NamespaceDecl::getOriginalNamespace(), IgnoreLinkageSpecDecls(), and clang::IdentifierInfo::isStr().
Referenced by isStdNamespace().
|
static |
Definition at line 766 of file ItaniumMangle.cpp.
References clang::DeclContext::isNamespace(), and isStd().
Referenced by isCharSpecialization().
|
static |
Definition at line 4289 of file ItaniumMangle.cpp.
References clang::NamedDecl::getIdentifier(), clang::ClassTemplateSpecializationDecl::getTemplateArgs(), isCharSpecialization(), isCharType(), clang::IdentifierInfo::isStr(), and clang::TemplateArgumentList::size().
|
static |
Definition at line 774 of file ItaniumMangle.cpp.
References clang::FunctionDecl::getPrimaryTemplate(), and clang::FunctionDecl::getTemplateSpecializationArgs().
Referenced by clang::Sema::isAcceptableTagRedeclaration().
|
static |
Definition at line 2180 of file ItaniumMangle.cpp.
References clang::Type::isBuiltinType(), clang::Type::isOpenCLSpecificType(), and clang::Type::isSpecificBuiltinType().
|
static |
Definition at line 2770 of file ItaniumMangle.cpp.
References clang::BuiltinType::getKind().