brintos

brintos / llvm-project-archived public Read only

0
0
Text · 894 B · 0e77637 Raw
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