1// RUN: %clang_cc1 %s -emit-llvm -triple i686-pc-linux -o - -chain-include %s -chain-include %s | FileCheck %s
2// CHECK: define linkonce_odr %{{[^ ]+}} @_ZN1AI1BE3getEv
3#if !defined(PASS1)
4#define PASS1
5
6template <typename Derived>
7struct A {
8  Derived* get() { return 0; }
9};
10
11struct B : A<B> {
12};
13
14#elif !defined(PASS2)
15#define PASS2
16
17struct C : B {
18};
19
20struct D : C {
21  void run() {
22    (void)get();
23  }
24};
25
26#else
27
28int main() {
29  D d;
30  d.run();
31}
32
33#endif
34