blob: 9854a503fc4f62ede4b3192440635ecac3b4ce57 [file] [log] [blame]
Kirstóf Umanna2b6ece2020-03-20 16:45:53 +01001// RUN: %clang_analyze_cc1 -verify %s -fblocks \
2// RUN: -analyzer-checker=core \
3// RUN: -analyzer-output=text
4
5int* stack_addr_escape_base() {
6 int x = 0;
7 // FIXME: This shouldn't be tied to a modeling checker.
Kirstóf Umann3a6ee4f2020-04-11 00:21:48 +02008 return &x; // expected-warning{{Address of stack memory associated with local variable 'x' returned to caller [core.StackAddressEscape]}}
Kirstóf Umanna2b6ece2020-03-20 16:45:53 +01009 // expected-note-re@-1{{{{^Address of stack memory associated with local variable 'x' returned to caller$}}}}
10 // Just a regular compiler warning.
11 // expected-warning@-3{{address of stack memory associated with local variable 'x' returned}}
12}
13
Kirstóf Umann3a6ee4f2020-04-11 00:21:48 +020014char const *p;
15
16void f0() {
17 char const str[] = "This will change";
18 p = str;
19} // expected-warning{{Address of stack memory associated with local variable 'str' is still referred to by the global variable 'p' upon returning to the caller. This will be a dangling reference [core.StackAddressEscape]}}
20// expected-note@-1{{Address of stack memory associated with local variable 'str' is still referred to by the global variable 'p' upon returning to the caller. This will be a dangling reference}}