Jordan Rose 4d9fbd7ec4 [analyzer] -analyzer-ipa=inlining is now the default. Remove it from tests.
The actual change here is a little more complicated than the summary above.
What we want to do is have our generic inlining tests run under whatever
mode is the default. However, there are some tests that depend on the
presence of C++ inlining, which still has some rough edges. These tests have
been explicitly marked as -analyzer-ipa=inlining in preparation for a new
mode that limits inlining to C functions and blocks. This will be the
default until the false positives for C++ have been brought down to
manageable levels.

llvm-svn: 162317
2012-08-21 21:44:07 +00:00

39 lines
895 B
Plaintext

// RUN: %clang_cc1 -analyze -fexceptions -fobjc-exceptions -fcxx-exceptions -analyzer-checker=core,unix.Malloc,debug.ExprInspection -verify %s
void clang_analyzer_checkInlined(bool);
typedef typeof(sizeof(int)) size_t;
void *malloc(size_t);
void free(void *);
id getException();
void inlinedObjC() {
clang_analyzer_checkInlined(true); // expected-warning{{TRUE}}
@throw getException();
}
int testObjC() {
int a; // uninitialized
void *mem = malloc(4); // no-warning (ObjC exceptions are usually fatal)
inlinedObjC();
free(mem);
return a; // no-warning
}
void inlinedCXX() {
clang_analyzer_checkInlined(true); // expected-warning{{TRUE}}
throw -1;
}
int testCXX() {
int a; // uninitialized
// FIXME: this should be reported as a leak, because C++ exceptions are
// often not fatal.
void *mem = malloc(4);
inlinedCXX();
free(mem);
return a; // no-warning
}