1// RUN: %clang_cc1 %s -emit-llvm -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