// RUN: %clang_cc1 %s -emit-llvm -o - -chain-include %s -chain-include %s

#if !defined(PASS1)
#define PASS1
struct X {
  operator int*();
};

struct Z {
  operator int*();
};
#elif !defined(PASS2)
#define PASS2
struct Y {
  operator int *();
};
#else
int main() {
  X x;
  int *ip = x.operator int*();
  Y y;
  int *ip2 = y.operator int*();
  Z z;
  int *ip3 = z.operator int*();
}
#endif