| // P1467R9 - Extended floating-point types and standard names. |
| // IBM extended long double and _Float128 should have unordered conversion |
| // ranks as IBM extended long double has variable precision from 53 bits |
| // for denormals to more than 2150 bits for certain numbers. |
| // { dg-do compile { target { c++23 && { powerpc*-*-linux* } } } } |
| // { dg-require-effective-target ppc_float128_sw } |
| // { dg-options "-mvsx -mfloat128 -mlong-double-128 -mabi=ibmlongdouble" } |
| |
| auto a = 1.0F128 + 1.0L; // { dg-error "invalid operands to binary \\\+ \\\(have '_Float128' and 'long double'\\\)" } |
| auto b = 1.0L + 1.0F128; // { dg-error "invalid operands to binary \\\+ \\\(have 'long double' and '_Float128'\\\)" } |
| bool c; |
| auto d = c ? 1.0F128 : 1.0L; // { dg-error "operands to '\\\?:' of types '_Float128' and 'long double' have unordered conversion rank" } |
| auto e = c ? 1.0L : 1.0F128; // { dg-error "operands to '\\\?:' of types 'long double' and '_Float128' have unordered conversion rank" } |