|  | // RUN: %clang_cc1 -triple=x86_64-pc-unknown -fsyntax-only -verify %s | 
|  |  | 
|  | // Non-x86 targets ignore the calling conventions by default (but will warn | 
|  | // when one is encountered), so we want to make sure the virtual overrides | 
|  | // continue to work. | 
|  | namespace PR14339 { | 
|  | class A { | 
|  | public: | 
|  | virtual void __attribute__((thiscall)) f();	// expected-warning {{calling convention 'thiscall' ignored for this target}} | 
|  | }; | 
|  |  | 
|  | class B : public A { | 
|  | public: | 
|  | void __attribute__((cdecl)) f(); | 
|  | }; | 
|  |  | 
|  | class C : public A { | 
|  | public: | 
|  | void __attribute__((thiscall)) f();  // expected-warning {{calling convention 'thiscall' ignored for this target}} | 
|  | }; | 
|  |  | 
|  | class D : public A { | 
|  | public: | 
|  | void f(); | 
|  | }; | 
|  |  | 
|  | class E { | 
|  | public: | 
|  | virtual void __attribute__((stdcall)) g();  // expected-warning {{calling convention 'stdcall' ignored for this target}} | 
|  | }; | 
|  |  | 
|  | class F : public E { | 
|  | public: | 
|  | void g(); | 
|  | }; | 
|  | } |