clang  3.8.0
Macros | Functions
ItaniumMangle.cpp File Reference
#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/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/AST/StmtNodes.inc"
Include dependency graph for ItaniumMangle.cpp:

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 ABSTRACT_STMT(Type)
 
#define EXPR(Type, Base)
 
#define STMT(Type, Base)   case Expr::Type##Class:
 

Functions

static const DeclContextIgnoreLinkageSpecDecls (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 TemplateDeclisTemplate (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])
 

Macro Definition Documentation

#define ABSTRACT_STMT (   Type)
#define ABSTRACT_TYPE (   CLASS,
  PARENT 
)

Definition at line 373 of file ItaniumMangle.cpp.

#define ABSTRACT_TYPE (   CLASS,
  PARENT 
)

Definition at line 373 of file ItaniumMangle.cpp.

#define BUILTIN_TYPE (   Id,
  SingletonId 
)
#define EXPR (   Type,
  Base 
)
#define MANGLE_CHECKER   0

Definition at line 35 of file ItaniumMangle.cpp.

#define NON_CANONICAL_TYPE (   CLASS,
  PARENT 
)

Definition at line 374 of file ItaniumMangle.cpp.

#define NON_CANONICAL_TYPE (   CLASS,
  PARENT 
)
Value:
case Type::CLASS: \
llvm_unreachable("can't mangle non-canonical type " #CLASS "Type"); \
return(x >> y)|(x<< (32-y))

Definition at line 374 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 375 of file ItaniumMangle.cpp.

#define TYPE (   CLASS,
  PARENT 
)
Value:
case Type::CLASS: \
mangleType(static_cast<const CLASS##Type*>(ty)); \
break;

Definition at line 375 of file ItaniumMangle.cpp.

Function Documentation

static bool hasMangledSubstitutionQualifiers ( QualType  T)
static

Determine whether the given type has any qualifiers that are relevant for substitutions.

Definition at line 3829 of file ItaniumMangle.cpp.

References clang::Qualifiers::getCVRQualifiers(), clang::QualType::getQualifiers(), and clang::Qualifiers::hasAddressSpace().

static const DeclContext* IgnoreLinkageSpecDecls ( const DeclContext DC)
static

Definition at line 530 of file ItaniumMangle.cpp.

Referenced by isStd().

static bool isCharSpecialization ( QualType  T,
const char *  Name 
)
static
static bool isCharType ( QualType  T)
static
static bool isParenthesizedADLCallee ( const CallExpr call)
static

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 2749 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 bool isStd ( const NamespaceDecl NS)
static

Return whether a given namespace is the 'std' namespace.

Definition at line 539 of file ItaniumMangle.cpp.

References clang::NamedDecl::getIdentifier(), clang::NamespaceDecl::getOriginalNamespace(), IgnoreLinkageSpecDecls(), and clang::IdentifierInfo::isStr().

Referenced by isStdNamespace().

static bool isStdNamespace ( const DeclContext DC)
static

Definition at line 550 of file ItaniumMangle.cpp.

References clang::DeclContext::isNamespace(), and isStd().

Referenced by isCharSpecialization().

template<std::size_t StrLen>
static bool isStreamCharSpecialization ( const ClassTemplateSpecializationDecl SD,
const char(&)  Str[StrLen] 
)
static
static const TemplateDecl* isTemplate ( const NamedDecl ND,
const TemplateArgumentList *&  TemplateArgs 
)
static
static bool isTypeSubstitutable ( Qualifiers  Quals,
const Type Ty 
)
static
static StringRef mangleAArch64VectorBase ( const BuiltinType EltType)
static

Definition at line 2390 of file ItaniumMangle.cpp.

References clang::BuiltinType::getKind().