aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen/CGClass.cpp
diff options
context:
space:
mode:
authorEli Friedman <eli.friedman@gmail.com>2010-01-31 19:07:50 +0000
committerEli Friedman <eli.friedman@gmail.com>2010-01-31 19:07:50 +0000
commit3bb9412788e04755cb509ec576f41afbed4efdd3 (patch)
tree41ca9fe0d0212a0fdd0dbcc558310d39ff5ccb46 /lib/CodeGen/CGClass.cpp
parent3aba09376c5f49c4c8d176109ea4835bc2c528ee (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.cpp20
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));