// RUN: %clang_cc1 -emit-llvm %s -o %t

float test1(int cond, float a, float b) {
  return cond ? a : b;
}

double test2(int cond, float a, double b) {
  return cond ? a : b;
}

void f();

void test3(){
   1 ? f() : (void)0;
}

void test4() {
  int i; short j;
  float* k = 1 ? &i : &j;
}

void test5() {
  const int* cip;
  void* vp;
  cip = 0 ? vp : cip;
}

void test6();
void test7(int);
void* test8() {return 1 ? test6 : test7;}


void _efree(void *ptr);

void _php_stream_free3() {
  (1 ? free(0) : _efree(0));
}

void _php_stream_free4() {
  1 ? _efree(0) : free(0);
}

// PR5526
struct test9 { int a; };
void* test9spare();
void test9(struct test9 *p) {
  p ? p : test9spare();
}

