1*3b65ed0aSDouglas Gregor // RUN: %clang_cc1 %s -emit-llvm -o - -chain-include %s -chain-include %s
2*3b65ed0aSDouglas Gregor 
3*3b65ed0aSDouglas Gregor #if !defined(PASS1)
4*3b65ed0aSDouglas Gregor #define PASS1
5*3b65ed0aSDouglas Gregor struct X {
6*3b65ed0aSDouglas Gregor   operator int*();
7*3b65ed0aSDouglas Gregor };
8*3b65ed0aSDouglas Gregor 
9*3b65ed0aSDouglas Gregor struct Z {
10*3b65ed0aSDouglas Gregor   operator int*();
11*3b65ed0aSDouglas Gregor };
12*3b65ed0aSDouglas Gregor #elif !defined(PASS2)
13*3b65ed0aSDouglas Gregor #define PASS2
14*3b65ed0aSDouglas Gregor struct Y {
15*3b65ed0aSDouglas Gregor   operator int *();
16*3b65ed0aSDouglas Gregor };
17*3b65ed0aSDouglas Gregor #else
main()18*3b65ed0aSDouglas Gregor int main() {
19*3b65ed0aSDouglas Gregor   X x;
20*3b65ed0aSDouglas Gregor   int *ip = x.operator int*();
21*3b65ed0aSDouglas Gregor   Y y;
22*3b65ed0aSDouglas Gregor   int *ip2 = y.operator int*();
23*3b65ed0aSDouglas Gregor   Z z;
24*3b65ed0aSDouglas Gregor   int *ip3 = z.operator int*();
25*3b65ed0aSDouglas Gregor }
26*3b65ed0aSDouglas Gregor #endif
27