|
clang
5.0.0
|
#include "CGDebugInfo.h"#include "CGBlocks.h"#include "CGCXXABI.h"#include "CGObjCRuntime.h"#include "CGRecordLayout.h"#include "CodeGenFunction.h"#include "CodeGenModule.h"#include "clang/AST/ASTContext.h"#include "clang/AST/DeclFriend.h"#include "clang/AST/DeclObjC.h"#include "clang/AST/DeclTemplate.h"#include "clang/AST/Expr.h"#include "clang/AST/RecordLayout.h"#include "clang/Basic/FileManager.h"#include "clang/Basic/SourceManager.h"#include "clang/Basic/Version.h"#include "clang/Frontend/CodeGenOptions.h"#include "clang/Lex/HeaderSearchOptions.h"#include "clang/Lex/ModuleMap.h"#include "clang/Lex/PreprocessorOptions.h"#include "llvm/ADT/DenseSet.h"#include "llvm/ADT/SmallVector.h"#include "llvm/ADT/StringExtras.h"#include "llvm/IR/Constants.h"#include "llvm/IR/DataLayout.h"#include "llvm/IR/DerivedTypes.h"#include "llvm/IR/Instructions.h"#include "llvm/IR/Intrinsics.h"#include "llvm/IR/Module.h"#include "llvm/Support/FileSystem.h"#include "llvm/Support/MD5.h"#include "llvm/Support/Path.h"#include "clang/AST/BuiltinTypes.def"#include "clang/Basic/OpenCLImageTypes.def"#include "clang/AST/TypeNodes.def"Go to the source code of this file.
Macros | |
| #define | BUILTIN_TYPE(Id, SingletonId) |
| #define | PLACEHOLDER_TYPE(Id, SingletonId) case BuiltinType::Id: |
| #define | IMAGE_TYPE(ImgType, Id, SingletonId, Access, Suffix) |
| #define | TYPE(Class, Base) |
| #define | ABSTRACT_TYPE(Class, Base) |
| #define | NON_CANONICAL_TYPE(Class, Base) |
| #define | DEPENDENT_TYPE(Class, Base) case Type::Class: |
Functions | |
| static uint32_t | getTypeAlignIfRequired (const Type *Ty, const ASTContext &Ctx) |
| static uint32_t | getTypeAlignIfRequired (QualType Ty, const ASTContext &Ctx) |
| static uint32_t | getDeclAlignIfRequired (const Decl *D, const ASTContext &Ctx) |
| static bool | hasCXXMangling (const TagDecl *TD, llvm::DICompileUnit *TheCU) |
| static SmallString< 256 > | getUniqueTagTypeName (const TagType *Ty, CodeGenModule &CGM, llvm::DICompileUnit *TheCU) |
| In C++ mode, types have linkage, so we can rely on the ODR and on their mangled names, if they're external. More... | |
| static llvm::dwarf::Tag | getTagForRecord (const RecordDecl *RD) |
| static unsigned | getDwarfCC (CallingConv CC) |
| static llvm::DINode::DIFlags | getAccessFlag (AccessSpecifier Access, const RecordDecl *RD) |
| Convert an AccessSpecifier into the corresponding DINode flag. More... | |
| static bool | isFunctionLocalClass (const CXXRecordDecl *RD) |
| isFunctionLocalClass - Return true if CXXRecordDecl is defined inside a function. More... | |
| static bool | isClassOrMethodDLLImport (const CXXRecordDecl *RD) |
| Return true if the class or any of its methods are marked dllimport. More... | |
| static bool | hasExplicitMemberDefinition (CXXRecordDecl::method_iterator I, CXXRecordDecl::method_iterator End) |
| static bool | isDefinedInClangModule (const RecordDecl *RD) |
| Does a type definition exist in an imported clang module? More... | |
| static bool | shouldOmitDefinition (codegenoptions::DebugInfoKind DebugKind, bool DebugTypeExtRefs, const RecordDecl *RD, const LangOptions &LangOpts) |
| static bool | hasDefaultGetterName (const ObjCPropertyDecl *PD, const ObjCMethodDecl *Getter) |
| static bool | hasDefaultSetterName (const ObjCPropertyDecl *PD, const ObjCMethodDecl *Setter) |
| static QualType | UnwrapTypeForDebugInfo (QualType T, const ASTContext &C) |
| #define ABSTRACT_TYPE | ( | Class, | |
| Base | |||
| ) |
| #define BUILTIN_TYPE | ( | Id, | |
| SingletonId | |||
| ) |
| #define DEPENDENT_TYPE | ( | Class, | |
| Base | |||
| ) | case Type::Class: |
| #define IMAGE_TYPE | ( | ImgType, | |
| Id, | |||
| SingletonId, | |||
| Access, | |||
| Suffix | |||
| ) |
| #define NON_CANONICAL_TYPE | ( | Class, | |
| Base | |||
| ) |
| #define PLACEHOLDER_TYPE | ( | Id, | |
| SingletonId | |||
| ) | case BuiltinType::Id: |
| #define TYPE | ( | Class, | |
| Base | |||
| ) |
|
static |
Convert an AccessSpecifier into the corresponding DINode flag.
As an optimization, return 0 if the access specifier equals the default for the containing type.
Definition at line 1001 of file CGDebugInfo.cpp.
References clang::AS_none, clang::AS_private, clang::AS_protected, clang::AS_public, clang::TagDecl::isClass(), clang::TagDecl::isStruct(), and clang::TagDecl::isUnion().
|
static |
Definition at line 58 of file CGDebugInfo.cpp.
References clang::Decl::getMaxAlignment(), and clang::Decl::hasAttr().
Referenced by clang::CodeGen::CGDebugInfo::EmitDeclareOfBlockDeclRefVariable(), clang::CodeGen::CGDebugInfo::EmitDeclareOfBlockLiteralArgVariable(), and clang::CodeGen::CGDebugInfo::EmitGlobalVariable().
|
static |
Definition at line 941 of file CGDebugInfo.cpp.
References clang::CC_AAPCS, clang::CC_AAPCS_VFP, clang::CC_C, clang::CC_IntelOclBicc, clang::CC_OpenCLKernel, clang::CC_PreserveAll, clang::CC_PreserveMost, clang::CC_SpirFunction, clang::CC_Swift, clang::CC_Win64, clang::CC_X86_64SysV, clang::CC_X86FastCall, clang::CC_X86Pascal, clang::CC_X86RegCall, clang::CC_X86StdCall, clang::CC_X86ThisCall, and clang::CC_X86VectorCall.
|
static |
Definition at line 775 of file CGDebugInfo.cpp.
References clang::TagDecl::isClass(), clang::TagDecl::isInterface(), clang::TagDecl::isStruct(), and clang::TagDecl::isUnion().
|
static |
Definition at line 49 of file CGDebugInfo.cpp.
References clang::TypeInfo::AlignIsRequired, and clang::ASTContext::getTypeInfo().
Referenced by getTypeAlignIfRequired().
|
static |
Definition at line 54 of file CGDebugInfo.cpp.
References getTypeAlignIfRequired(), and clang::QualType::getTypePtr().
|
static |
In C++ mode, types have linkage, so we can rely on the ODR and on their mangled names, if they're external.
Definition at line 758 of file CGDebugInfo.cpp.
References clang::CodeGen::CodeGenModule::getCXXABI(), clang::TagType::getDecl(), clang::CodeGen::CGCXXABI::getMangleContext(), hasCXXMangling(), clang::NamedDecl::isExternallyVisible(), and clang::MangleContext::mangleCXXRTTIName().
Definition at line 745 of file CGDebugInfo.cpp.
Referenced by getUniqueTagTypeName().
|
static |
Definition at line 1971 of file CGDebugInfo.cpp.
References clang::NamedDecl::getDeclName(), clang::NamedDecl::getName(), clang::Selector::getNameForSlot(), clang::DeclarationName::getObjCSelector(), and clang::DeclarationName::isObjCZeroArgSelector().
|
static |
Definition at line 1983 of file CGDebugInfo.cpp.
References clang::SelectorTable::constructSetterName(), clang::NamedDecl::getDeclName(), clang::NamedDecl::getName(), clang::Selector::getNameForSlot(), clang::DeclarationName::getObjCSelector(), and clang::DeclarationName::isObjCOneArgSelector().
|
static |
Definition at line 1792 of file CGDebugInfo.cpp.
References clang::FunctionDecl::getInstantiatedFromMemberFunction(), clang::FunctionDecl::getMemberSpecializationInfo(), and clang::MemberSpecializationInfo::isExplicitSpecialization().
Referenced by shouldOmitDefinition().
|
static |
Return true if the class or any of its methods are marked dllimport.
Definition at line 1760 of file CGDebugInfo.cpp.
References clang::Decl::hasAttr(), and clang::CXXRecordDecl::methods().
Referenced by clang::CodeGen::CGDebugInfo::completeClassData(), and shouldOmitDefinition().
|
static |
Does a type definition exist in an imported clang module?
Definition at line 1803 of file CGDebugInfo.cpp.
References clang::RecordDecl::field_begin(), clang::RecordDecl::field_end(), clang::NamedDecl::getName(), clang::CXXRecordDecl::getTemplateSpecializationKind(), clang::TagDecl::isCompleteDefinition(), clang::NamedDecl::isExternallyVisible(), clang::Decl::isFromASTFile(), clang::TSK_ExplicitInstantiationDeclaration, and clang::TSK_Undeclared.
Referenced by shouldOmitDefinition().
|
static |
isFunctionLocalClass - Return true if CXXRecordDecl is defined inside a function.
Definition at line 1302 of file CGDebugInfo.cpp.
References clang::Decl::getDeclContext().
|
static |
Definition at line 1825 of file CGDebugInfo.cpp.
References clang::ExternalASTSource::EK_Always, clang::Decl::getASTContext(), clang::RecordDecl::getDefinition(), clang::ASTContext::getExternalSource(), clang::CXXRecordDecl::hasDefinition(), hasExplicitMemberDefinition(), isClassOrMethodDLLImport(), clang::TagDecl::isCompleteDefinitionRequired(), isDefinedInClangModule(), clang::CXXRecordDecl::isDynamicClass(), clang::codegenoptions::LimitedDebugInfo, clang::CXXRecordDecl::method_begin(), clang::CXXRecordDecl::method_end(), clang::TSK_ExplicitInstantiationDeclaration, and clang::TSK_Undeclared.
Referenced by clang::CodeGen::CGDebugInfo::completeRequiredType().
|
static |
Definition at line 2486 of file CGDebugInfo.cpp.
References clang::Auto, clang::QualType::getLocalQualifiers(), clang::ASTContext::getQualifiedType(), clang::Type::getTypeClass(), clang::QualType::getTypePtr(), getUnderlyingType(), clang::QualType::isNull(), Paren, and clang::Qualifiers::removeCommonQualifiers().
1.8.6