// RUN: %clang_cc1 -no-opaque-pointers -O0 -fsanitize=memory -fsanitize-memory-use-after-dtor -disable-llvm-passes -std=c++20 -triple=x86_64-pc-linux -emit-llvm -o - %s | FileCheck %s --implicit-check-not "call void @__sanitizer_dtor_callback"
// RUN: %clang_cc1 -no-opaque-pointers -O1 -fsanitize=memory -fsanitize-memory-use-after-dtor -disable-llvm-passes -std=c++20 -triple=x86_64-pc-linux -emit-llvm -o - %s | FileCheck %s --implicit-check-not "call void @__sanitizer_dtor_callback"

struct Empty {};

struct EmptyNonTrivial {
  ~EmptyNonTrivial();
};

struct Trivial {
  int a;
  char c;
};
static_assert(sizeof(Trivial) == 8);

struct NonTrivial {
  int a;
  char c;
  ~NonTrivial();
};
static_assert(sizeof(NonTrivial) == 8);

namespace T0 {
struct Struct {
  Trivial f1;
  int f2;
  char f3;
  ~Struct(){};
} var;
static_assert(sizeof(Struct) == 16);
} // namespace T0
// CHECK-LABEL: define {{.*}} @_ZN2T06StructD2Ev(
// CHECK:         call void @__sanitizer_dtor_callback(i8* {{.*}}, i64 13)
// CHECK-NEXT:    ret void

namespace empty {
namespace T1 {
struct Struct {
  NonTrivial nt;
  Trivial f1;
  int f2;
  char f3;
} var;
static_assert(sizeof(Struct) == 24);
} // namespace T1
// CHECK-LABEL: define {{.*}} @_ZN5empty2T16StructD2Ev(
// CHECK:         [[GEP:%.+]] = getelementptr i8, {{.*}}, i64 8{{$}}
// CHECK:         call void @__sanitizer_dtor_callback(i8* [[GEP]], i64 13)
// CHECK:         call void @_ZN10NonTrivialD1Ev(
// CHECK-NEXT:    ret void

namespace T2 {
struct Struct {
  Trivial f1;
  NonTrivial nt;
  int f2;
  char f3;
} var;
static_assert(sizeof(Struct) == 24);
} // namespace T2
// CHECK-LABEL: define {{.*}} @_ZN5empty2T26StructD2Ev(
// CHECK:         [[GEP1:%.+]] = getelementptr i8, {{.*}}, i64 16{{$}}
// CHECK:         call void @__sanitizer_dtor_callback(i8* [[GEP1]], i64 5)
// CHECK:         call void @_ZN10NonTrivialD1Ev(
// CHECK:         [[GEP2:%.+]] = getelementptr i8, {{.*}}, i64 0{{$}}
// CHECK:         call void @__sanitizer_dtor_callback(i8* [[GEP2]], i64 8)
// CHECK-NEXT:    ret void

namespace T3 {
struct Struct {
  Trivial f1;
  int f2;
  NonTrivial nt;
  char f3;
} var;
static_assert(sizeof(Struct) == 24);
} // namespace T3
// CHECK-LABEL: define {{.*}} @_ZN5empty2T36StructD2Ev(
// CHECK:         [[GEP1:%.+]] = getelementptr i8, {{.*}}, i64 20{{$}}
// CHECK:         call void @__sanitizer_dtor_callback(i8* [[GEP1]], i64 1)
// CHECK:         call void @_ZN10NonTrivialD1Ev(
// CHECK:         [[GEP2:%.+]] = getelementptr i8, {{.*}}, i64 0{{$}}
// CHECK:         call void @__sanitizer_dtor_callback(i8* [[GEP2]], i64 12)
// CHECK-NEXT:    ret void

namespace T4 {
struct Struct {
  Trivial f1;
  int f2;
  char f3;
  NonTrivial nt;
} var;
static_assert(sizeof(Struct) == 24);
} // namespace T4
// CHECK-LABEL: define {{.*}} @_ZN5empty2T46StructD2Ev(
// CHECK:         call void @__sanitizer_dtor_callback(i8* {{.*}}, i64 16)
// CHECK-NEXT:    ret void

namespace T5 {
struct Struct {
  [[no_unique_address]] Empty e;
  NonTrivial nt;
  Trivial f1;
  int f2;
  char f3;
} var;
static_assert(sizeof(Struct) == 24);
} // namespace T5
// CHECK-LABEL: define {{.*}} @_ZN5empty2T56StructD2Ev(
// CHECK:         call void @__sanitizer_dtor_callback(i8* {{.*}}, i64 13)
// CHECK:         call void @_ZN10NonTrivialD1Ev(
// CHECK-NEXT:    ret void

namespace T6 {
struct Struct {
  NonTrivial nt;
  [[no_unique_address]] Empty e;
  Trivial f1;
  int f2;
  char f3;
} var;
static_assert(sizeof(Struct) == 24);
} // namespace T6
// CHECK-LABEL: define {{.*}} @_ZN5empty2T66StructD2Ev(
// CHECK:         call void @__sanitizer_dtor_callback(i8* {{.*}}, i64 13)
// CHECK:         call void @_ZN10NonTrivialD1Ev(
// CHECK-NEXT:    ret void

namespace T7 {
struct Struct {
  Trivial f1;
  NonTrivial nt;
  [[no_unique_address]] Empty e;
  int f2;
  char f3;
} var;
static_assert(sizeof(Struct) == 24);
} // namespace T7
// CHECK-LABEL: define {{.*}} @_ZN5empty2T76StructD2Ev(
// CHECK:         call void @__sanitizer_dtor_callback(i8* {{.*}}, i64 5)
// CHECK:         call void @_ZN10NonTrivialD1Ev(
// CHECK:         call void @__sanitizer_dtor_callback(i8* {{.*}}, i64 8)
// CHECK-NEXT:    ret void

namespace T8 {
struct Struct {
  Trivial f1;
  [[no_unique_address]] Empty e;
  NonTrivial nt;
  int f2;
  char f3;
} var;
static_assert(sizeof(Struct) == 24);
} // namespace T8
// CHECK-LABEL: define {{.*}} @_ZN5empty2T86StructD2Ev(
// CHECK:         call void @__sanitizer_dtor_callback(i8* {{.*}}, i64 5)
// CHECK:         call void @__sanitizer_dtor_callback(i8* {{.*}}, i64 8)
// CHECK-NEXT:    ret void

namespace T9 {
struct Struct {
  Trivial f1;
  int f2;
  NonTrivial nt;
  [[no_unique_address]] Empty e;
  char f3;
} var;
static_assert(sizeof(Struct) == 24);
} // namespace T9
// CHECK-LABEL: define {{.*}} @_ZN5empty2T96StructD2Ev(
// CHECK:         call void @__sanitizer_dtor_callback(i8* {{.*}}, i64 1)
// CHECK:         call void @__sanitizer_dtor_callback(i8* {{.*}}, i64 12)
// CHECK-NEXT:    ret void

namespace T10 {
struct Struct {
  Trivial f1;
  int f2;
  [[no_unique_address]] Empty e;
  NonTrivial nt;
  char f3;
} var;
static_assert(sizeof(Struct) == 24);
} // namespace T10
// CHECK-LABEL: define {{.*}} @_ZN5empty3T106StructD2Ev(
// CHECK:         call void @__sanitizer_dtor_callback(i8* {{.*}}, i64 1)
// CHECK:         call void @__sanitizer_dtor_callback(i8* {{.*}}, i64 12)
// CHECK-NEXT:    ret void

namespace T11 {
struct Struct {
  Trivial f1;
  int f2;
  char f3;
  NonTrivial nt;
  [[no_unique_address]] Empty e;
} var;
static_assert(sizeof(Struct) == 24);
} // namespace T11
// CHECK-LABEL: define {{.*}} @_ZN5empty3T116StructD2Ev(
// CHECK:         call void @__sanitizer_dtor_callback(i8* {{.*}}, i64 16)
// CHECK-NEXT:    ret void

namespace T12 {
struct Struct {
  Trivial f1;
  int f2;
  char f3;
  [[no_unique_address]] Empty e;
  NonTrivial nt;
} var;
static_assert(sizeof(Struct) == 24);
} // namespace T12
} // namespace empty
// CHECK-LABEL: define {{.*}} @_ZN5empty3T126StructD2Ev(
// CHECK:         call void @_ZN10NonTrivialD1Ev(
// CHECK:         call void @__sanitizer_dtor_callback(i8* {{.*}}, i64 16)
// CHECK-NEXT:    ret void

namespace empty_non_trivial {
namespace T1 {
struct Struct {
  NonTrivial nt;
  Trivial f1;
  int f2;
  char f3;
} var;
static_assert(sizeof(Struct) == 24);
} // namespace T1
// CHECK-LABEL: define {{.*}} @_ZN17empty_non_trivial2T16StructD2Ev(
// CHECK:         call void @__sanitizer_dtor_callback(i8* {{.*}}, i64 13)
// CHECK:         call void @_ZN10NonTrivialD1Ev(
// CHECK-NEXT:    ret void

namespace T2 {
struct Struct {
  Trivial f1;
  NonTrivial nt;
  int f2;
  char f3;
} var;
static_assert(sizeof(Struct) == 24);
} // namespace T2
// CHECK-LABEL: define {{.*}} @_ZN17empty_non_trivial2T26StructD2Ev(
// CHECK:         call void @__sanitizer_dtor_callback(i8* {{.*}}, i64 5)
// CHECK:         call void @__sanitizer_dtor_callback(i8* {{.*}}, i64 8)
// CHECK-NEXT:    ret void

namespace T3 {
struct Struct {
  Trivial f1;
  int f2;
  NonTrivial nt;
  char f3;
} var;
static_assert(sizeof(Struct) == 24);
} // namespace T3
// CHECK-LABEL: define {{.*}} @_ZN17empty_non_trivial2T36StructD2Ev(
// CHECK:         call void @__sanitizer_dtor_callback(i8* {{.*}}, i64 1)
// CHECK:         call void @__sanitizer_dtor_callback(i8* {{.*}}, i64 12)
// CHECK-NEXT:    ret void

namespace T4 {
struct Struct {
  Trivial f1;
  int f2;
  char f3;
  NonTrivial nt;
} var;
static_assert(sizeof(Struct) == 24);
} // namespace T4
// CHECK-LABEL: define {{.*}} @_ZN17empty_non_trivial2T46StructD2Ev(
// CHECK:         call void @__sanitizer_dtor_callback(i8* {{.*}}, i64 16)
// CHECK-NEXT:    ret void

namespace T5 {
struct Struct {
  [[no_unique_address]] EmptyNonTrivial e;
  NonTrivial nt;
  Trivial f1;
  int f2;
  char f3;
} var;
static_assert(sizeof(Struct) == 24);
} // namespace T5
// CHECK-LABEL: define {{.*}} @_ZN17empty_non_trivial2T56StructD2Ev(
// CHECK:         call void @__sanitizer_dtor_callback(i8* {{.*}}, i64 13)
// CHECK:         call void @_ZN10NonTrivialD1Ev(
// CHECK:         call void @_ZN15EmptyNonTrivialD1Ev(
// CHECK-NEXT:    ret void

namespace T6 {
struct Struct {
  NonTrivial nt;
  [[no_unique_address]] EmptyNonTrivial e;
  Trivial f1;
  int f2;
  char f3;
} var;
static_assert(sizeof(Struct) == 24);
} // namespace T6
// CHECK-LABEL: define {{.*}} @_ZN17empty_non_trivial2T66StructD2Ev(
// CHECK:         call void @__sanitizer_dtor_callback(i8* {{.*}}, i64 13)
// CHECK:         call void @_ZN15EmptyNonTrivialD1Ev(
// CHECK:         call void @_ZN10NonTrivialD1Ev(
// CHECK-NEXT:    ret void

namespace T7 {
struct Struct {
  Trivial f1;
  NonTrivial nt;
  [[no_unique_address]] EmptyNonTrivial e;
  int f2;
  char f3;
} var;
static_assert(sizeof(Struct) == 24);
} // namespace T7
// CHECK-LABEL: define {{.*}} @_ZN17empty_non_trivial2T76StructD2Ev(
// CHECK:         call void @__sanitizer_dtor_callback(i8* {{.*}}, i64 5)
// CHECK:         call void @_ZN15EmptyNonTrivialD1Ev(
// CHECK:         call void @_ZN10NonTrivialD1Ev(
// CHECK:         call void @__sanitizer_dtor_callback(i8* {{.*}}, i64 8)
// CHECK-NEXT:    ret void

namespace T8 {
struct Struct {
  Trivial f1;
  [[no_unique_address]] EmptyNonTrivial e;
  NonTrivial nt;
  int f2;
  char f3;
} var;
static_assert(sizeof(Struct) == 24);
} // namespace T8
// CHECK-LABEL: define {{.*}} @_ZN17empty_non_trivial2T86StructD2Ev(
// CHECK:         call void @__sanitizer_dtor_callback(i8* {{.*}}, i64 5)
// CHECK:         call void @_ZN10NonTrivialD1Ev(
// CHECK:         call void @__sanitizer_dtor_callback(i8* {{.*}}, i64 8)
// CHECK:         call void @_ZN15EmptyNonTrivialD1Ev(
// CHECK-NEXT:    ret void

namespace T9 {
struct Struct {
  Trivial f1;
  int f2;
  NonTrivial nt;
  [[no_unique_address]] EmptyNonTrivial e;
  char f3;
} var;
static_assert(sizeof(Struct) == 24);
} // namespace T9
// CHECK-LABEL: define {{.*}} @_ZN17empty_non_trivial2T96StructD2Ev(
// CHECK:         call void @__sanitizer_dtor_callback(i8* {{.*}}, i64 1)
// CHECK:         call void @_ZN15EmptyNonTrivialD1Ev(
// CHECK:         call void @_ZN10NonTrivialD1Ev(
// CHECK:         call void @__sanitizer_dtor_callback(i8* {{.*}}, i64 12)
// CHECK-NEXT:    ret void

namespace T10 {
struct Struct {
  Trivial f1;
  int f2;
  [[no_unique_address]] EmptyNonTrivial e;
  NonTrivial nt;
  char f3;
} var;
static_assert(sizeof(Struct) == 24);
} // namespace T10
// CHECK-LABEL: define {{.*}} @_ZN17empty_non_trivial3T106StructD2Ev(
// CHECK:         call void @__sanitizer_dtor_callback(i8* {{.*}}, i64 1)
// CHECK:         call void @_ZN10NonTrivialD1Ev(
// CHECK:         call void @__sanitizer_dtor_callback(i8* {{.*}}, i64 12)
// CHECK:         call void @_ZN15EmptyNonTrivialD1Ev(
// CHECK-NEXT:    ret void

namespace T11 {
struct Struct {
  Trivial f1;
  int f2;
  char f3;
  NonTrivial nt;
  [[no_unique_address]] EmptyNonTrivial e;
} var;
static_assert(sizeof(Struct) == 24);
} // namespace T11
// CHECK-LABEL: define {{.*}} @_ZN17empty_non_trivial3T116StructD2Ev(
// CHECK:         call void @_ZN15EmptyNonTrivialD1Ev(
// CHECK:         call void @_ZN10NonTrivialD1Ev(
// CHECK:         call void @__sanitizer_dtor_callback(i8* {{.*}}, i64 16)
// CHECK-NEXT:    ret void

namespace T12 {
struct Struct {
  Trivial f1;
  int f2;
  char f3;
  [[no_unique_address]] EmptyNonTrivial e;
  NonTrivial nt;
} var;
static_assert(sizeof(Struct) == 24);
} // namespace T12
} // namespace empty_non_trivial
// CHECK-LABEL: define {{.*}} @_ZN17empty_non_trivial3T126StructD2Ev(
// CHECK:         call void @_ZN10NonTrivialD1Ev(
// CHECK:         call void @__sanitizer_dtor_callback(i8* {{.*}}, i64 16)
// CHECK:         call void @_ZN15EmptyNonTrivialD1Ev(
// CHECK:         ret void
