1 /* { dg-do compile } */ 2 /* { dg-options "-std=gnu99" } */ 3 4 /* C99 6.3 Conversions. 5 6 Check if all conversions are ok. */ 7 8 #define CONV(TYPE, NAME) \ 9 float NAME ## _to_SF (TYPE a) { return a; } \ 10 float Sat ## NAME ## _to_SF (_Sat TYPE a) { return a; } \ 11 double NAME ## _to_DF (TYPE a) { return a; } \ 12 double Sat ## NAME ## _to_DF (_Sat TYPE a) { return a; } \ 13 TYPE SF_to_ ## NAME (float a) { return a; } \ 14 _Sat TYPE SF_to_Sat ## NAME (float a) { return a; } \ 15 TYPE DF_to_ ## NAME (double a) { return a; } \ 16 _Sat TYPE DF_to_Sat ## NAME (double a) { return a; } \ 17 signed char NAME ## _to_schar (TYPE a) { return a; } \ 18 signed char Sat ## NAME ## _to_schar (_Sat TYPE a) { return a; } \ 19 unsigned char NAME ## _to_uchar (TYPE a) { return a; } \ 20 unsigned char Sat ## NAME ## _to_uchar (_Sat TYPE a) { return a; } \ 21 short NAME ## _to_short (TYPE a) { return a; } \ 22 short _Sat ## NAME ## _to_short (_Sat TYPE a) { return a; } \ 23 unsigned short NAME ## _to_ushort (TYPE a) { return a; } \ 24 unsigned short _Sat ## NAME ## _to_ushort (_Sat TYPE a) { return a; } \ 25 int NAME ## _to_int (TYPE a) { return a; } \ 26 int _Sat ## NAME ## _to_int (_Sat TYPE a) { return a; } \ 27 unsigned int NAME ## _to_uint (TYPE a) { return a; } \ 28 unsigned int _Sat ## NAME ## _to_uint (_Sat TYPE a) { return a; } \ 29 long NAME ## _to_long (TYPE a) { return a; } \ 30 unsigned long NAME ## _to_ulong (TYPE a) { return a; } \ 31 long _Sat ## NAME ## _to_long (TYPE a) { return a; } \ 32 unsigned long _Sat ## NAME ## _to_ulong (TYPE a) { return a; } \ 33 long long NAME ## _to_longlong (TYPE a) { return a; } \ 34 long long _Sat ## NAME ## _to_longlong (TYPE a) { return a; } \ 35 unsigned long long NAME ## _to_ulonglong (TYPE a) { return a; } \ 36 unsigned long long _Sat ## NAME ## _to_ulonglong (TYPE a) { return a; } \ 37 TYPE schar_to_ ## NAME (signed char a) { return a; } \ 38 _Sat TYPE schar_to_Sat ## NAME (signed char a) { return a; } \ 39 TYPE uchar_to_ ## NAME (unsigned char a) { return a; } \ 40 _Sat TYPE uchar_to_Sat ## NAME (unsigned char a) { return a; } \ 41 TYPE short_to_ ## NAME (short a) { return a; } \ 42 TYPE ushort_to_ ## NAME (unsigned short a) { return a; } \ 43 TYPE int_to_ ## NAME (int a) { return a; } \ 44 TYPE uint_to_ ## NAME (unsigned int a) { return a; } \ 45 TYPE long_to_ ## NAME (long a) { return a; } \ 46 TYPE ulong_to_ ## NAME (unsigned long a) { return a; } \ 47 TYPE longlong_to_ ## NAME (long long a) { return a; } \ 48 TYPE ulonglong_to_ ## NAME (unsigned long long a) { return a; } \ 49 _Sat TYPE short_to_Sat ## NAME (short a) { return a; } \ 50 _Sat TYPE ushort_to_Sat ## NAME (unsigned short a) { return a; } \ 51 _Sat TYPE int_to_Sat ## NAME (int a) { return a; } \ 52 _Sat TYPE uint_to_Sat ## NAME (unsigned int a) { return a; } \ 53 _Sat TYPE long_to_Sat ## NAME (long a) { return a; } \ 54 _Sat TYPE ulong_to_Sat ## NAME (unsigned long a) { return a; } \ 55 _Sat TYPE longlong_to_Sat ## NAME (long long a) { return a; } \ 56 _Sat TYPE ulonglong_to_Sat ## NAME (unsigned long long a) { return a; } \ 57 TYPE SFR_to ## NAME (short _Fract a) { return a; } \ 58 TYPE FR_to ## NAME (_Fract a) { return a; } \ 59 TYPE LFR_to ## NAME (long _Fract a) { return a; } \ 60 TYPE LLFR_to ## NAME (long long _Fract a) { return a; } \ 61 TYPE USFR_to ## NAME (unsigned short _Fract a) { return a; } \ 62 TYPE UFR_to ## NAME (unsigned _Fract a) { return a; } \ 63 TYPE ULFR_to ## NAME (unsigned long _Fract a) { return a; } \ 64 TYPE ULLFR_to ## NAME (unsigned long long _Fract a) { return a; } \ 65 TYPE SAC_to ## NAME (short _Accum a) { return a; } \ 66 TYPE AC_to ## NAME (_Accum a) { return a; } \ 67 TYPE LAC_to ## NAME (long _Accum a) { return a; } \ 68 TYPE LLAC_to ## NAME (long long _Accum a) { return a; } \ 69 TYPE USAC_to ## NAME (unsigned short _Accum a) { return a; } \ 70 TYPE UAC_to ## NAME (unsigned _Accum a) { return a; } \ 71 TYPE ULAC_to ## NAME (unsigned long _Accum a) { return a; } \ 72 TYPE ULLAC_to ## NAME (unsigned long long _Accum a) { return a; } \ 73 TYPE SATSFR_to ## NAME (_Sat short _Fract a) { return a; } \ 74 TYPE SATFR_to ## NAME (_Sat _Fract a) { return a; } \ 75 TYPE SATLFR_to ## NAME (_Sat long _Fract a) { return a; } \ 76 TYPE SATLLFR_to ## NAME (_Sat long long _Fract a) { return a; } \ 77 TYPE SATUSFR_to ## NAME (_Sat unsigned short _Fract a) { return a; } \ 78 TYPE SATUFR_to ## NAME (_Sat unsigned _Fract a) { return a; } \ 79 TYPE SATULFR_to ## NAME (_Sat unsigned long _Fract a) { return a; } \ 80 TYPE SATULLFR_to ## NAME (_Sat unsigned long long _Fract a) { return a; } \ 81 TYPE SATSAC_to ## NAME (_Sat short _Accum a) { return a; } \ 82 TYPE SATAC_to ## NAME (_Sat _Accum a) { return a; } \ 83 TYPE SATLAC_to ## NAME (_Sat long _Accum a) { return a; } \ 84 TYPE SATLLAC_to ## NAME (_Sat long long _Accum a) { return a; } \ 85 TYPE SATUSAC_to ## NAME (_Sat unsigned short _Accum a) { return a; } \ 86 TYPE SATUAC_to ## NAME (_Sat unsigned _Accum a) { return a; } \ 87 TYPE SATULAC_to ## NAME (_Sat unsigned long _Accum a) { return a; } \ 88 TYPE SATULLAC_to ## NAME (_Sat unsigned long long _Accum a) { return a; } \ 89 _Sat TYPE SFR_to_SAT ## NAME (short _Fract a) { return a; } \ 90 _Sat TYPE FR_to_SAT ## NAME (_Fract a) { return a; } \ 91 _Sat TYPE LFR_to_SAT ## NAME (long _Fract a) { return a; } \ 92 _Sat TYPE LLFR_to_SAT ## NAME (long long _Fract a) { return a; } \ 93 _Sat TYPE USFR_to_SAT ## NAME (unsigned short _Fract a) { return a; } \ 94 _Sat TYPE UFR_to_SAT ## NAME (unsigned _Fract a) { return a; } \ 95 _Sat TYPE ULFR_to_SAT ## NAME (unsigned long _Fract a) { return a; } \ 96 _Sat TYPE ULLFR_to_SAT ## NAME (unsigned long long _Fract a) { return a; } \ 97 _Sat TYPE SAC_to_SAT ## NAME (short _Accum a) { return a; } \ 98 _Sat TYPE AC_to_SAT ## NAME (_Accum a) { return a; } \ 99 _Sat TYPE LAC_to_SAT ## NAME (long _Accum a) { return a; } \ 100 _Sat TYPE LLAC_to_SAT ## NAME (long long _Accum a) { return a; } \ 101 _Sat TYPE USAC_to_SAT ## NAME (unsigned short _Accum a) { return a; } \ 102 _Sat TYPE UAC_to_SAT ## NAME (unsigned _Accum a) { return a; } \ 103 _Sat TYPE ULAC_to_SAT ## NAME (unsigned long _Accum a) { return a; } \ 104 _Sat TYPE ULLAC_to_SAT ## NAME (unsigned long long _Accum a) { return a; } \ 105 _Sat TYPE SATSFR_to_SAT ## NAME (_Sat short _Fract a) { return a; } \ 106 _Sat TYPE SATFR_to_SAT ## NAME (_Sat _Fract a) { return a; } \ 107 _Sat TYPE SATLFR_to_SAT ## NAME (_Sat long _Fract a) { return a; } \ 108 _Sat TYPE SATLLFR_to_SAT ## NAME (_Sat long long _Fract a) { return a; } \ 109 _Sat TYPE SATUSFR_to_SAT ## NAME (_Sat unsigned short _Fract a) { return a; } \ 110 _Sat TYPE SATUFR_to_SAT ## NAME (_Sat unsigned _Fract a) { return a; } \ 111 _Sat TYPE SATULFR_to_SAT ## NAME (_Sat unsigned long _Fract a) { return a; } \ 112 _Sat TYPE SATULLFR_to_SAT ## NAME (_Sat unsigned long long _Fract a) { return a; } \ 113 _Sat TYPE SATSAC_to_SAT ## NAME (_Sat short _Accum a) { return a; } \ 114 _Sat TYPE SATAC_to_SAT ## NAME (_Sat _Accum a) { return a; } \ 115 _Sat TYPE SATLAC_to_SAT ## NAME (_Sat long _Accum a) { return a; } \ 116 _Sat TYPE SATLLAC_to_SAT ## NAME (_Sat long long _Accum a) { return a; } \ 117 _Sat TYPE SATUSAC_to_SAT ## NAME (_Sat unsigned short _Accum a) { return a; } \ 118 _Sat TYPE SATUAC_to_SAT ## NAME (_Sat unsigned _Accum a) { return a; } \ 119 _Sat TYPE SATULAC_to_SAT ## NAME (_Sat unsigned long _Accum a) { return a; } \ 120 _Sat TYPE SATULLAC_to_SAT ## NAME (_Sat unsigned long long _Accum a) { return a; } \ 121 _Complex int NAME ## _to_CI (TYPE a) { return a; } \ 122 _Complex unsigned int NAME ## _to_CUI (TYPE a) { return a; } \ 123 _Complex float NAME ## _to_CF (TYPE a) { return a; } \ 124 _Complex double NAME ## _to_CD (TYPE a) { return a; } \ 125 TYPE CI_to_ ## NAME (_Complex int a) { return a; } \ 126 TYPE CUI_to_ ## NAME (_Complex unsigned int a) { return a; } \ 127 TYPE CF_to_ ## NAME (_Complex float a) { return a; } \ 128 TYPE CD_to_ ## NAME (_Complex double a) { return a; } \ 129 _Sat TYPE CI_to_SAT ## NAME (_Complex int a) { return a; } \ 130 _Sat TYPE CUI_to_SAT ## NAME (_Complex unsigned int a) { return a; } \ 131 _Sat TYPE CF_to_SAT ## NAME (_Complex float a) { return a; } \ 132 _Sat TYPE CD_to_SAT ## NAME (_Complex double a) { return a; } 133 134 CONV(short _Fract, sf); 135 CONV(_Fract, f); 136 CONV(long _Fract, lf); 137 CONV(long long _Fract, llf); 138 CONV(unsigned short _Fract, usf); 139 CONV(unsigned _Fract, uf); 140 CONV(unsigned long _Fract, ulf); 141 CONV(unsigned long long _Fract, ullf); 142 143 CONV(short _Accum, sk); 144 CONV(_Accum, k); 145 CONV(long _Accum, lk); 146 CONV(long long _Accum, llk); 147 CONV(unsigned short _Accum, usk); 148 CONV(unsigned _Accum, uk); 149 CONV(unsigned long _Accum, ulk); 150 CONV(unsigned long long _Accum, ullk); 151