50 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fblocks -fobjc-gc -emit-llvm -o %t %s
 | 
						|
// RUN: grep objc_assign_ivar %t | count 3
 | 
						|
// RUN: grep objc_assign_strongCast %t | count 6
 | 
						|
// RUN: %clang_cc1 -x objective-c++ -triple x86_64-apple-darwin10 -fblocks -fobjc-gc -emit-llvm -o %t %s
 | 
						|
// RUN: grep objc_assign_ivar %t | count 3
 | 
						|
// RUN: grep objc_assign_strongCast %t | count 6
 | 
						|
 | 
						|
struct Slice {
 | 
						|
    void *__strong * items;
 | 
						|
};
 | 
						|
 | 
						|
typedef struct Slice Slice;
 | 
						|
 | 
						|
@interface ISlice {
 | 
						|
@public
 | 
						|
    void *__strong * IvarItem;
 | 
						|
}
 | 
						|
@end
 | 
						|
 | 
						|
typedef void (^observer_block_t)(id object);
 | 
						|
@interface Observer  {
 | 
						|
@public
 | 
						|
    observer_block_t block;
 | 
						|
}
 | 
						|
@end
 | 
						|
 | 
						|
 | 
						|
void foo (int i) {
 | 
						|
    // storing into an array of strong pointer types.
 | 
						|
    void *__strong* items;
 | 
						|
    items[i] = 0;
 | 
						|
 | 
						|
    // storing indirectly into an array of strong pointer types.
 | 
						|
    void *__strong* *vitems;
 | 
						|
    *vitems[i] = 0;
 | 
						|
 | 
						|
    Slice *slice;
 | 
						|
    slice->items = 0;
 | 
						|
    // storing into a struct element of an array of strong pointer types.
 | 
						|
    slice->items[i] = 0;
 | 
						|
 | 
						|
    ISlice *islice;
 | 
						|
    islice->IvarItem = 0;
 | 
						|
    // Storing into an ivar of an array of strong pointer types.
 | 
						|
    islice->IvarItem[i] = (void*)0;
 | 
						|
 | 
						|
    Observer *observer;
 | 
						|
    observer->block = 0;
 | 
						|
}
 |