mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-30 08:26:07 +00:00

without prototypes. This patch converts the function signatures to have a prototype for the situations where the test is not specific to K&R C declarations. e.g., void func(); becomes void func(void); This is the ninth batch of tests being updated (there are a significant number of other tests left to be updated).
30 lines
729 B
C
30 lines
729 B
C
// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -verify %s
|
|
|
|
void clang_analyzer_eval(int);
|
|
|
|
void callee(void **p) {
|
|
int x;
|
|
*p = &x;
|
|
// expected-warning@-1 {{Address of stack memory associated with local \
|
|
variable 'x' is still referred to by the stack variable 'arr' upon \
|
|
returning to the caller}}
|
|
}
|
|
|
|
void loop(void) {
|
|
void *arr[2];
|
|
for (int i = 0; i < 2; ++i)
|
|
callee(&arr[i]);
|
|
// FIXME: Should be UNKNOWN.
|
|
clang_analyzer_eval(arr[0] == arr[1]); // expected-warning{{FALSE}}
|
|
}
|
|
|
|
void loopWithCall(void) {
|
|
void *arr[2];
|
|
for (int i = 0; i < 2; ++i) {
|
|
int x;
|
|
arr[i] = &x;
|
|
}
|
|
// FIXME: Should be UNKNOWN.
|
|
clang_analyzer_eval(arr[0] == arr[1]); // expected-warning{{TRUE}}
|
|
}
|