diff options
Diffstat (limited to 'lib/CodeGen')
-rw-r--r-- | lib/CodeGen/CGCXX.cpp | 16 | ||||
-rw-r--r-- | lib/CodeGen/CGExpr.cpp | 2 | ||||
-rw-r--r-- | lib/CodeGen/CGExprAgg.cpp | 13 | ||||
-rw-r--r-- | lib/CodeGen/CodeGenFunction.h | 4 |
4 files changed, 7 insertions, 28 deletions
diff --git a/lib/CodeGen/CGCXX.cpp b/lib/CodeGen/CGCXX.cpp index 2cb76ab9d9..54a3e59378 100644 --- a/lib/CodeGen/CGCXX.cpp +++ b/lib/CodeGen/CGCXX.cpp @@ -139,21 +139,9 @@ CodeGenFunction::EmitCXXConstructorCall(const CXXConstructorDecl *D, CGM.GetAddrOfCXXConstructor(D, Type), Args, D); } -LValue -CodeGenFunction::EmitCXXTemporaryObjectExprLValue( - const CXXTemporaryObjectExpr *E) { - // Allocate the destination. - llvm::Value *Dest = CreateTempAlloca(ConvertType(E->getType()), "tmp"); - - EmitCXXTemporaryObjectExpr(Dest, E); - - return LValue::MakeAddr(Dest, E->getType().getCVRQualifiers(), - getContext().getObjCGCAttrKind(E->getType())); -} - void -CodeGenFunction::EmitCXXTemporaryObjectExpr(llvm::Value *Dest, - const CXXTemporaryObjectExpr *E) { +CodeGenFunction::EmitCXXConstructExpr(llvm::Value *Dest, + const CXXConstructExpr *E) { assert(Dest && "Must have a destination!"); const CXXRecordDecl *RD = diff --git a/lib/CodeGen/CGExpr.cpp b/lib/CodeGen/CGExpr.cpp index 86993fbe15..2bcb362f18 100644 --- a/lib/CodeGen/CGExpr.cpp +++ b/lib/CodeGen/CGExpr.cpp @@ -193,8 +193,6 @@ LValue CodeGenFunction::EmitLValue(const Expr *E) { case Expr::CXXReinterpretCastExprClass: case Expr::CXXConstCastExprClass: return EmitCastLValue(cast<CastExpr>(E)); - case Expr::CXXTemporaryObjectExprClass: - return EmitCXXTemporaryObjectExprLValue(cast<CXXTemporaryObjectExpr>(E)); } } diff --git a/lib/CodeGen/CGExprAgg.cpp b/lib/CodeGen/CGExprAgg.cpp index a74741290b..6fc1988937 100644 --- a/lib/CodeGen/CGExprAgg.cpp +++ b/lib/CodeGen/CGExprAgg.cpp @@ -98,7 +98,7 @@ public: void VisitCXXDefaultArgExpr(CXXDefaultArgExpr *DAE) { Visit(DAE->getExpr()); } - void VisitCXXTemporaryObjectExpr(const CXXTemporaryObjectExpr *E); + void VisitCXXConstructExpr(const CXXConstructExpr *E); void VisitVAArgExpr(VAArgExpr *E); void EmitInitializationToLValue(Expr *E, LValue Address); @@ -294,15 +294,10 @@ void AggExprEmitter::VisitVAArgExpr(VAArgExpr *VE) { } void -AggExprEmitter::VisitCXXTemporaryObjectExpr(const CXXTemporaryObjectExpr *E) { - llvm::Value *This = 0; +AggExprEmitter::VisitCXXConstructExpr(const CXXConstructExpr *E) { + assert(DestPtr && "Must have a dest to emit into!"); - if (DestPtr) - This = DestPtr; - else - This = CGF.CreateTempAlloca(CGF.ConvertType(E->getType()), "tmp"); - - CGF.EmitCXXTemporaryObjectExpr(This, E); + CGF.EmitCXXConstructExpr(DestPtr, E); } void AggExprEmitter::EmitInitializationToLValue(Expr* E, LValue LV) { diff --git a/lib/CodeGen/CodeGenFunction.h b/lib/CodeGen/CodeGenFunction.h index 3db7a2e09d..04c0026d8e 100644 --- a/lib/CodeGen/CodeGenFunction.h +++ b/lib/CodeGen/CodeGenFunction.h @@ -643,7 +643,6 @@ public: LValue EmitBlockDeclRefLValue(const BlockDeclRefExpr *E); LValue EmitCXXConditionDeclLValue(const CXXConditionDeclExpr *E); - LValue EmitCXXTemporaryObjectExprLValue(const CXXTemporaryObjectExpr *E); LValue EmitObjCMessageExprLValue(const ObjCMessageExpr *E); LValue EmitObjCIvarRefLValue(const ObjCIvarRefExpr *E); @@ -756,8 +755,7 @@ public: void GenerateStaticCXXBlockVarDeclInit(const VarDecl &D, llvm::GlobalVariable *GV); - void EmitCXXTemporaryObjectExpr(llvm::Value *Dest, - const CXXTemporaryObjectExpr *E); + void EmitCXXConstructExpr(llvm::Value *Dest, const CXXConstructExpr *E); //===--------------------------------------------------------------------===// // Internal Helpers |