xref: /llvm-project/clang/test/CodeGenCXX/ms-thunks-variadic-return.cpp (revision 28328c3771e4241366ecb7aba8963dc92b3065d7)
1*28328c37SReid Kleckner // RUN: %clang_cc1 -fno-rtti-data -triple x86_64-windows-msvc -emit-llvm-only %s -verify
2*28328c37SReid Kleckner 
3*28328c37SReid Kleckner // Verify that we error out on this return adjusting thunk that we can't emit.
4*28328c37SReid Kleckner 
5*28328c37SReid Kleckner struct A {
6*28328c37SReid Kleckner   virtual A *clone(const char *f, ...) = 0;
7*28328c37SReid Kleckner };
8*28328c37SReid Kleckner struct B : virtual A {
9*28328c37SReid Kleckner   // expected-error@+1 2 {{cannot compile this return-adjusting thunk with variadic arguments yet}}
10*28328c37SReid Kleckner   B *clone(const char *f, ...) override;
11*28328c37SReid Kleckner };
12*28328c37SReid Kleckner struct C : B { int c; };
13*28328c37SReid Kleckner C c;
14