| // RUN: %clang_analyze_cc1 -verify %s -fblocks \ |
| // RUN: -analyzer-checker=core \ |
| // RUN: -analyzer-output=text |
| |
| int* stack_addr_escape_base() { |
| int x = 0; |
| // FIXME: This shouldn't be tied to a modeling checker. |
| return &x; // expected-warning{{Address of stack memory associated with local variable 'x' returned to caller [core.StackAddressEscape]}} |
| // expected-note-re@-1{{{{^Address of stack memory associated with local variable 'x' returned to caller$}}}} |
| // Just a regular compiler warning. |
| // expected-warning@-3{{address of stack memory associated with local variable 'x' returned}} |
| } |
| |
| char const *p; |
| |
| void f0() { |
| char const str[] = "This will change"; |
| p = str; |
| } // 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]}} |
| // 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}} |