| // RUN: %clang_analyze_cc1 -analyzer-output=plist -o %t.plist -std=c++11 -analyzer-checker=core %s |
| // RUN: FileCheck --input-file=%t.plist %s |
| |
| bool ret(); |
| |
| template <class T> |
| void f(int i) { |
| if (ret()) |
| i = i / (i - 5); |
| } |
| |
| template <> |
| void f<int>(int i) { |
| if (ret()) |
| i = i / (i - 5); |
| } |
| |
| template <int N = 0> |
| void defaultTemplateParameterFunction(int i) { |
| if (ret()) |
| int a = 10 / i; |
| } |
| |
| template <typename... Args> |
| void variadicTemplateFunction(int i) { |
| if (ret()) |
| int a = 10 / i; |
| } |
| |
| int main() { |
| f<int>(5); |
| f<float>(5); |
| defaultTemplateParameterFunction<>(0); |
| variadicTemplateFunction<char, float, double, int *>(0); |
| } |
| |
| // CHECK: <string>Calling 'f<float>'</string> |
| // CHECK: <string>Calling 'f<int>'</string> |
| // CHECK: <string>Calling 'defaultTemplateParameterFunction<0>'</string> |
| // CHECK: <string>Calling 'variadicTemplateFunction<char, float, double, int *>'</string> |
| |