| // RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.core -analyzer-store=region -verify %s |
| // expected-no-diagnostics |
| |
| // Test function pointer casts. |
| typedef void* (*MyFuncTest1)(void); |
| |
| MyFuncTest1 test1_aux(void); |
| void test1(void) { |
| void *x; |
| void* (*p)(void); |
| p = ((void*) test1_aux()); |
| if (p != ((void*) 0)) x = (*p)(); |
| } |
| |
| // Test casts from void* to function pointers. |
| void* test2(void *p) { |
| MyFuncTest1 fp = (MyFuncTest1) p; |
| return (*fp)(); |
| } |
| |
| // <radar://10087620> |
| // A cast from int onjective C property reference to int. |
| typedef signed char BOOL; |
| @protocol NSObject - (BOOL)isEqual:(id)object; @end |
| @interface NSObject <NSObject> {} - (id)init; @end |
| typedef enum { |
| EEOne, |
| EETwo |
| } RDR10087620Enum; |
| @interface RDR10087620 : NSObject { |
| RDR10087620Enum elem; |
| } |
| @property (readwrite, nonatomic) RDR10087620Enum elem; |
| @end |
| |
| static void |
| adium_media_ready_cb(RDR10087620 *InObj) |
| { |
| InObj.elem |= EEOne; |
| } |
| |
| |
| // PR16690 |
| _Bool testLocAsIntegerToBool() { |
| return (long long)&testLocAsIntegerToBool; |
| } |