brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.3 KiB · e88e3c9 Raw
66 lines · c
1// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-output=text -verify %s2// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-output=plist-multi-file  %s -o %t.plist3// RUN: %normalize_plist <%t.plist | diff -ub %S/Inputs/expected-plists/undef-value-param.c.plist -4 5void foo_irrelevant(int c) {6    if (c)7        return;8    c++;9    return;10}11void foo(int c, int *x) {12    if (c)13           //expected-note@-1{{Assuming 'c' is not equal to 0}}14           //expected-note@-2{{Taking true branch}}15           return; // expected-note{{Returning without writing to '*x'}}16    *x = 5;17}18 19int use(int c) {20    int xx; //expected-note {{'xx' declared without an initial value}}21    int *y = &xx;22    foo (c, y);23                //expected-note@-1{{Calling 'foo'}}24                //expected-note@-2{{Returning from 'foo'}}25    foo_irrelevant(c);26    return xx+3; //expected-warning{{The left operand of '+' is a garbage value}}27                 //expected-note@-1{{The left operand of '+' is a garbage value}}28}29 30void initArray(int x, double XYZ[3]) {31    if (x <= 0) //expected-note {{Taking true branch}}32                //expected-note@-1 {{Assuming 'x' is <= 0}}33        return;34    XYZ[0] = 1;35    XYZ[1] = 1;36    XYZ[2] = 1;37}38int testPassingParentRegionArray(int x) {39    double XYZ[3];40    initArray(x, XYZ); //expected-note {{Calling 'initArray'}}41                       //expected-note@-1 {{Returning from 'initArray'}}42    return 1 * XYZ[1]; //expected-warning {{The right operand of '*' is a garbage value}}43                       //expected-note@-1 {{The right operand of '*' is a garbage value}}44}45 46double *getValidPtr(void);47struct WithFields {48  double *f1;49};50void initStruct(int x, struct WithFields *X) {51  if (x <= 0) //expected-note {{Taking true branch}}52              //expected-note@-1 {{Assuming 'x' is <= 0}}53 54    return; //expected-note{{Returning without writing to 'X->f1'}}55  X->f1 = getValidPtr();56}57double testPassingParentRegionStruct(int x) {58  struct WithFields st;59  st.f1 = 0; // expected-note {{Null pointer value stored to 'st.f1'}}60  initStruct(x, &st); //expected-note {{Calling 'initStruct'}}61                      //expected-note@-1 {{Returning from 'initStruct'}}62  return (*st.f1); //expected-warning {{Dereference of null pointer}}63                   //expected-note@-1{{Dereference of null pointer (loaded from field 'f1')}}64}65 66