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 
6 template <typename Derived>
7 struct A {
getA8   Derived* get() { return 0; }
9 };
10 
11 struct B : A<B> {
12 };
13 
14 #elif !defined(PASS2)
15 #define PASS2
16 
17 struct C : B {
18 };
19 
20 struct D : C {
runD21   void run() {
22     (void)get();
23   }
24 };
25 
26 #else
27 
main()28 int main() {
29   D d;
30   d.run();
31 }
32 
33 #endif
34