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