summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CodeGenFunction.h
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/CodeGen/CodeGenFunction.h')
-rw-r--r--clang/lib/CodeGen/CodeGenFunction.h41
1 files changed, 13 insertions, 28 deletions
diff --git a/clang/lib/CodeGen/CodeGenFunction.h b/clang/lib/CodeGen/CodeGenFunction.h
index 26ce8e72afa..95a512c48e2 100644
--- a/clang/lib/CodeGen/CodeGenFunction.h
+++ b/clang/lib/CodeGen/CodeGenFunction.h
@@ -1309,27 +1309,21 @@ public:
void EmitInitializerForField(FieldDecl *Field, LValue LHS, Expr *Init,
ArrayRef<VarDecl *> ArrayIndexes);
- /// Struct with all informations about dynamic [sub]class needed to set vptr.
- struct VPtr {
- BaseSubobject Base;
- const CXXRecordDecl *NearestVBase;
- CharUnits OffsetFromNearestVBase;
- const CXXRecordDecl *VTableClass;
- };
-
- /// Initialize the vtable pointer of the given subobject.
- void InitializeVTablePointer(const VPtr &vptr);
-
- typedef llvm::SmallVector<VPtr, 4> VPtrsVector;
+ /// InitializeVTablePointer - Initialize the vtable pointer of the given
+ /// subobject.
+ ///
+ void InitializeVTablePointer(BaseSubobject Base,
+ const CXXRecordDecl *NearestVBase,
+ CharUnits OffsetFromNearestVBase,
+ const CXXRecordDecl *VTableClass);
typedef llvm::SmallPtrSet<const CXXRecordDecl *, 4> VisitedVirtualBasesSetTy;
- VPtrsVector getVTablePointers(const CXXRecordDecl *VTableClass);
-
- void getVTablePointers(BaseSubobject Base, const CXXRecordDecl *NearestVBase,
- CharUnits OffsetFromNearestVBase,
- bool BaseIsNonVirtualPrimaryBase,
- const CXXRecordDecl *VTableClass,
- VisitedVirtualBasesSetTy &VBases, VPtrsVector &vptrs);
+ void InitializeVTablePointers(BaseSubobject Base,
+ const CXXRecordDecl *NearestVBase,
+ CharUnits OffsetFromNearestVBase,
+ bool BaseIsNonVirtualPrimaryBase,
+ const CXXRecordDecl *VTableClass,
+ VisitedVirtualBasesSetTy& VBases);
void InitializeVTablePointers(const CXXRecordDecl *ClassDecl);
@@ -1758,19 +1752,10 @@ public:
// they are substantially the same.
void EmitDelegatingCXXConstructorCall(const CXXConstructorDecl *Ctor,
const FunctionArgList &Args);
-
void EmitCXXConstructorCall(const CXXConstructorDecl *D, CXXCtorType Type,
bool ForVirtualBase, bool Delegating,
llvm::Value *This, const CXXConstructExpr *E);
- /// Emit assumption load for all bases. Requires to be be called only on
- /// most-derived class and not under construction of the object.
- void EmitVTableAssumptionLoads(const CXXRecordDecl *ClassDecl,
- llvm::Value *This);
-
- /// Emit assumption that vptr load == global vtable.
- void EmitVTableAssumptionLoad(const VPtr &vptr, llvm::Value *This);
-
void EmitSynthesizedCXXCopyCtorCall(const CXXConstructorDecl *D,
llvm::Value *This, llvm::Value *Src,
const CXXConstructExpr *E);
OpenPOWER on IntegriCloud