From e8bdce441bd413ff91787dd4514c397bdccabf82 Mon Sep 17 00:00:00 2001 From: Daniel Dunbar Date: Wed, 6 Aug 2008 05:32:55 +0000 Subject: Fix EmitNullInitializationToLValue for bitfield lvalues. - PR2643 llvm-svn: 54397 --- clang/lib/CodeGen/CGExprAgg.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'clang/lib/CodeGen/CGExprAgg.cpp') diff --git a/clang/lib/CodeGen/CGExprAgg.cpp b/clang/lib/CodeGen/CGExprAgg.cpp index df90ee09f5c6..e51a852451e9 100644 --- a/clang/lib/CodeGen/CGExprAgg.cpp +++ b/clang/lib/CodeGen/CGExprAgg.cpp @@ -340,10 +340,8 @@ void AggExprEmitter::EmitInitializationToLValue(Expr* E, LValue LV) { void AggExprEmitter::EmitNullInitializationToLValue(LValue LV, QualType T) { if (!CGF.hasAggregateLLVMType(T)) { // For non-aggregates, we can store zero - const llvm::Type *T = - cast(LV.getAddress()->getType())->getElementType(); - // FIXME: volatility - Builder.CreateStore(llvm::Constant::getNullValue(T), LV.getAddress()); + llvm::Value *Null = llvm::Constant::getNullValue(CGF.ConvertType(T)); + CGF.EmitStoreThroughLValue(RValue::get(Null), LV, T); } else { // Otherwise, just memset the whole thing to zero. This is legal // because in LLVM, all default initializers are guaranteed to have a -- cgit v1.2.3