// RUN: %clang_cc1 -analyze -analyzer-checker=core -verify %s

int f1(char *dst) {
  char *p = dst + 4;
  char *q = dst + 3;
  return !(q >= p);
}

long f2(char *c) {
  return long(c) & 1;
}

bool f3() {
  return !false;
}

void *f4(int* w) {
  return reinterpret_cast<void*&>(w);
}

namespace {

struct A { };
struct B {
  operator A() { return A(); }
};

A f(char *dst) {
  B b;
  return b;
}

}

namespace {

struct S {
    void *p;
};

void *f(S* w) {
    return &reinterpret_cast<void*&>(*w);
}

}
