| // RUN: %clang_cc1 %s -triple=%itanium_abi_triple -O1 -emit-llvm -fextend-variable-liveness -o - | FileCheck %s |
| // Make sure we don't crash compiling a lambda that is not nested in a function. |
| // We also check that fake uses are properly issued in lambdas. |
| const int S::a = [](int b) __attribute__((noinline)) { |
| return ([=](int lambdaparm) __attribute__((noinline))->int { |
| int lambdalocal = lambdaparm * 2; |
| // We are looking for the first lambda's call operator, which should contain |
| // 2 fake uses, one for 'b' and one for its 'this' pointer (in that order). |
| // The mangled function name contains a $_0, followed by 'cl'. |
| // This lambda is an orphaned lambda, i.e. one without lexical parent. |
| // CHECK-LABEL: define internal {{.+\"_Z.+\$_0.*cl.*\"}} |
| // The second lambda. We are looking for 3 fake uses. |
| // CHECK-LABEL: define internal {{.+\"_Z.+\$_0.*cl.*\"}} |