// RUN: %clang_cc1 -std=c++17 %s -triple x86_64-linux-gnu -emit-llvm -o - | FileCheck %s --implicit-check-not='call{{.*}}dtor'
void ;
;
dtor ;
auto &&lambda = ;
// CHECK-LABEL: define
// CHECK: call {{.*}}ctor
// CHECK: call {{.*}}atexit{{.*}}global_array_dtor
// CHECK-LABEL: define{{.*}}global_array_dtor
// CHECK: call {{.*}}dtor
// [lifetime extension occurs if the object was obtained by]
// -- a temporary materialization conversion
// CHECK-LABEL: ref_binding
void
// -- ( expression )
// CHECK-LABEL: parens
void
// -- subscripting of an array
// CHECK-LABEL: array_subscript_1
void
// CHECK-LABEL: array_subscript_2
void
;
;
// -- a class member access using the . operator [...]
// CHECK-LABEL: member_access_1
void
// CHECK-LABEL: member_access_2
void
// CHECK-LABEL: member_access_3
void
// -- a pointer-to-member operation using the .* operator [...]
// CHECK-LABEL: member_ptr_access_1
void
// CHECK-LABEL: member_ptr_access_2
void
// -- a [named] cast [...]
// CHECK-LABEL: static_cast
void
// CHECK-LABEL: const_cast
void
// CHECK-LABEL: reinterpret_cast
void
// CHECK-LABEL: dynamic_cast
void
// -- [explicit cast notation is defined in terms of the above]
// CHECK-LABEL: c_style_cast
void
// CHECK-LABEL: function_style_cast
void
// -- a conditional operator
// CHECK-LABEL: conditional
void
// -- a comma expression
// CHECK-LABEL: comma
void
// This applies recursively: if an object is lifetime-extended and contains a
// reference, the referent is also extended.
// CHECK-LABEL: init_capture_ref
void
// CHECK-LABEL: init_capture_ref_indirect
void
// CHECK-LABEL: init_capture_init_list
void