blob: 5c81ae6ffbe62c0780eefccd21e630d644401aa0 [file] [log] [blame]
Dominic Chen184c6242017-03-03 18:02:02 +00001// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.core -analyzer-store=region -verify %s
Andy Gibbsc6e68da2012-10-19 12:44:48 +00002// expected-no-diagnostics
Ted Kremeneka06a68f2009-03-05 20:22:13 +00003
Jordan Rose783b11b2013-07-25 17:22:02 +00004// Test function pointer casts.
Ted Kremenek3add5e52009-03-05 22:47:06 +00005typedef void* (*MyFuncTest1)(void);
Ted Kremeneka06a68f2009-03-05 20:22:13 +00006
7MyFuncTest1 test1_aux(void);
8void test1(void) {
9 void *x;
10 void* (*p)(void);
11 p = ((void*) test1_aux());
12 if (p != ((void*) 0)) x = (*p)();
13}
Ted Kremenek3add5e52009-03-05 22:47:06 +000014
Jordan Rose783b11b2013-07-25 17:22:02 +000015// Test casts from void* to function pointers.
Ted Kremenek3add5e52009-03-05 22:47:06 +000016void* test2(void *p) {
17 MyFuncTest1 fp = (MyFuncTest1) p;
18 return (*fp)();
19}
Anna Zaks295208d2011-09-12 17:56:08 +000020
21// <radar://10087620>
22// A cast from int onjective C property reference to int.
23typedef signed char BOOL;
24@protocol NSObject - (BOOL)isEqual:(id)object; @end
25@interface NSObject <NSObject> {} - (id)init; @end
26typedef enum {
Anna Zaks05dda472011-09-12 18:28:35 +000027 EEOne,
28 EETwo
29} RDR10087620Enum;
30@interface RDR10087620 : NSObject {
31 RDR10087620Enum elem;
Anna Zaks295208d2011-09-12 17:56:08 +000032}
Anna Zaks05dda472011-09-12 18:28:35 +000033@property (readwrite, nonatomic) RDR10087620Enum elem;
John McCallfe96e0b2011-11-06 09:01:30 +000034@end
35
Anna Zaks295208d2011-09-12 17:56:08 +000036static void
Anna Zaks05dda472011-09-12 18:28:35 +000037adium_media_ready_cb(RDR10087620 *InObj)
Anna Zaks295208d2011-09-12 17:56:08 +000038{
Anna Zaks05dda472011-09-12 18:28:35 +000039 InObj.elem |= EEOne;
Anna Zaks295208d2011-09-12 17:56:08 +000040}
Jordan Rose783b11b2013-07-25 17:22:02 +000041
42
43// PR16690
44_Bool testLocAsIntegerToBool() {
45 return (long long)&testLocAsIntegerToBool;
46}