brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.0 KiB · 9b2d3cd Raw
121 lines · cpp
1// RUN: %clang_cc1 -triple s390x-ibm-zos %s -fsyntax-only -fzos-extensions -verify2// RUN: %clang_cc1 -triple s390x-ibm-zos %s -fsyntax-only -verify3 4struct A {5  int a;6  short b;7  float q;8  double z;9};10 11union B {12  int a;13  short b;14  float q;15  double z;16};17 18class C {19  int a;20  short b;21  float q;22  double z;23};24 25// ************************26// INCORRECT DECLARATION27// ************************28int * __ptr64 p64; // expected-error {{expected ';' after top level declarator}}29int *wrong_var3 __ptr32; // expected-error {{expected ';' after top level declarator}} expected-warning {{declaration does not declare anything}}30 31// **************************32// INCORRECT USAGES OF PTR3233// **************************34struct D {35  int __ptr32 *a; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}36};37 38union E {39  int __ptr32 *b; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}40};41 42char __ptr32 *a; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}43signed char __ptr32 *b; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}44unsigned char __ptr32 *c; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}45int __ptr32 *d; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}46signed int __ptr32 *e; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}47unsigned int __ptr32 *f; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}48short int __ptr32 *g; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}49signed short int __ptr32 *h; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}50unsigned short int __ptr32 *i; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}51long int __ptr32 *j; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}52signed long int __ptr32 *k; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}53unsigned long int __ptr32 *l; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}54long long int __ptr32 *m; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}55signed long long int __ptr32 *n; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}56unsigned long long int __ptr32 *o; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}57float __ptr32 *p;                  // expected-error {{'__ptr32' attribute only applies to pointer arguments}}58double __ptr32 *q;                 // expected-error {{'__ptr32' attribute only applies to pointer arguments}}59int __ptr32 **r;                   // expected-error {{'__ptr32' attribute only applies to pointer arguments}}60int __ptr32 *__ptr32 *s;           // expected-error {{'__ptr32' attribute only applies to pointer arguments}}61int __ptr32 *__ptr32 *__ptr32 t;   // expected-error {{'__ptr32' attribute only applies to pointer arguments}}62int __ptr32 *__ptr32 *__ptr32 *__ptr32 u; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}63int __ptr32 __ptr32 **v_i;                // expected-error {{'__ptr32' attribute only applies to pointer arguments}} expected-error {{'__ptr32' attribute only applies to pointer arguments}}64int __ptr32 __ptr32 __ptr32 w_i;          // expected-error {{'__ptr32' attribute only applies to pointer arguments}} expected-error {{'__ptr32' attribute only applies to pointer arguments}} expected-error {{'__ptr32' attribute only applies to pointer arguments}}65 66__ptr32 int wrong_var; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}67 68struct A __ptr32 *c1;                  // expected-error {{'__ptr32' attribute only applies to pointer arguments}}69struct A __ptr32 **e1;                 // expected-error {{'__ptr32' attribute only applies to pointer arguments}}70struct A __ptr32 *__ptr32 *f1;         // expected-error {{'__ptr32' attribute only applies to pointer arguments}}71struct A __ptr32 *__ptr32 *__ptr32 g1; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}72union B __ptr32 *d1; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}73union B __ptr32 **h1; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}74union B __ptr32 * __ptr32 *i1; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}75union B __ptr32 * __ptr32 * __ptr32 j1; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}76 77C __ptr32 **k1; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}78C __ptr32 * __ptr32 *l1; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}79C __ptr32 * __ptr32 * __ptr32 m1; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}80 81struct D n1;82union E o1;83 84int incorrect_func() {85  int __ptr32 = 1; // expected-error {{expected unqualified-id}}86  return __ptr32; // expected-error {{expected expression}}87}88 89typedef int __ptr32; // expected-warning {{typedef requires a name}}90int incorrect_func2() {91  return 1;92}93 94typedef int __ptr32 *v; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}95int incorrect_func3() {96  v v1;97  return 0;98}99 100int *__ptr32 a_ptr; //expected-note {{previous definition is here}}101int *a_ptr;         // expected-error {{redefinition of 'a_ptr' with a different type: 'int *' vs 'int * __ptr32'}}102 103// *******************************************************104// FUNCTION OVERLOADING BETWEEN PTR32 AND REGULAR POINTERS105// *******************************************************106void func(int * __ptr32 p32) {} // expected-note {{previous definition is here}}107void func(int *p64) {}          // expected-error {{redefinition of 'func'}}108 109// Overloads between ptr32 and other non-pointer types are permissible110void func1(int *__ptr32 p32) {}111void func1(int p64) {}112 113// ******114// MISC115// ******116void func2() {117  char * __ptr32 v = ((char * __ptr32 *)1028)[0];118  char *v1 = ((char ** __ptr32 *)1028)[0][1];119}120 121