minix/external/bsd/llvm/dist/clang/test/Analysis/exceptions.mm
Lionel Sambuc f4a2713ac8 Importing netbsd clang -- pristine
Change-Id: Ia40e9ffdf29b5dab2f122f673ff6802a58bc690f
2014-07-28 17:05:57 +02:00

38 lines
895 B
Text

// 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
}