brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.5 KiB · 0a859c5 Raw
62 lines · c
1// RUN: %clang_cc1 -triple powerpc64le-unknown-unknown -verify \2// RUN:   -target-feature +float128 -mabi=ieeelongdouble -fsyntax-only -Wno-unused %s3// RUN: %clang_cc1 -triple powerpc64le-unknown-unknown -verify \4// RUN:   -target-feature +float128 -fsyntax-only -Wno-unused %s5 6__float128 cast1(__ibm128 x) { return x; } // expected-error {{returning '__ibm128' from a function with incompatible result type '__float128'}}7 8__ibm128 cast2(__float128 x) { return x; } // expected-error {{returning '__float128' from a function with incompatible result type '__ibm128'}}9 10__ibm128 gf;11 12void narrow(double *d, float *f) {13  __ibm128 v = gf;14  gf = *d;      // expected-no-error {{assigning to '__ibm128' from incompatible type 'double'}}15  *f = v;       // expected-no-error {{assigning to 'float' from incompatible type '__ibm128'}}16  *d = gf + *f; // expected-no-error {{invalid operands to binary expression ('__ibm128' and 'float')}}17}18 19#ifdef __LONG_DOUBLE_IEEE128__20long double cast3(__ibm128 x) { return x; } // expected-error {{returning '__ibm128' from a function with incompatible result type 'long double'}}21 22__ibm128 cast4(long double x) { return x; } // expected-error {{returning 'long double' from a function with incompatible result type '__ibm128'}}23 24void imp_cast(__ibm128 w, __float128 q, long double l, _Bool b) {25  w + q;      // expected-error {{invalid operands to binary expression ('__ibm128' and '__float128')}}26  l + w;      // expected-error {{invalid operands to binary expression ('long double' and '__ibm128')}}27  q - w;      // expected-error {{invalid operands to binary expression ('__float128' and '__ibm128')}}28  w - l;      // expected-error {{invalid operands to binary expression ('__ibm128' and 'long double')}}29  w *l;       // expected-error {{invalid operands to binary expression ('__ibm128' and 'long double')}}30  q *w;       // expected-error {{invalid operands to binary expression ('__float128' and '__ibm128')}}31  q / w;      // expected-error {{invalid operands to binary expression ('__float128' and '__ibm128')}}32  w / l;      // expected-error {{invalid operands to binary expression ('__ibm128' and 'long double')}}33  w = q;      // expected-error {{assigning to '__ibm128' from incompatible type '__float128'}}34  q = w;      // expected-error {{assigning to '__float128' from incompatible type '__ibm128'}}35  l = w;      // expected-error {{assigning to 'long double' from incompatible type '__ibm128'}}36  w = l;      // expected-error {{assigning to '__ibm128' from incompatible type 'long double'}}37  b ? q : w;  // expected-error {{incompatible operand types ('__float128' and '__ibm128')}}38  !b ? w : l; // expected-error {{incompatible operand types ('__ibm128' and 'long double')}}39}40#elif __LONG_DOUBLE_IBM128__41long double cast3(__ibm128 x) { return x; } // expected-no-error {{returning '__ibm128' from a function with incompatible result type 'long double'}}42 43__ibm128 cast4(long double x) { return x; } // expected-no-error {{returning 'long double' from a function with incompatible result type '__ibm128'}}44 45void imp_cast(__ibm128 w, __float128 q, long double l, _Bool b) {46  w + q;      // expected-error {{invalid operands to binary expression ('__ibm128' and '__float128')}}47  l + w;      // expected-no-error {{invalid operands to binary expression ('long double' and '__ibm128')}}48  q - w;      // expected-error {{invalid operands to binary expression ('__float128' and '__ibm128')}}49  w - l;      // expected-no-error {{invalid operands to binary expression ('__ibm128' and 'long double')}}50  w *l;       // expected-no-error {{invalid operands to binary expression ('__ibm128' and 'long double')}}51  q *w;       // expected-error {{invalid operands to binary expression ('__float128' and '__ibm128')}}52  q / w;      // expected-error {{invalid operands to binary expression ('__float128' and '__ibm128')}}53  w / l;      // expected-no-error {{invalid operands to binary expression ('__ibm128' and 'long double')}}54  w = q;      // expected-error {{assigning to '__ibm128' from incompatible type '__float128'}}55  q = w;      // expected-error {{assigning to '__float128' from incompatible type '__ibm128'}}56  l = w;      // expected-no-error {{assigning to 'long double' from incompatible type '__ibm128'}}57  w = l;      // expected-no-error {{assigning to '__ibm128' from incompatible type 'long double'}}58  b ? q : w;  // expected-error {{incompatible operand types ('__float128' and '__ibm128')}}59  !b ? w : l; // expected-no-error {{incompatible operand types ('__ibm128' and 'long double')}}60}61#endif62