diff options
author | Justin Bogner <mail@justinbogner.com> | 2015-08-18 05:40:20 +0000 |
---|---|---|
committer | Justin Bogner <mail@justinbogner.com> | 2015-08-18 05:40:20 +0000 |
commit | 3c32c83daa5e7ceda3f5cb7cd3bf4059c197a202 (patch) | |
tree | 98bf51e1b3a2870332dc6c05d56ac88b32a8da5a /clang/lib/CodeGen/CodeGenFunction.h | |
parent | 0081f9185353814969acf8e3af7677eff29f3f63 (diff) | |
download | bcm5719-llvm-3c32c83daa5e7ceda3f5cb7cd3bf4059c197a202.tar.gz bcm5719-llvm-3c32c83daa5e7ceda3f5cb7cd3bf4059c197a202.zip |
Revert "Generating assumption loads of vptr after ctor call (fixed)"
Bootstrap bots were failing:
http://lab.llvm.org:8080/green/job/clang-stage2-configure-Rlto_build/6382/
http://bb.pgr.jp/builders/clang-3stage-i686-linux/builds/2969
This reverts r245264.
llvm-svn: 245267
Diffstat (limited to 'clang/lib/CodeGen/CodeGenFunction.h')
-rw-r--r-- | clang/lib/CodeGen/CodeGenFunction.h | 41 |
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); |