// RUN: %clang_cc1 -analyze -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;
}
