p1-emit.cpp revision 99ace16bc6962f1fc3dc45bbbdf2eb74e555a8ad
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// RUN: %clang_cc1 -emit-llvm -triple x86_64-apple-darwin10 -o - %s | FileCheck %s
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)template<typename T>
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct X {
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static T member1;
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static T member2;
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static T member3;
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)template<typename T>
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)T X<T>::member1;
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)template<typename T>
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)T X<T>::member2 = 17;
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// CHECK: @_ZN1XIiE7member1E = weak_odr global i32 0
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)template int X<int>::member1;
17868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// CHECK: @_ZN1XIiE7member2E = weak_odr global i32 17
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)template int X<int>::member2;
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// For implicit instantiation of
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)long& get(bool Cond1, bool Cond2) {
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // CHECK: @_ZN1XIlE7member1E = weak_odr global i64 0
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // CHECK: @_ZN1XIlE7member2E = weak_odr global i64 17
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // CHECK: @_ZN1XIlE7member3E = external global i64
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return Cond1? X<long>::member1
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)       : Cond2? X<long>::member2
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              : X<long>::member3;
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)