summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CGCXXABI.h
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/CodeGen/CGCXXABI.h')
-rw-r--r--clang/lib/CodeGen/CGCXXABI.h33
1 files changed, 28 insertions, 5 deletions
diff --git a/clang/lib/CodeGen/CGCXXABI.h b/clang/lib/CodeGen/CGCXXABI.h
index a28436b3e97..36f8230b0c1 100644
--- a/clang/lib/CodeGen/CGCXXABI.h
+++ b/clang/lib/CodeGen/CGCXXABI.h
@@ -16,12 +16,15 @@
#define CLANG_CODEGEN_CXXABI_H
namespace llvm {
+ class Constant;
class Value;
}
namespace clang {
class CastExpr;
+ class CXXRecordDecl;
class MemberPointerType;
+ class QualType;
namespace CodeGen {
class CodeGenFunction;
@@ -42,11 +45,31 @@ public:
llvm::Value *MemPtr,
const MemberPointerType *MPT);
- virtual void EmitMemberPointerConversion(CodeGenFunction &CGF,
- const CastExpr *E,
- llvm::Value *Src,
- llvm::Value *Dest,
- bool VolatileDest);
+ virtual void
+ EmitMemberFunctionPointerConversion(CodeGenFunction &CGF,
+ const CastExpr *E,
+ llvm::Value *Src,
+ llvm::Value *Dest,
+ bool VolatileDest);
+
+ virtual void EmitNullMemberFunctionPointer(CodeGenFunction &CGF,
+ const MemberPointerType *MPT,
+ llvm::Value *Dest,
+ bool VolatileDest);
+
+ // Manipulations on constant expressions.
+
+ /// \brief Returns true if zero-initializing the given type requires
+ /// a constant other than the LLVM null value.
+ virtual bool RequiresNonZeroInitializer(QualType T);
+ virtual bool RequiresNonZeroInitializer(const CXXRecordDecl *D);
+
+ virtual llvm::Constant *
+ EmitMemberFunctionPointerConversion(llvm::Constant *C,
+ const CastExpr *E);
+
+ virtual llvm::Constant *
+ EmitNullMemberFunctionPointer(const MemberPointerType *MPT);
};
/// Creates an instance of a C++ ABI class.
OpenPOWER on IntegriCloud