Home | History | Annotate | Download | only in SemaCXX
      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