1*882ce178SVitaly Buka // RUN: %clangxx_asan -O1 -fsanitize-address-use-after-scope %s -o %t && \
2673dc3d4SNico Weber // RUN:     not %run %t 2>&1 | FileCheck %s
3673dc3d4SNico Weber 
4673dc3d4SNico Weber #include <functional>
5673dc3d4SNico Weber 
main()6673dc3d4SNico Weber int main() {
7673dc3d4SNico Weber   std::function<int()> f;
8673dc3d4SNico Weber   {
9673dc3d4SNico Weber     int x = 0;
10f59311e3SArthur Eubanks     f = [&x]() __attribute__((noinline)) {
11673dc3d4SNico Weber       return x;  // BOOM
12673dc3d4SNico Weber       // CHECK: ERROR: AddressSanitizer: stack-use-after-scope
13673dc3d4SNico Weber       // CHECK: #0 0x{{.*}} in {{.*}}use-after-scope-capture.cpp:[[@LINE-2]]
14673dc3d4SNico Weber     };
15673dc3d4SNico Weber   }
16673dc3d4SNico Weber   return f();  // BOOM
17673dc3d4SNico Weber }
18