63 lines · cpp
1// RUN: %clang_cc1 %s -fsyntax-only -fborland-extensions -triple x86_64-linux-gnu -verify2// RUN: %clang_cc1 %s -fsyntax-only -fborland-extensions -triple i686-linux-gnu -Werror3 4// Borland extensions5 6// 1. test -fborland-extensions7int dummy_function() { return 0; }8 9// 2. test __pascal10// expected-warning@+1 {{'_pascal' calling convention is not supported for this target}}11int _pascal f2();12 13// expected-warning@+1 {{'__pascal' calling convention is not supported for this target}}14float __pascal gi2(int, int); 15// expected-warning@+1 {{'__pascal' calling convention is not supported for this target}}16template<typename T> T g2(T (__pascal * const )(int, int)) { return 0; }17 18struct M {19 // expected-warning@+1 {{'__pascal' calling convention is not supported for this target}}20 int __pascal addP();21 // expected-warning@+1 {{'__pascal' calling convention is not supported for this target}}22 float __pascal subtractP(); 23};24// expected-warning@+1 {{'__pascal' calling convention is not supported 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 conventions36int _cdecl fa3();37// expected-warning@+1 {{'_fastcall' calling convention is not supported for this target}}38int _fastcall fc3();39// expected-warning@+1 {{'_stdcall' calling convention is not supported 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