| /* { dg-do compile } */ |
| |
| /* Test various conversions involving decimal floating types. */ |
| |
| #include "dfp-dbg.h" |
| |
| /* Assertion that constant C is of type T. */ |
| #define ASSERT_CONST_TYPE(C, T) \ |
| do { \ |
| typedef T type; \ |
| typedef type **typepp; \ |
| typedef __typeof__((C)) ctype; \ |
| typedef ctype **ctypepp; \ |
| typepp x = 0; \ |
| ctypepp y = 0; \ |
| x = y; \ |
| y = x; \ |
| } while (0) |
| |
| int |
| main () |
| { |
| ASSERT_CONST_TYPE (3 + 2.1df, _Decimal32); /* { dg-bogus "assignment from incompatible pointer type" } */ |
| ASSERT_CONST_TYPE (1.3df + 2, _Decimal32); /* { dg-bogus "assignment from incompatible pointer type" } */ |
| ASSERT_CONST_TYPE (56U - 55.0dd, _Decimal64); /* { dg-bogus "assignment from incompatible pointer type" } */ |
| ASSERT_CONST_TYPE (5 * .2DL, _Decimal128); /* { dg-bogus "assignment from incompatible pointer type" } */ |
| ASSERT_CONST_TYPE (.88dl / 2L, _Decimal128); /* { dg-bogus "assignment from incompatible pointer type" } */ |
| ASSERT_CONST_TYPE (.114df - 1.6dd, _Decimal64); /* { dg-bogus "assignment from incompatible pointer type" } */ |
| ASSERT_CONST_TYPE (3L - 1 + .55df, _Decimal32); /* { dg-bogus "assignment from incompatible pointer type" } */ |
| |
| return 0; |
| } |