blob: 8e89b1da462b9f1b983ab01933e66c35dc260ef0 [file] [log] [blame]
Argyrios Kyrtzidisdd41c142010-06-23 13:48:30 +00001// Test this without pch.
Argyrios Kyrtzidisa8650052010-08-03 17:30:10 +00002// RUN: %clang_cc1 -include %S/cxx-templates.h -verify %s -ast-dump 1>/dev/null
3// RUN: %clang_cc1 -include %S/cxx-templates.h %s -emit-llvm -o - | FileCheck %s
Argyrios Kyrtzidis90b715e2010-06-19 19:28:53 +00004
Argyrios Kyrtzidisdd41c142010-06-23 13:48:30 +00005// Test with pch.
6// RUN: %clang_cc1 -x c++-header -emit-pch -o %t %S/cxx-templates.h
Argyrios Kyrtzidisa8650052010-08-03 17:30:10 +00007// RUN: %clang_cc1 -include-pch %t -verify %s -ast-dump 1>/dev/null
8// RUN: %clang_cc1 -include-pch %t %s -emit-llvm -o - | FileCheck %s
9
10// CHECK: define linkonce_odr void @_ZN2S3IiE1mEv
Argyrios Kyrtzidis8dfbd8b2010-06-24 08:57:31 +000011
12struct A {
13 typedef int type;
14 static void my_f();
15 template <typename T>
16 static T my_templf(T x) { return x; }
17};
Argyrios Kyrtzidisf511ba62010-06-22 09:55:07 +000018
19void test() {
Argyrios Kyrtzidisb24e1992010-06-25 16:25:09 +000020 int x = templ_f<int, 5>(3);
Argyrios Kyrtzidisdd41c142010-06-23 13:48:30 +000021
22 S<char, float>::templ();
23 S<int, char>::partial();
24 S<int, float>::explicit_special();
Argyrios Kyrtzidis8dfbd8b2010-06-24 08:57:31 +000025
26 Dep<A>::Ty ty;
27 Dep<A> a;
28 a.f();
Argyrios Kyrtzidisa8650052010-08-03 17:30:10 +000029
30 S3<int> s3;
31 s3.m();
Argyrios Kyrtzidisf511ba62010-06-22 09:55:07 +000032}