cxx-templates.cpp revision a865005c74019184e04f7fcdd4d61c31c095a4ff
1dd41c14bfd7686b556de2acf6952e21a4f80b7aaArgyrios Kyrtzidis// Test this without pch. 2a865005c74019184e04f7fcdd4d61c31c095a4ffArgyrios Kyrtzidis// RUN: %clang_cc1 -include %S/cxx-templates.h -verify %s -ast-dump 1>/dev/null 3a865005c74019184e04f7fcdd4d61c31c095a4ffArgyrios Kyrtzidis// RUN: %clang_cc1 -include %S/cxx-templates.h %s -emit-llvm -o - | FileCheck %s 490b715e0df34eae2b50b9b43ec60828ed31dcf94Argyrios Kyrtzidis 5dd41c14bfd7686b556de2acf6952e21a4f80b7aaArgyrios Kyrtzidis// Test with pch. 6dd41c14bfd7686b556de2acf6952e21a4f80b7aaArgyrios Kyrtzidis// RUN: %clang_cc1 -x c++-header -emit-pch -o %t %S/cxx-templates.h 7a865005c74019184e04f7fcdd4d61c31c095a4ffArgyrios Kyrtzidis// RUN: %clang_cc1 -include-pch %t -verify %s -ast-dump 1>/dev/null 8a865005c74019184e04f7fcdd4d61c31c095a4ffArgyrios Kyrtzidis// RUN: %clang_cc1 -include-pch %t %s -emit-llvm -o - | FileCheck %s 9a865005c74019184e04f7fcdd4d61c31c095a4ffArgyrios Kyrtzidis 10a865005c74019184e04f7fcdd4d61c31c095a4ffArgyrios Kyrtzidis// CHECK: define linkonce_odr void @_ZN2S3IiE1mEv 118dfbd8b252ba4e6cf4b7a3422f6ef0ca21312dfeArgyrios Kyrtzidis 128dfbd8b252ba4e6cf4b7a3422f6ef0ca21312dfeArgyrios Kyrtzidisstruct A { 138dfbd8b252ba4e6cf4b7a3422f6ef0ca21312dfeArgyrios Kyrtzidis typedef int type; 148dfbd8b252ba4e6cf4b7a3422f6ef0ca21312dfeArgyrios Kyrtzidis static void my_f(); 158dfbd8b252ba4e6cf4b7a3422f6ef0ca21312dfeArgyrios Kyrtzidis template <typename T> 168dfbd8b252ba4e6cf4b7a3422f6ef0ca21312dfeArgyrios Kyrtzidis static T my_templf(T x) { return x; } 178dfbd8b252ba4e6cf4b7a3422f6ef0ca21312dfeArgyrios Kyrtzidis}; 18f511ba6277d240bbee1064715da8362a6edee5f3Argyrios Kyrtzidis 19f511ba6277d240bbee1064715da8362a6edee5f3Argyrios Kyrtzidisvoid test() { 20b24e199fbd17af780ab000c5862d191e4daffc0fArgyrios Kyrtzidis int x = templ_f<int, 5>(3); 21dd41c14bfd7686b556de2acf6952e21a4f80b7aaArgyrios Kyrtzidis 22dd41c14bfd7686b556de2acf6952e21a4f80b7aaArgyrios Kyrtzidis S<char, float>::templ(); 23dd41c14bfd7686b556de2acf6952e21a4f80b7aaArgyrios Kyrtzidis S<int, char>::partial(); 24dd41c14bfd7686b556de2acf6952e21a4f80b7aaArgyrios Kyrtzidis S<int, float>::explicit_special(); 258dfbd8b252ba4e6cf4b7a3422f6ef0ca21312dfeArgyrios Kyrtzidis 268dfbd8b252ba4e6cf4b7a3422f6ef0ca21312dfeArgyrios Kyrtzidis Dep<A>::Ty ty; 278dfbd8b252ba4e6cf4b7a3422f6ef0ca21312dfeArgyrios Kyrtzidis Dep<A> a; 288dfbd8b252ba4e6cf4b7a3422f6ef0ca21312dfeArgyrios Kyrtzidis a.f(); 29a865005c74019184e04f7fcdd4d61c31c095a4ffArgyrios Kyrtzidis 30a865005c74019184e04f7fcdd4d61c31c095a4ffArgyrios Kyrtzidis S3<int> s3; 31a865005c74019184e04f7fcdd4d61c31c095a4ffArgyrios Kyrtzidis s3.m(); 32f511ba6277d240bbee1064715da8362a6edee5f3Argyrios Kyrtzidis} 33