62 lines · cpp
1// RUN: %clang_analyze_cc1 -verify %s -analyzer-config eagerly-assume=false \2// RUN: -analyzer-checker=core,debug.ExprInspection3 4void clang_analyzer_eval(bool);5 6void element_constant() {7 char arr[10];8 clang_analyzer_eval(arr + 1 > arr); // expected-warning{{TRUE}}9}10 11void element_known() {12 char arr[10];13 int off = 1;14 clang_analyzer_eval(arr + off > arr); // expected-warning{{TRUE}}15}16 17void element_constrained(int off) {18 char arr[10];19 if (off == 1) {20 clang_analyzer_eval(arr + off > arr); // expected-warning{{TRUE}}21 }22}23 24void element_unknown(int off) {25 char arr[10];26 clang_analyzer_eval(arr + off > arr); // expected-warning{{UNKNOWN}}27}28 29void element_complex(int off) {30 char arr[10];31 int comp = off * 2;32 if (off == 1) {33 clang_analyzer_eval(arr + comp); // expected-warning{{TRUE}}34 }35}36 37void base_constant(int *arr) {38 clang_analyzer_eval(arr + 1 > arr); // expected-warning{{TRUE}}39}40 41void base_known(int *arr) {42 int off = 1;43 clang_analyzer_eval(arr + off > arr); // expected-warning{{TRUE}}44}45 46void base_constrained(int *arr, int off) {47 if (off == 1) {48 clang_analyzer_eval(arr + off > arr); // expected-warning{{TRUE}}49 }50}51 52void base_unknown(int *arr, int off) {53 clang_analyzer_eval(arr + off > arr); // expected-warning{{UNKNOWN}}54}55 56void base_complex(int *arr, int off) {57 int comp = off * 2;58 if (off == 1) {59 clang_analyzer_eval(arr + comp > arr); // expected-warning{{TRUE}}60 }61}62