Create a emitCXXStructor function and make the existing emitCXXConstructor and

emitCXXDestructor static helpers.

A next patch will make it a helper in CGCXXABI.

llvm-svn: 217804
This commit is contained in:
Rafael Espindola
2014-09-15 18:46:13 +00:00
parent d759fe5764
commit 02b77f4248
3 changed files with 58 additions and 49 deletions

View File

@@ -1044,6 +1044,14 @@ public:
/// are emitted lazily.
void EmitGlobal(GlobalDecl D);
bool TryEmitDefinitionAsAlias(GlobalDecl Alias, GlobalDecl Target,
bool InEveryTU);
bool TryEmitBaseDestructorAsAlias(const CXXDestructorDecl *D);
/// Set attributes for a global definition.
void setFunctionDefinitionAttributes(const FunctionDecl *D,
llvm::Function *F);
private:
llvm::GlobalValue *GetGlobalValue(StringRef Ref);
@@ -1064,10 +1072,6 @@ private:
void setNonAliasAttributes(const Decl *D, llvm::GlobalObject *GO);
/// Set attributes for a global definition.
void setFunctionDefinitionAttributes(const FunctionDecl *D,
llvm::Function *F);
/// Set function attributes for a function declaration.
void SetFunctionAttributes(GlobalDecl GD,
llvm::Function *F,
@@ -1083,19 +1087,13 @@ private:
// C++ related functions.
bool TryEmitDefinitionAsAlias(GlobalDecl Alias, GlobalDecl Target,
bool InEveryTU);
bool TryEmitBaseDestructorAsAlias(const CXXDestructorDecl *D);
void EmitNamespace(const NamespaceDecl *D);
void EmitLinkageSpec(const LinkageSpecDecl *D);
void CompleteDIClassType(const CXXMethodDecl* D);
/// Emit a single constructor with the given type from a C++ constructor Decl.
void EmitCXXConstructor(const CXXConstructorDecl *D, CXXCtorType Type);
/// Emit a single destructor with the given type from a C++ destructor Decl.
void EmitCXXDestructor(const CXXDestructorDecl *D, CXXDtorType Type);
/// Emit a single constructor/destructor with the given type from a C++
/// constructor Decl.
void emitCXXStructor(const CXXMethodDecl *D, StructorType Type);
/// \brief Emit the function that initializes C++ thread_local variables.
void EmitCXXThreadLocalInitFunc();