diff options
Diffstat (limited to 'test/Analysis/NSString.m')
-rw-r--r-- | test/Analysis/NSString.m | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/test/Analysis/NSString.m b/test/Analysis/NSString.m index 9339069f4c..e7ac730c72 100644 --- a/test/Analysis/NSString.m +++ b/test/Analysis/NSString.m @@ -404,3 +404,27 @@ void testOSCompareAndSwapXXBarrier_parameter_no_direct_release(NSString **old) { else return; } + +@interface AlwaysInlineBodyFarmBodies : NSObject { + NSString *_value; +} + - (NSString *)_value; + - (void)callValue; +@end + +@implementation AlwaysInlineBodyFarmBodies + +- (NSString *)_value { + if (!_value) { + NSString *s = [[NSString alloc] init]; + if (!OSAtomicCompareAndSwapPtr(0, s, (void**)&_value)) { + [s release]; + } + } + return _value; +} + +- (void)callValue { + [self _value]; +} +@end
\ No newline at end of file |