'Inputs' subdirectory. The general desire has been to have essentially all of the non-test input files live in such directories, with some exceptions for obvious and common patterns like 'foo.c' using 'foo.h'. This came up because our distributed test runner couldn't find some of the headers, for example with stl.cpp. No functionality changed, just shuffling around here. llvm-svn: 163674
30 lines
931 B
C++
30 lines
931 B
C++
// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix.Malloc,debug.ExprInspection -analyzer-ipa=dynamic -analyzer-config c++-stdlib-inlining=false -verify %s
|
|
// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix.Malloc,debug.ExprInspection -analyzer-ipa=dynamic -analyzer-config c++-stdlib-inlining=true -DINLINE=1 -verify %s
|
|
|
|
#include "../Inputs/system-header-simulator-cxx.h"
|
|
|
|
void clang_analyzer_eval(bool);
|
|
|
|
void testVector(std::vector<int> &nums) {
|
|
if (nums.begin()) return;
|
|
if (nums.end()) return;
|
|
|
|
clang_analyzer_eval(nums.size() == 0);
|
|
#if INLINE
|
|
// expected-warning@-2 {{TRUE}}
|
|
#else
|
|
// expected-warning@-4 {{UNKNOWN}}
|
|
#endif
|
|
}
|
|
|
|
void testException(std::exception e) {
|
|
// Notice that the argument is NOT passed by reference, so we can devirtualize.
|
|
const char *x = e.what();
|
|
clang_analyzer_eval(x == 0);
|
|
#if INLINE
|
|
// expected-warning@-2 {{TRUE}}
|
|
#else
|
|
// expected-warning@-4 {{UNKNOWN}}
|
|
#endif
|
|
}
|