1// RUN: %clang_cc1 %s -fsyntax-only -fborland-extensions -triple x86_64-linux-gnu -verify 2// RUN: %clang_cc1 %s -fsyntax-only -fborland-extensions -triple i686-linux-gnu -Werror 3 4// Borland extensions 5 6// 1. test -fborland-extensions 7int dummy_function() { return 0; } 8 9// 2. test __pascal 10// expected-warning@+1 {{calling convention '_pascal' ignored for this target}} 11int _pascal f2(); 12 13// expected-warning@+1 {{calling convention '__pascal' ignored for this target}} 14float __pascal gi2(int, int); 15// expected-warning@+1 {{calling convention '__pascal' ignored for this target}} 16template<typename T> T g2(T (__pascal * const )(int, int)) { return 0; } 17 18struct M { 19 // expected-warning@+1 {{calling convention '__pascal' ignored for this target}} 20 int __pascal addP(); 21 // expected-warning@+1 {{calling convention '__pascal' ignored for this target}} 22 float __pascal subtractP(); 23}; 24// expected-warning@+1 {{calling convention '__pascal' ignored for this target}} 25template<typename T> int h2(T (__pascal M::* const )()) { return 0; } 26void m2() { 27 int i; float f; 28 i = f2(); 29 f = gi2(2, i); 30 f = g2(gi2); 31 i = h2<int>(&M::addP); 32 f = h2(&M::subtractP); 33} 34 35// 3. test other calling conventions 36int _cdecl fa3(); 37// expected-warning@+1 {{calling convention '_fastcall' ignored for this target}} 38int _fastcall fc3(); 39// expected-warning@+1 {{calling convention '_stdcall' ignored for this target}} 40int _stdcall fd3(); 41 42// 4. test __uuidof() 43typedef struct _GUID { 44 unsigned long Data1; 45 unsigned short Data2; 46 unsigned short Data3; 47 unsigned char Data4[ 8 ]; 48} GUID; 49 50struct __declspec(uuid("{12345678-1234-1234-1234-123456789abc}")) Foo; 51struct Data { 52 GUID const* Guid; 53}; 54 55void t4() { 56 unsigned long data; 57 58 const GUID guid_inl = __uuidof(Foo); 59 Data ata1 = { &guid_inl}; 60 data = ata1.Guid->Data1; 61} 62 63