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 7 int dummy_function() { return 0; } 8 9 // 2. test __pascal 10 // expected-warning@+1 {{calling convention '_pascal' ignored for this target}} 11 int _pascal f2(); 12 13 // expected-warning@+1 {{calling convention '__pascal' ignored for this target}} 14 float __pascal gi2(int, int); 15 // expected-warning@+1 {{calling convention '__pascal' ignored for this target}} 16 template<typename T> T g2(T (__pascal * const )(int, int)) { return 0; } 17 18 struct 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}} 25 template<typename T> int h2(T (__pascal M::* const )()) { return 0; } 26 void 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 36 int _cdecl fa3(); 37 // expected-warning@+1 {{calling convention '_fastcall' ignored for this target}} 38 int _fastcall fc3(); 39 // expected-warning@+1 {{calling convention '_stdcall' ignored for this target}} 40 int _stdcall fd3(); 41 42 // 4. test __uuidof() 43 typedef struct _GUID { 44 unsigned long Data1; 45 unsigned short Data2; 46 unsigned short Data3; 47 unsigned char Data4[ 8 ]; 48 } GUID; 49 50 struct __declspec(uuid("{12345678-1234-1234-1234-123456789abc}")) Foo; 51 struct Data { 52 GUID const* Guid; 53 }; 54 55 void 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