Don't try to take the address of a bitfield; fixes PR2310.
llvm-svn: 50966
diff --git a/clang/lib/CodeGen/CGExprAgg.cpp b/clang/lib/CodeGen/CGExprAgg.cpp
index 508bf75..6b68705 100644
--- a/clang/lib/CodeGen/CGExprAgg.cpp
+++ b/clang/lib/CodeGen/CGExprAgg.cpp
@@ -304,12 +304,11 @@
// FIXME: Are initializers affected by volatile?
if (E->getType()->isComplexType()) {
CGF.EmitComplexExprIntoAddr(E, LV.getAddress(), false);
- return;
+ } else if (CGF.hasAggregateLLVMType(E->getType())) {
+ CGF.EmitAnyExpr(E, LV.getAddress(), false);
+ } else {
+ CGF.EmitStoreThroughLValue(CGF.EmitAnyExpr(E), LV, E->getType());
}
- RValue RV = CGF.EmitAnyExpr(E, LV.getAddress(), false);
- if (CGF.hasAggregateLLVMType(E->getType()))
- return;
- CGF.EmitStoreThroughLValue(RV, LV, E->getType());
}
void AggExprEmitter::EmitNullInitializationToLValue(LValue LV, QualType T) {