diff options
author | Eli Friedman <eli.friedman@gmail.com> | 2010-01-31 19:07:50 +0000 |
---|---|---|
committer | Eli Friedman <eli.friedman@gmail.com> | 2010-01-31 19:07:50 +0000 |
commit | 3bb9412788e04755cb509ec576f41afbed4efdd3 (patch) | |
tree | 41ca9fe0d0212a0fdd0dbcc558310d39ff5ccb46 /lib/CodeGen/CGClass.cpp | |
parent | 3aba09376c5f49c4c8d176109ea4835bc2c528ee (diff) |
Simplify EmitMemberInitializer; no intended functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94965 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/CGClass.cpp')
-rw-r--r-- | lib/CodeGen/CGClass.cpp | 20 |
1 files changed, 1 insertions, 19 deletions
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<RecordType>()) { - 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)); |