It was known to be a compile-time constant so it wasn't evaluated during symbolic execution, but it wasn't evaluated as a compile-time constant either. Differential Revision: https://reviews.llvm.org/D66565 llvm-svn: 370245
16 lines
397 B
C++
16 lines
397 B
C++
// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection \
|
|
// RUN: -verify %s
|
|
|
|
typedef __typeof(sizeof(int)) size_t;
|
|
|
|
void clang_analyzer_eval(bool);
|
|
|
|
template <int... N> size_t foo() {
|
|
return sizeof...(N);
|
|
}
|
|
|
|
void bar() {
|
|
clang_analyzer_eval(foo<>() == 0); // expected-warning{{TRUE}}
|
|
clang_analyzer_eval(foo<1, 2, 3>() == 3); // expected-warning{{TRUE}}
|
|
}
|