]> granicus.if.org Git - clang/commitdiff
Handle ImplicitValueInitExpr in AggExprEmitter.
authorAnders Carlsson <andersca@mac.com>
Wed, 16 Dec 2009 06:57:54 +0000 (06:57 +0000)
committerAnders Carlsson <andersca@mac.com>
Wed, 16 Dec 2009 06:57:54 +0000 (06:57 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91519 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CGExprAgg.cpp
test/CodeGenCXX/new.cpp

index 2c122ebe13dddb3164253768a8dd027a8876605e..70fc2c4ccfff0f5ead10c75754d190572504922c 100644 (file)
@@ -106,6 +106,7 @@ public:
   void VisitConditionalOperator(const ConditionalOperator *CO);
   void VisitChooseExpr(const ChooseExpr *CE);
   void VisitInitListExpr(InitListExpr *E);
+  void VisitImplicitValueInitExpr(ImplicitValueInitExpr *E);
   void VisitCXXDefaultArgExpr(CXXDefaultArgExpr *DAE) {
     Visit(DAE->getExpr());
   }
@@ -465,8 +466,13 @@ void AggExprEmitter::VisitCXXExprWithTemporaries(CXXExprWithTemporaries *E) {
 }
 
 void AggExprEmitter::VisitCXXZeroInitValueExpr(CXXZeroInitValueExpr *E) {
-  LValue lvalue = LValue::MakeAddr(DestPtr, Qualifiers());
-  EmitNullInitializationToLValue(lvalue, E->getType());
+  LValue LV = LValue::MakeAddr(DestPtr, Qualifiers());
+  EmitNullInitializationToLValue(LV, E->getType());
+}
+
+void AggExprEmitter::VisitImplicitValueInitExpr(ImplicitValueInitExpr *E) {
+  LValue LV = LValue::MakeAddr(DestPtr, Qualifiers());
+  EmitNullInitializationToLValue(LV, E->getType());
 }
 
 void AggExprEmitter::EmitInitializationToLValue(Expr* E, LValue LV) {
index 71dbf1937e79730ad3959f097c4b0f1028abdb84..f3c14a78d362a7b2cab720f0404737572adf8d51 100644 (file)
@@ -90,3 +90,9 @@ A* t10() {
   return new(1, 2, 3.45, 100) A;
 }
 
+struct B { };
+void t11() {
+  // CHECK: call i8* @_Znwm
+  // CHECK: call void @llvm.memset.i64(
+  B* b = new B();
+}