// RUN: %clang_cc1 -triple x86_64-unknown-windows-msvc -std=c++23 -fsyntax-only %s -verify
// RUN: %clang_cc1 -triple x86_64-unknown-windows-itanium -std=c++23 -fsyntax-only %s -verify

struct S {
  void operator()();
};

struct T {
  virtual void operator()();
};

struct U {
  static void operator()();
};

struct V: virtual T {
  virtual void f();
};

struct W : virtual V {
  int i;
};

struct X {
  __UINTPTR_TYPE__ ptr;
  __UINTPTR_TYPE__ adj;
};

auto L = [](){};

void f() {
  auto pmf = &S::operator();

  __asm__ __volatile__ ("" : : "r"(&decltype(L)::operator()));
  // expected-error@-1{{cannot pass a pointer-to-member through register-constrained inline assembly parameter}}
  __asm__ __volatile__ ("" : : "r"(&S::operator()));
  // expected-error@-1{{cannot pass a pointer-to-member through register-constrained inline assembly parameter}}
  __asm__ __volatile__ ("" : : "r"(&T::operator()));
  // expected-error@-1{{cannot pass a pointer-to-member through register-constrained inline assembly parameter}}
  __asm__ __volatile__ ("" : : "r"(pmf));
  // expected-error@-1{{cannot pass a pointer-to-member through register-constrained inline assembly parameter}}
  __asm__ __volatile__ ("" : : "r"(&W::f));
  // expected-error@-1{{cannot pass a pointer-to-member through register-constrained inline assembly parameter}}
  __asm__ __volatile__ ("" : : "r"(&W::i));
  // expected-error@-1{{cannot pass a pointer-to-member through register-constrained inline assembly parameter}}

  __asm__ __volatile__ ("" : : "r"(X{0,0}));
  __asm__ __volatile__ ("" : : "r"(&U::operator()));
}
