26 lines · cpp
1// RUN: %clang_analyze_cc1 -analyzer-checker=core -verify %s2 3using size_t = decltype(sizeof(int));4void *operator new(size_t, void *p) { return p; }5 6struct myfunction {7 union storage_t {8 char buffer[100];9 size_t max_align;10 } storage;11 12 template <typename Func> myfunction(Func fn) {13 new (&storage.buffer) Func(fn);14 }15 void operator()();16};17 18myfunction create_func() {19 int n;20 auto c = [&n] {};21 return c; // expected-warning {{Address of stack memory associated with local variable 'n' returned to caller}} expected-warning{{Address of stack memory associated with local variable 'n' is still referred to by a temporary object on the stack upon returning to the caller. This will be a dangling reference}}22}23void gh_66221() {24 create_func()();25}26