aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen/CodeGenModule.h
diff options
context:
space:
mode:
authorRoman Divacky <rdivacky@FreeBSD.org>2010-04-02 08:55:10 +0000
committerRoman Divacky <rdivacky@FreeBSD.org>2010-04-02 08:55:10 +0000
commit11d2b2d2bb706fca0656f2760839721bb7f6cb6f (patch)
treed374cdca417e76f1bf101f139dba2db1d10ee8f7 /lib/CodeGen/CodeGenModule.h
parentc0c7bca4e5b8d12699dc93a0da49e9e4bb79671b (diff)
downloadsrc-11d2b2d2bb706fca0656f2760839721bb7f6cb6f.tar.gz
src-11d2b2d2bb706fca0656f2760839721bb7f6cb6f.zip
Notes
Diffstat (limited to 'lib/CodeGen/CodeGenModule.h')
-rw-r--r--lib/CodeGen/CodeGenModule.h37
1 files changed, 13 insertions, 24 deletions
diff --git a/lib/CodeGen/CodeGenModule.h b/lib/CodeGen/CodeGenModule.h
index febb8560367b..3c57c0b8cbfc 100644
--- a/lib/CodeGen/CodeGenModule.h
+++ b/lib/CodeGen/CodeGenModule.h
@@ -31,7 +31,6 @@
#include "llvm/ADT/StringSet.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/Support/ValueHandle.h"
-#include <list>
namespace llvm {
class Module;
@@ -93,8 +92,8 @@ class CodeGenModule : public BlockModule {
CodeGenTypes Types;
MangleContext MangleCtx;
- /// VtableInfo - Holds information about C++ vtables.
- CGVtableInfo VtableInfo;
+ /// VTables - Holds information about C++ vtables.
+ CodeGenVTables VTables;
CGObjCRuntime* Runtime;
CGDebugInfo* DebugInfo;
@@ -181,7 +180,7 @@ public:
llvm::Module &getModule() const { return TheModule; }
CodeGenTypes &getTypes() { return Types; }
MangleContext &getMangleContext() { return MangleCtx; }
- CGVtableInfo &getVtableInfo() { return VtableInfo; }
+ CodeGenVTables &getVTables() { return VTables; }
Diagnostic &getDiags() const { return Diags; }
const llvm::TargetData &getTargetData() const { return TheTargetData; }
llvm::LLVMContext &getLLVMContext() { return VMContext; }
@@ -225,36 +224,18 @@ public:
/// for the given type.
llvm::Constant *GetAddrOfRTTIDescriptor(QualType Ty);
- llvm::Constant *GetAddrOfThunk(GlobalDecl GD,
- const ThunkAdjustment &ThisAdjustment);
- llvm::Constant *GetAddrOfCovariantThunk(GlobalDecl GD,
- const CovariantThunkAdjustment &ThisAdjustment);
- void BuildThunksForVirtual(GlobalDecl GD);
- void BuildThunksForVirtualRecursive(GlobalDecl GD, GlobalDecl BaseOGD);
+ /// GetAddrOfThunk - Get the address of the thunk for the given global decl.
+ llvm::Constant *GetAddrOfThunk(GlobalDecl GD, const ThunkInfo &Thunk);
/// GetWeakRefReference - Get a reference to the target of VD.
llvm::Constant *GetWeakRefReference(const ValueDecl *VD);
- /// BuildThunk - Build a thunk for the given method.
- llvm::Constant *BuildThunk(GlobalDecl GD, bool Extern,
- const ThunkAdjustment &ThisAdjustment);
-
- /// BuildCoVariantThunk - Build a thunk for the given method
- llvm::Constant *
- BuildCovariantThunk(const GlobalDecl &GD, bool Extern,
- const CovariantThunkAdjustment &Adjustment);
-
/// GetNonVirtualBaseClassOffset - Returns the offset from a derived class to
/// its base class. Returns null if the offset is 0.
llvm::Constant *
GetNonVirtualBaseClassOffset(const CXXRecordDecl *ClassDecl,
const CXXRecordDecl *BaseClassDecl);
- /// ComputeThunkAdjustment - Returns the two parts required to compute the
- /// offset for an object.
- ThunkAdjustment ComputeThunkAdjustment(const CXXRecordDecl *ClassDecl,
- const CXXRecordDecl *BaseClassDecl);
-
/// GetStringForStringLiteral - Return the appropriate bytes for a string
/// literal, properly padded to match the literal type. If only the address of
/// a constant is needed consider using GetAddrOfConstantStringLiteral.
@@ -523,6 +504,14 @@ private:
void EmitAnnotations(void);
+ /// EmitFundamentalRTTIDescriptor - Emit the RTTI descriptors for the
+ /// given type.
+ void EmitFundamentalRTTIDescriptor(QualType Type);
+
+ /// EmitFundamentalRTTIDescriptors - Emit the RTTI descriptors for the
+ /// builtin types.
+ void EmitFundamentalRTTIDescriptors();
+
/// EmitDeferred - Emit any needed decls for which code generation
/// was deferred.
void EmitDeferred(void);