29 lines · cpp
1// RUN: %clang_cc1 -emit-llvm -triple x86_64-apple-darwin10.0.0 -o - %s | FileCheck %s2 3// PR70504template<class T> struct X0 : public T { };5 6template <class T>7struct X18{9 static T & instance;10 // include this to provoke instantiation at pre-execution time11 static void use(T const &) {}12 static T & get() {13 static X0<T> t;14 use(instance);15 return static_cast<T &>(t);16 }17};18 19// CHECK: @_ZN2X1I2X2I1BEE8instanceE = linkonce_odr global ptr null, align 820// CHECJ: @_ZN2X1I2X2I1AEE8instanceE = linkonce_odr global ptr null, align 821template<class T> T & X1<T>::instance = X1<T>::get();22 23class A { };24class B : public A { };25 26template<typename T> struct X2 {};27X2< B > bg = X1< X2< B > >::get(); 28X2< A > ag = X1< X2< A > >::get();29