Fix a stupid mistake in r151133. Reported to me by Joerg Sonnenberger.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151407 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Eli Friedman 2012-02-24 23:53:49 +00:00
Родитель 61dab36ccb
Коммит 5a13d4d2c1
2 изменённых файлов: 12 добавлений и 3 удалений

Просмотреть файл

@ -857,10 +857,12 @@ void AggExprEmitter::EmitNullInitializationToLValue(LValue lv) {
llvm::Value *null = llvm::Constant::getNullValue(CGF.ConvertType(type));
// Note that the following is not equivalent to
// EmitStoreThroughBitfieldLValue for ARC types.
if (lv.isBitField())
if (lv.isBitField()) {
CGF.EmitStoreThroughBitfieldLValue(RValue::get(null), lv);
assert(lv.isSimple());
CGF.EmitStoreOfScalar(null, lv, /* isInitialization */ true);
} else {
assert(lv.isSimple());
CGF.EmitStoreOfScalar(null, lv, /* isInitialization */ true);
}
} else {
// There's a potential optimization opportunity in combining
// memsets; that would be easy for arrays, but relatively

Просмотреть файл

@ -123,3 +123,10 @@ struct test12 {
struct test12 (*p)(void);
} test12g;
void test13(int x) {
struct X { int a; int b : 10; int c; };
struct X y = {.c = x};
// CHECK: @test13
// CHECK: and i32 {{.*}}, -1024
}