Mercurial > hg > CbC > CbC_llvm
view clang/test/Analysis/null-deref-static.m @ 222:81f6424ef0e3 llvm-original
LLVM original branch
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 18 Jul 2021 22:10:01 +0900 |
parents | 1d019706d866 |
children | c4bab56944e8 |
line wrap: on
line source
// RUN: %clang_cc1 -w -fblocks -analyze -analyzer-checker=core,deadcode,alpha.core,debug.ExprInspection -verify %s void *malloc(unsigned long); void clang_analyzer_warnIfReached(); void test_static_from_block() { static int *x; ^{ *x; // no-warning }; } void test_static_within_block() { ^{ static int *x; *x; // expected-warning{{Dereference of null pointer}} }; } void test_static_control_flow(int y) { static int *x; if (x) { // FIXME: Should be reachable. clang_analyzer_warnIfReached(); // no-warning } if (y) { // We are not sure if this branch is possible, because the developer // may argue that function is always called with y == 1 for the first time. // In this case, we can only advise the developer to add assertions // for suppressing such path. *x; // expected-warning{{Dereference of null pointer}} } else { x = malloc(1); } }