// RUN: %clang_cc1 %s -fsyntax-only -fborland-extensions -triple x86_64-linux-gnu -verify // RUN: %clang_cc1 %s -fsyntax-only -fborland-extensions -triple i686-linux-gnu -Werror // Borland extensions // 1. test -fborland-extensions int dummy_function() { return 0; } // 2. test __pascal // expected-warning@+1 {{calling convention '_pascal' ignored for this target}} int _pascal f2(); // expected-warning@+1 {{calling convention '__pascal' ignored for this target}} float __pascal gi2(int, int); // expected-warning@+1 {{calling convention '__pascal' ignored for this target}} template<typename T> T g2(T (__pascal * const )(int, int)) { return 0; } struct M { // expected-warning@+1 {{calling convention '__pascal' ignored for this target}} int __pascal addP(); // expected-warning@+1 {{calling convention '__pascal' ignored for this target}} float __pascal subtractP(); }; // expected-warning@+1 {{calling convention '__pascal' ignored for this target}} template<typename T> int h2(T (__pascal M::* const )()) { return 0; } void m2() { int i; float f; i = f2(); f = gi2(2, i); f = g2(gi2); i = h2<int>(&M::addP); f = h2(&M::subtractP); } // 3. test other calling conventions int _cdecl fa3(); // expected-warning@+1 {{calling convention '_fastcall' ignored for this target}} int _fastcall fc3(); // expected-warning@+1 {{calling convention '_stdcall' ignored for this target}} int _stdcall fd3(); // 4. test __uuidof() typedef struct _GUID { unsigned long Data1; unsigned short Data2; unsigned short Data3; unsigned char Data4[ 8 ]; } GUID; struct __declspec(uuid("{12345678-1234-1234-1234-123456789abc}")) Foo; struct Data { GUID const* Guid; }; void t4() { unsigned long data; const GUID guid_inl = __uuidof(Foo); Data ata1 = { &guid_inl}; data = ata1.Guid->Data1; }