// RUN: %clang_cc1 -x c++ -triple x86_64-apple-darwin10 -emit-llvm -o - %s -fsanitize=nullability-arg | FileCheck %s -check-prefixes=ITANIUM,ALL
// RUN: %clang_cc1 -x c++ -triple x86_64-pc-windows-msvc -emit-llvm -o - %s -fsanitize=nullability-arg | FileCheck %s -check-prefixes=MSVC,ALL

namespace method_ptr {

struct S0 {
  void foo1();
};

void foo1(void (S0::*_Nonnull f)());

// ITANIUM-LABEL: @_ZN10method_ptr5test1Ev(){{.*}} {
// ITANIUM: [[CMP:%.*]] = icmp ne i64 ptrtoint (ptr @_ZN10method_ptr2S04foo1Ev to i64), 0
// ITANIUM: br i1 [[CMP]], label %[[CONT:.*]], label %[[FAIL:[^,]*]]
// ITANIUM-EMPTY:
// ITANIUM-NEXT: [[FAIL]]:
// ITANIUM-NEXT:   call void @__ubsan_handle_nullability_arg

// MSVC-LABEL: @"?test1@method_ptr@@YAXXZ"(){{.*}} {
// MSVC: br i1 true, label %[[CONT:.*]], label %[[FAIL:[^,]*]]
// MSVC-EMPTY:
// MSVC-NEXT: [[FAIL]]:
// MSVC-NEXT:   call void @__ubsan_handle_nullability_arg
void test1() {
  foo1(&S0::foo1);
}

} // namespace method_ptr

namespace data_ptr {

struct S0 {
  int field1;
};

using member_ptr = int S0::*;

void foo1(member_ptr _Nonnull);

// ITANIUM-LABEL: @_ZN8data_ptr5test1ENS_2S0E(
// MSVC-LABEL: @"?test1@data_ptr@@YAXUS0@1@@Z"(
// ALL: [[DATA_PTR_CHECK:%.*]] = icmp ne {{.*}}, -1, !nosanitize
// ALL-NEXT: br i1 [[DATA_PTR_CHECK]], label %[[CONT:.*]], label %[[FAIL:[^,]+]]
// ALL-EMPTY:
// ALL-NEXT: [[FAIL]]:
// ALL-NEXT:   call void @__ubsan_handle_nullability_arg
void test1(S0 s) {
  int S0::*member = &S0::field1;
  foo1(member);
}

} // namespace data_ptr
