diff options
author | Ed Schouten <ed@FreeBSD.org> | 2009-06-03 21:11:25 +0000 |
---|---|---|
committer | Ed Schouten <ed@FreeBSD.org> | 2009-06-03 21:11:25 +0000 |
commit | 2659aeb5e51fe27d24bbffad0d1851b39fed5e43 (patch) | |
tree | f0e24d4185187f7d15274dee4bc53908e30f5b76 /lib/CodeGen/CodeGenFunction.h | |
parent | 922a2097733e49b869978a264837ad60eca82891 (diff) |
Notes
Diffstat (limited to 'lib/CodeGen/CodeGenFunction.h')
-rw-r--r-- | lib/CodeGen/CodeGenFunction.h | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/lib/CodeGen/CodeGenFunction.h b/lib/CodeGen/CodeGenFunction.h index b7894a4068aa..c91a052cd549 100644 --- a/lib/CodeGen/CodeGenFunction.h +++ b/lib/CodeGen/CodeGenFunction.h @@ -239,7 +239,30 @@ private: /// 'this' declaration. ImplicitParamDecl *CXXThisDecl; - llvm::SmallVector<const CXXTemporary*, 4> LiveTemporaries; + /// CXXLiveTemporaryInfo - Holds information about a live C++ temporary. + struct CXXLiveTemporaryInfo { + /// Temporary - The live temporary. + const CXXTemporary *Temporary; + + /// ThisPtr - The pointer to the temporary. + llvm::Value *ThisPtr; + + /// DtorBlock - The destructor block. + llvm::BasicBlock *DtorBlock; + + /// CondPtr - If this is a conditional temporary, this is the pointer to + /// the condition variable that states whether the destructor should be + /// called or not. + llvm::Value *CondPtr; + + CXXLiveTemporaryInfo(const CXXTemporary *temporary, + llvm::Value *thisptr, llvm::BasicBlock *dtorblock, + llvm::Value *condptr) + : Temporary(temporary), ThisPtr(thisptr), DtorBlock(dtorblock), + CondPtr(condptr) { } + }; + + llvm::SmallVector<CXXLiveTemporaryInfo, 4> LiveTemporaries; public: CodeGenFunction(CodeGenModule &cgm); @@ -483,6 +506,7 @@ public: llvm::Value *This); void PushCXXTemporary(const CXXTemporary *Temporary, llvm::Value *Ptr); + void PopCXXTemporary(); llvm::Value *EmitCXXNewExpr(const CXXNewExpr *E); |