зеркало из https://github.com/microsoft/clang-1.git
Add GetAddrOfCXXConstructor and use it.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69328 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
d87a5012d1
Коммит
363c184139
|
@ -136,12 +136,8 @@ const char *CodeGenModule::getMangledCXXCtorName(const CXXConstructorDecl *D,
|
|||
|
||||
void CodeGenModule::EmitCXXConstructor(const CXXConstructorDecl *D,
|
||||
CXXCtorType Type) {
|
||||
const llvm::FunctionType *Ty =
|
||||
getTypes().GetFunctionType(getTypes().getFunctionInfo(D), false);
|
||||
|
||||
const char *Name = getMangledCXXCtorName(D, Type);
|
||||
llvm::Function *Fn =
|
||||
cast<llvm::Function>(GetOrCreateLLVMFunction(Name, Ty, D));
|
||||
llvm::Function *Fn = GetAddrOfCXXConstructor(D, Type);
|
||||
|
||||
CodeGenFunction(*this).GenerateCode(D, Fn);
|
||||
|
||||
|
@ -176,3 +172,13 @@ void CodeGenModule::EmitCXXConstructors(const CXXConstructorDecl *D) {
|
|||
EmitCXXConstructor(D, Ctor_Complete);
|
||||
EmitCXXConstructor(D, Ctor_Base);
|
||||
}
|
||||
|
||||
llvm::Function *
|
||||
CodeGenModule::GetAddrOfCXXConstructor(const CXXConstructorDecl *D,
|
||||
CXXCtorType Type) {
|
||||
const llvm::FunctionType *FTy =
|
||||
getTypes().GetFunctionType(getTypes().getFunctionInfo(D), false);
|
||||
|
||||
const char *Name = getMangledCXXCtorName(D, Type);
|
||||
return cast<llvm::Function>(GetOrCreateLLVMFunction(Name, FTy, D));
|
||||
}
|
||||
|
|
|
@ -236,6 +236,11 @@ public:
|
|||
llvm::Constant *GetAddrOfConstantCString(const std::string &str,
|
||||
const char *GlobalName=0);
|
||||
|
||||
/// GetAddrOfCXXConstructor - Return the address of the constructor of the
|
||||
/// given type.
|
||||
llvm::Function *GetAddrOfCXXConstructor(const CXXConstructorDecl *D,
|
||||
CXXCtorType Type);
|
||||
|
||||
/// getBuiltinLibFunction - Given a builtin id for a function like
|
||||
/// "__builtin_fabsf", return a Function* for "fabsf".
|
||||
llvm::Value *getBuiltinLibFunction(unsigned BuiltinID);
|
||||
|
|
Загрузка…
Ссылка в новой задаче