CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
121 lines
6.0 KiB
C++
121 lines
6.0 KiB
C++
// RUN: %clang_cc1 -triple s390x-ibm-zos %s -fsyntax-only -fzos-extensions -verify
|
|
// RUN: %clang_cc1 -triple s390x-ibm-zos %s -fsyntax-only -verify
|
|
|
|
struct A {
|
|
int a;
|
|
short b;
|
|
float q;
|
|
double z;
|
|
};
|
|
|
|
union B {
|
|
int a;
|
|
short b;
|
|
float q;
|
|
double z;
|
|
};
|
|
|
|
class C {
|
|
int a;
|
|
short b;
|
|
float q;
|
|
double z;
|
|
};
|
|
|
|
// ************************
|
|
// INCORRECT DECLARATION
|
|
// ************************
|
|
int * __ptr64 p64; // expected-error {{expected ';' after top level declarator}}
|
|
int *wrong_var3 __ptr32; // expected-error {{expected ';' after top level declarator}} expected-warning {{declaration does not declare anything}}
|
|
|
|
// **************************
|
|
// INCORRECT USAGES OF PTR32
|
|
// **************************
|
|
struct D {
|
|
int __ptr32 *a; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}
|
|
};
|
|
|
|
union E {
|
|
int __ptr32 *b; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}
|
|
};
|
|
|
|
char __ptr32 *a; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}
|
|
signed char __ptr32 *b; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}
|
|
unsigned char __ptr32 *c; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}
|
|
int __ptr32 *d; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}
|
|
signed int __ptr32 *e; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}
|
|
unsigned int __ptr32 *f; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}
|
|
short int __ptr32 *g; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}
|
|
signed short int __ptr32 *h; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}
|
|
unsigned short int __ptr32 *i; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}
|
|
long int __ptr32 *j; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}
|
|
signed long int __ptr32 *k; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}
|
|
unsigned long int __ptr32 *l; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}
|
|
long long int __ptr32 *m; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}
|
|
signed long long int __ptr32 *n; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}
|
|
unsigned long long int __ptr32 *o; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}
|
|
float __ptr32 *p; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}
|
|
double __ptr32 *q; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}
|
|
int __ptr32 **r; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}
|
|
int __ptr32 *__ptr32 *s; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}
|
|
int __ptr32 *__ptr32 *__ptr32 t; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}
|
|
int __ptr32 *__ptr32 *__ptr32 *__ptr32 u; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}
|
|
int __ptr32 __ptr32 **v_i; // expected-error {{'__ptr32' attribute only applies to pointer arguments}} expected-error {{'__ptr32' attribute only applies to pointer arguments}}
|
|
int __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}}
|
|
|
|
__ptr32 int wrong_var; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}
|
|
|
|
struct A __ptr32 *c1; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}
|
|
struct A __ptr32 **e1; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}
|
|
struct A __ptr32 *__ptr32 *f1; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}
|
|
struct A __ptr32 *__ptr32 *__ptr32 g1; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}
|
|
union B __ptr32 *d1; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}
|
|
union B __ptr32 **h1; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}
|
|
union B __ptr32 * __ptr32 *i1; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}
|
|
union B __ptr32 * __ptr32 * __ptr32 j1; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}
|
|
|
|
C __ptr32 **k1; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}
|
|
C __ptr32 * __ptr32 *l1; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}
|
|
C __ptr32 * __ptr32 * __ptr32 m1; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}
|
|
|
|
struct D n1;
|
|
union E o1;
|
|
|
|
int incorrect_func() {
|
|
int __ptr32 = 1; // expected-error {{expected unqualified-id}}
|
|
return __ptr32; // expected-error {{expected expression}}
|
|
}
|
|
|
|
typedef int __ptr32; // expected-warning {{typedef requires a name}}
|
|
int incorrect_func2() {
|
|
return 1;
|
|
}
|
|
|
|
typedef int __ptr32 *v; // expected-error {{'__ptr32' attribute only applies to pointer arguments}}
|
|
int incorrect_func3() {
|
|
v v1;
|
|
return 0;
|
|
}
|
|
|
|
int *__ptr32 a_ptr; //expected-note {{previous definition is here}}
|
|
int *a_ptr; // expected-error {{redefinition of 'a_ptr' with a different type: 'int *' vs 'int * __ptr32'}}
|
|
|
|
// *******************************************************
|
|
// FUNCTION OVERLOADING BETWEEN PTR32 AND REGULAR POINTERS
|
|
// *******************************************************
|
|
void func(int * __ptr32 p32) {} // expected-note {{previous definition is here}}
|
|
void func(int *p64) {} // expected-error {{redefinition of 'func'}}
|
|
|
|
// Overloads between ptr32 and other non-pointer types are permissible
|
|
void func1(int *__ptr32 p32) {}
|
|
void func1(int p64) {}
|
|
|
|
// ******
|
|
// MISC
|
|
// ******
|
|
void func2() {
|
|
char * __ptr32 v = ((char * __ptr32 *)1028)[0];
|
|
char *v1 = ((char ** __ptr32 *)1028)[0][1];
|
|
}
|
|
|