1 // RUN: %clang_analyze_cc1 -analyzer-output=plist -o %t.plist -std=c++11 -analyzer-checker=core %s 2 // RUN: FileCheck --input-file=%t.plist %s 3 4 bool ret(); 5 6 template <class T> f(int i)7void f(int i) { 8 if (ret()) 9 i = i / (i - 5); 10 } 11 12 template <> f(int i)13void f<int>(int i) { 14 if (ret()) 15 i = i / (i - 5); 16 } 17 18 template <int N = 0> defaultTemplateParameterFunction(int i)19void defaultTemplateParameterFunction(int i) { 20 if (ret()) 21 int a = 10 / i; 22 } 23 24 template <typename... Args> variadicTemplateFunction(int i)25void variadicTemplateFunction(int i) { 26 if (ret()) 27 int a = 10 / i; 28 } 29 main()30int main() { 31 f<int>(5); 32 f<float>(5); 33 defaultTemplateParameterFunction<>(0); 34 variadicTemplateFunction<char, float, double, int *>(0); 35 } 36 37 // CHECK: <string>Calling 'f<float>'</string> 38 // CHECK: <string>Calling 'f<int>'</string> 39 // CHECK: <string>Calling 'defaultTemplateParameterFunction<0>'</string> 40 // CHECK: <string>Calling 'variadicTemplateFunction<char, float, double, int *>'</string> 41 42