Always emit bitfield properties using expression behavior, even if they're
atomic. This is probably something we should warn about. llvm-svn: 139584
This commit is contained in:
parent
f9f68b816b
commit
0e5c086de4
|
@ -495,6 +495,13 @@ PropertyImplStrategy::PropertyImplStrategy(CodeGenModule &CGM,
|
|||
return;
|
||||
}
|
||||
|
||||
// Properties on bitfield ivars need to be emitted using expression
|
||||
// accesses even if they're nominally atomic.
|
||||
if (ivar->isBitField()) {
|
||||
Kind = Expression;
|
||||
return;
|
||||
}
|
||||
|
||||
// GC-qualified or ARC-qualified ivars need to be emitted as
|
||||
// expressions. This actually works out to being atomic anyway,
|
||||
// except for ARC __strong, but that should trigger the above code.
|
||||
|
|
|
@ -103,3 +103,12 @@ void test4(Test4 *t) {
|
|||
// CHECK-NEXT: ret void
|
||||
test4_printf("%.2f", t.f);
|
||||
}
|
||||
|
||||
@interface Test5 {
|
||||
unsigned _x : 5;
|
||||
}
|
||||
@property unsigned x;
|
||||
@end
|
||||
@implementation Test5
|
||||
@synthesize x = _x;
|
||||
@end
|
||||
|
|
Loading…
Reference in New Issue