| // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c++ %s.result | 
 | // RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c++ %s > %t | 
 | // RUN: diff %t %s.result | 
 |  | 
 | #include "Common.h" | 
 |  | 
 | @interface NSString : NSObject | 
 | +(id)string; | 
 | @end | 
 |  | 
 | struct foo { | 
 |     NSString *s; | 
 |     foo(NSString *s): s([s retain]){ | 
 |         NSAutoreleasePool *pool = [NSAutoreleasePool new]; | 
 |         [[[NSString string] retain] release]; | 
 |         [pool drain]; | 
 |         if (s) | 
 |           [s release]; | 
 |     } | 
 |     ~foo(){ [s release]; } | 
 | private: | 
 |     foo(foo const &); | 
 |     foo &operator=(foo const &); | 
 | }; | 
 |  | 
 | int main(){ | 
 |     NSAutoreleasePool *pool = [NSAutoreleasePool new]; | 
 |  | 
 |     foo f([[NSString string] autorelease]); | 
 |  | 
 |     [pool drain]; | 
 |     return 0; | 
 | } |