From: Eli Friedman Date: Sun, 31 Jan 2010 19:07:50 +0000 (+0000) Subject: Simplify EmitMemberInitializer; no intended functionality change. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3bb9412788e04755cb509ec576f41afbed4efdd3;p=clang Simplify EmitMemberInitializer; no intended functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94965 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/CGClass.cpp b/lib/CodeGen/CGClass.cpp index c965b34298..01b3934c4c 100644 --- a/lib/CodeGen/CGClass.cpp +++ b/lib/CodeGen/CGClass.cpp @@ -834,24 +834,6 @@ static void EmitMemberInitializer(CodeGenFunction &CGF, FieldType = Field->getType(); } - // If the field is an array, branch based on the element type. - const ConstantArrayType *Array = - CGF.getContext().getAsConstantArrayType(FieldType); - if (Array) - FieldType = CGF.getContext().getBaseElementType(FieldType); - - // We lose the constructor for anonymous union members, so handle them - // explicitly. - // FIXME: This is somwhat ugly, and doesn't seem necessary at all. - if (MemberInit->getAnonUnionMember() && FieldType->getAs()) { - if (MemberInit->getInit()) - CGF.EmitAggExpr(MemberInit->getInit(), LHS.getAddress(), - LHS.isVolatileQualified()); - else - CGF.EmitAggregateClear(LHS.getAddress(), Field->getType()); - return; - } - // FIXME: If there's no initializer and the CXXBaseOrMemberInitializer // was implicitly generated, we shouldn't be zeroing memory. RValue RHS; @@ -859,7 +841,7 @@ static void EmitMemberInitializer(CodeGenFunction &CGF, RHS = CGF.EmitReferenceBindingToExpr(MemberInit->getInit(), FieldType, /*IsInitializer=*/true); CGF.EmitStoreThroughLValue(RHS, LHS, FieldType); - } else if (Array && !MemberInit->getInit()) { + } else if (FieldType->isArrayType() && !MemberInit->getInit()) { CGF.EmitMemSetToZero(LHS.getAddress(), Field->getType()); } else if (!CGF.hasAggregateLLVMType(Field->getType())) { RHS = RValue::get(CGF.EmitScalarExpr(MemberInit->getInit(), true));