clang  3.7.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)
 
static bool hasMangledSubstitutionQualifiers (QualType T)
 
static bool isCharType (QualType T)
 
static bool isCharSpecialization (QualType T, const char *Name)
 
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 375 of file ItaniumMangle.cpp.

#define ABSTRACT_TYPE (   CLASS,
  PARENT 
)

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

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

Definition at line 377 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 3672 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 531 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 2615 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 540 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 551 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 2264 of file ItaniumMangle.cpp.

References clang::BuiltinType::getKind().