1a5728872c7702ddd09537c95bc3cbd20e1f2fb09Daniel Dunbar// RUN: %clang_cc1 -emit-llvm -triple x86_64-apple-darwin10 -o - %s | FileCheck %s 21028c9f0afc1cc5f4951b39b7067fa57c1fea07bDouglas Gregortemplate<typename T> 31028c9f0afc1cc5f4951b39b7067fa57c1fea07bDouglas Gregorstruct X { 41028c9f0afc1cc5f4951b39b7067fa57c1fea07bDouglas Gregor static T member1; 51028c9f0afc1cc5f4951b39b7067fa57c1fea07bDouglas Gregor static T member2; 61028c9f0afc1cc5f4951b39b7067fa57c1fea07bDouglas Gregor static T member3; 71028c9f0afc1cc5f4951b39b7067fa57c1fea07bDouglas Gregor}; 81028c9f0afc1cc5f4951b39b7067fa57c1fea07bDouglas Gregor 91028c9f0afc1cc5f4951b39b7067fa57c1fea07bDouglas Gregortemplate<typename T> 101028c9f0afc1cc5f4951b39b7067fa57c1fea07bDouglas GregorT X<T>::member1; 111028c9f0afc1cc5f4951b39b7067fa57c1fea07bDouglas Gregor 121028c9f0afc1cc5f4951b39b7067fa57c1fea07bDouglas Gregortemplate<typename T> 131028c9f0afc1cc5f4951b39b7067fa57c1fea07bDouglas GregorT X<T>::member2 = 17; 141028c9f0afc1cc5f4951b39b7067fa57c1fea07bDouglas Gregor 1599ace16bc6962f1fc3dc45bbbdf2eb74e555a8adJohn McCall// CHECK: @_ZN1XIiE7member1E = weak_odr global i32 0 161028c9f0afc1cc5f4951b39b7067fa57c1fea07bDouglas Gregortemplate int X<int>::member1; 171028c9f0afc1cc5f4951b39b7067fa57c1fea07bDouglas Gregor 1899ace16bc6962f1fc3dc45bbbdf2eb74e555a8adJohn McCall// CHECK: @_ZN1XIiE7member2E = weak_odr global i32 17 191028c9f0afc1cc5f4951b39b7067fa57c1fea07bDouglas Gregortemplate int X<int>::member2; 201028c9f0afc1cc5f4951b39b7067fa57c1fea07bDouglas Gregor 211028c9f0afc1cc5f4951b39b7067fa57c1fea07bDouglas Gregor// For implicit instantiation of 229ada570e77bdd8334a86528b07e5569d00750b3cDouglas Gregorlong& get(bool Cond1, bool Cond2) { 236bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: @_ZN1XIlE7member1E = linkonce_odr global i64 0 246bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: @_ZN1XIlE7member2E = linkonce_odr global i64 17 259ada570e77bdd8334a86528b07e5569d00750b3cDouglas Gregor // CHECK: @_ZN1XIlE7member3E = external global i64 269ada570e77bdd8334a86528b07e5569d00750b3cDouglas Gregor return Cond1? X<long>::member1 279ada570e77bdd8334a86528b07e5569d00750b3cDouglas Gregor : Cond2? X<long>::member2 289ada570e77bdd8334a86528b07e5569d00750b3cDouglas Gregor : X<long>::member3; 299ada570e77bdd8334a86528b07e5569d00750b3cDouglas Gregor} 30