34 lines
459 B
C++
34 lines
459 B
C++
|
// RUN: %clang_cc1 %s -emit-llvm -triple i686-pc-linux -o - -chain-include %s -chain-include %s | FileCheck %s
|
||
|
// CHECK: define linkonce_odr %{{[^ ]+}} @_ZN1AI1BE3getEv
|
||
|
#if !defined(PASS1)
|
||
|
#define PASS1
|
||
|
|
||
|
template <typename Derived>
|
||
|
struct A {
|
||
|
Derived* get() { return 0; }
|
||
|
};
|
||
|
|
||
|
struct B : A<B> {
|
||
|
};
|
||
|
|
||
|
#elif !defined(PASS2)
|
||
|
#define PASS2
|
||
|
|
||
|
struct C : B {
|
||
|
};
|
||
|
|
||
|
struct D : C {
|
||
|
void run() {
|
||
|
(void)get();
|
||
|
}
|
||
|
};
|
||
|
|
||
|
#else
|
||
|
|
||
|
int main() {
|
||
|
D d;
|
||
|
d.run();
|
||
|
}
|
||
|
|
||
|
#endif
|