1 // RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.core -analyzer-store=region -verify %s 2 // expected-no-diagnostics 3 4 // Test function pointer casts. 5 typedef void* (*MyFuncTest1)(void); 6 7 MyFuncTest1 test1_aux(void); 8 void test1(void) { 9 void *x; 10 void* (*p)(void); 11 p = ((void*) test1_aux()); 12 if (p != ((void*) 0)) x = (*p)(); 13 } 14 15 // Test casts from void* to function pointers. 16 void* test2(void *p) { 17 MyFuncTest1 fp = (MyFuncTest1) p; 18 return (*fp)(); 19 } 20 21 // <radar://10087620> 22 // A cast from int onjective C property reference to int. 23 typedef signed char BOOL; 24 @protocol NSObject - (BOOL)isEqual:(id)object; @end 25 @interface NSObject <NSObject> {} - (id)init; @end 26 typedef enum { 27 EEOne, 28 EETwo 29 } RDR10087620Enum; 30 @interface RDR10087620 : NSObject { 31 RDR10087620Enum elem; 32 } 33 @property (readwrite, nonatomic) RDR10087620Enum elem; 34 @end 35 36 static void 37 adium_media_ready_cb(RDR10087620 *InObj) 38 { 39 InObj.elem |= EEOne; 40 } 41 42 43 // PR16690 44 _Bool testLocAsIntegerToBool() { 45 return (long long)&testLocAsIntegerToBool; 46 } 47