39 lines · plain
1// RUN: %clang_analyze_cc1 -fexceptions -fobjc-exceptions -fcxx-exceptions -analyzer-checker=core,unix.Malloc,debug.ExprInspection -verify %s2 3void clang_analyzer_checkInlined(bool);4 5typedef typeof(sizeof(int)) size_t;6void *malloc(size_t);7void free(void *);8 9 10id getException();11void inlinedObjC() {12 clang_analyzer_checkInlined(true); // expected-warning{{TRUE}}13 @throw getException();14}15 16int testObjC() {17 int a; // uninitialized18 void *mem = malloc(4); // no-warning (ObjC exceptions are usually fatal)19 inlinedObjC();20 free(mem);21 return a; // no-warning22}23 24 25void inlinedCXX() {26 clang_analyzer_checkInlined(true); // expected-warning{{TRUE}}27 throw -1;28}29 30int testCXX() {31 int a; // uninitialized32 // FIXME: this should be reported as a leak, because C++ exceptions are33 // often not fatal.34 void *mem = malloc(4);35 inlinedCXX();36 free(mem);37 return a; // no-warning38}39