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