brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.6 KiB · 3758dbc Raw
50 lines · cpp
1// RUN: %clang_cc1 -triple x86_64-unknown-windows-msvc -std=c++23 -fsyntax-only %s -verify2// RUN: %clang_cc1 -triple x86_64-unknown-windows-itanium -std=c++23 -fsyntax-only %s -verify3 4struct S {5  void operator()();6};7 8struct T {9  virtual void operator()();10};11 12struct U {13  static void operator()();14};15 16struct V: virtual T {17  virtual void f();18};19 20struct W : virtual V {21  int i;22};23 24struct X {25  __UINTPTR_TYPE__ ptr;26  __UINTPTR_TYPE__ adj;27};28 29auto L = [](){};30 31void f() {32  auto pmf = &S::operator();33 34  __asm__ __volatile__ ("" : : "r"(&decltype(L)::operator()));35  // expected-error@-1{{cannot pass a pointer-to-member through register-constrained inline assembly parameter}}36  __asm__ __volatile__ ("" : : "r"(&S::operator()));37  // expected-error@-1{{cannot pass a pointer-to-member through register-constrained inline assembly parameter}}38  __asm__ __volatile__ ("" : : "r"(&T::operator()));39  // expected-error@-1{{cannot pass a pointer-to-member through register-constrained inline assembly parameter}}40  __asm__ __volatile__ ("" : : "r"(pmf));41  // expected-error@-1{{cannot pass a pointer-to-member through register-constrained inline assembly parameter}}42  __asm__ __volatile__ ("" : : "r"(&W::f));43  // expected-error@-1{{cannot pass a pointer-to-member through register-constrained inline assembly parameter}}44  __asm__ __volatile__ ("" : : "r"(&W::i));45  // expected-error@-1{{cannot pass a pointer-to-member through register-constrained inline assembly parameter}}46 47  __asm__ __volatile__ ("" : : "r"(X{0,0}));48  __asm__ __volatile__ ("" : : "r"(&U::operator()));49}50