| /* { dg-do compile } */ |
| /* { dg-options "-std=gnu99" } */ |
| |
| /* C99 6.3 Conversions. |
| |
| Check if all conversions are ok. */ |
| |
| #define CONV(TYPE, NAME) \ |
| float NAME ## _to_SF (TYPE a) { return a; } \ |
| float Sat ## NAME ## _to_SF (_Sat TYPE a) { return a; } \ |
| double NAME ## _to_DF (TYPE a) { return a; } \ |
| double Sat ## NAME ## _to_DF (_Sat TYPE a) { return a; } \ |
| TYPE SF_to_ ## NAME (float a) { return a; } \ |
| _Sat TYPE SF_to_Sat ## NAME (float a) { return a; } \ |
| TYPE DF_to_ ## NAME (double a) { return a; } \ |
| _Sat TYPE DF_to_Sat ## NAME (double a) { return a; } \ |
| signed char NAME ## _to_schar (TYPE a) { return a; } \ |
| signed char Sat ## NAME ## _to_schar (_Sat TYPE a) { return a; } \ |
| unsigned char NAME ## _to_uchar (TYPE a) { return a; } \ |
| unsigned char Sat ## NAME ## _to_uchar (_Sat TYPE a) { return a; } \ |
| short NAME ## _to_short (TYPE a) { return a; } \ |
| short _Sat ## NAME ## _to_short (_Sat TYPE a) { return a; } \ |
| unsigned short NAME ## _to_ushort (TYPE a) { return a; } \ |
| unsigned short _Sat ## NAME ## _to_ushort (_Sat TYPE a) { return a; } \ |
| int NAME ## _to_int (TYPE a) { return a; } \ |
| int _Sat ## NAME ## _to_int (_Sat TYPE a) { return a; } \ |
| unsigned int NAME ## _to_uint (TYPE a) { return a; } \ |
| unsigned int _Sat ## NAME ## _to_uint (_Sat TYPE a) { return a; } \ |
| long NAME ## _to_long (TYPE a) { return a; } \ |
| unsigned long NAME ## _to_ulong (TYPE a) { return a; } \ |
| long _Sat ## NAME ## _to_long (TYPE a) { return a; } \ |
| unsigned long _Sat ## NAME ## _to_ulong (TYPE a) { return a; } \ |
| long long NAME ## _to_longlong (TYPE a) { return a; } \ |
| long long _Sat ## NAME ## _to_longlong (TYPE a) { return a; } \ |
| unsigned long long NAME ## _to_ulonglong (TYPE a) { return a; } \ |
| unsigned long long _Sat ## NAME ## _to_ulonglong (TYPE a) { return a; } \ |
| TYPE schar_to_ ## NAME (signed char a) { return a; } \ |
| _Sat TYPE schar_to_Sat ## NAME (signed char a) { return a; } \ |
| TYPE uchar_to_ ## NAME (unsigned char a) { return a; } \ |
| _Sat TYPE uchar_to_Sat ## NAME (unsigned char a) { return a; } \ |
| TYPE short_to_ ## NAME (short a) { return a; } \ |
| TYPE ushort_to_ ## NAME (unsigned short a) { return a; } \ |
| TYPE int_to_ ## NAME (int a) { return a; } \ |
| TYPE uint_to_ ## NAME (unsigned int a) { return a; } \ |
| TYPE long_to_ ## NAME (long a) { return a; } \ |
| TYPE ulong_to_ ## NAME (unsigned long a) { return a; } \ |
| TYPE longlong_to_ ## NAME (long long a) { return a; } \ |
| TYPE ulonglong_to_ ## NAME (unsigned long long a) { return a; } \ |
| _Sat TYPE short_to_Sat ## NAME (short a) { return a; } \ |
| _Sat TYPE ushort_to_Sat ## NAME (unsigned short a) { return a; } \ |
| _Sat TYPE int_to_Sat ## NAME (int a) { return a; } \ |
| _Sat TYPE uint_to_Sat ## NAME (unsigned int a) { return a; } \ |
| _Sat TYPE long_to_Sat ## NAME (long a) { return a; } \ |
| _Sat TYPE ulong_to_Sat ## NAME (unsigned long a) { return a; } \ |
| _Sat TYPE longlong_to_Sat ## NAME (long long a) { return a; } \ |
| _Sat TYPE ulonglong_to_Sat ## NAME (unsigned long long a) { return a; } \ |
| TYPE SFR_to ## NAME (short _Fract a) { return a; } \ |
| TYPE FR_to ## NAME (_Fract a) { return a; } \ |
| TYPE LFR_to ## NAME (long _Fract a) { return a; } \ |
| TYPE LLFR_to ## NAME (long long _Fract a) { return a; } \ |
| TYPE USFR_to ## NAME (unsigned short _Fract a) { return a; } \ |
| TYPE UFR_to ## NAME (unsigned _Fract a) { return a; } \ |
| TYPE ULFR_to ## NAME (unsigned long _Fract a) { return a; } \ |
| TYPE ULLFR_to ## NAME (unsigned long long _Fract a) { return a; } \ |
| TYPE SAC_to ## NAME (short _Accum a) { return a; } \ |
| TYPE AC_to ## NAME (_Accum a) { return a; } \ |
| TYPE LAC_to ## NAME (long _Accum a) { return a; } \ |
| TYPE LLAC_to ## NAME (long long _Accum a) { return a; } \ |
| TYPE USAC_to ## NAME (unsigned short _Accum a) { return a; } \ |
| TYPE UAC_to ## NAME (unsigned _Accum a) { return a; } \ |
| TYPE ULAC_to ## NAME (unsigned long _Accum a) { return a; } \ |
| TYPE ULLAC_to ## NAME (unsigned long long _Accum a) { return a; } \ |
| TYPE SATSFR_to ## NAME (_Sat short _Fract a) { return a; } \ |
| TYPE SATFR_to ## NAME (_Sat _Fract a) { return a; } \ |
| TYPE SATLFR_to ## NAME (_Sat long _Fract a) { return a; } \ |
| TYPE SATLLFR_to ## NAME (_Sat long long _Fract a) { return a; } \ |
| TYPE SATUSFR_to ## NAME (_Sat unsigned short _Fract a) { return a; } \ |
| TYPE SATUFR_to ## NAME (_Sat unsigned _Fract a) { return a; } \ |
| TYPE SATULFR_to ## NAME (_Sat unsigned long _Fract a) { return a; } \ |
| TYPE SATULLFR_to ## NAME (_Sat unsigned long long _Fract a) { return a; } \ |
| TYPE SATSAC_to ## NAME (_Sat short _Accum a) { return a; } \ |
| TYPE SATAC_to ## NAME (_Sat _Accum a) { return a; } \ |
| TYPE SATLAC_to ## NAME (_Sat long _Accum a) { return a; } \ |
| TYPE SATLLAC_to ## NAME (_Sat long long _Accum a) { return a; } \ |
| TYPE SATUSAC_to ## NAME (_Sat unsigned short _Accum a) { return a; } \ |
| TYPE SATUAC_to ## NAME (_Sat unsigned _Accum a) { return a; } \ |
| TYPE SATULAC_to ## NAME (_Sat unsigned long _Accum a) { return a; } \ |
| TYPE SATULLAC_to ## NAME (_Sat unsigned long long _Accum a) { return a; } \ |
| _Sat TYPE SFR_to_SAT ## NAME (short _Fract a) { return a; } \ |
| _Sat TYPE FR_to_SAT ## NAME (_Fract a) { return a; } \ |
| _Sat TYPE LFR_to_SAT ## NAME (long _Fract a) { return a; } \ |
| _Sat TYPE LLFR_to_SAT ## NAME (long long _Fract a) { return a; } \ |
| _Sat TYPE USFR_to_SAT ## NAME (unsigned short _Fract a) { return a; } \ |
| _Sat TYPE UFR_to_SAT ## NAME (unsigned _Fract a) { return a; } \ |
| _Sat TYPE ULFR_to_SAT ## NAME (unsigned long _Fract a) { return a; } \ |
| _Sat TYPE ULLFR_to_SAT ## NAME (unsigned long long _Fract a) { return a; } \ |
| _Sat TYPE SAC_to_SAT ## NAME (short _Accum a) { return a; } \ |
| _Sat TYPE AC_to_SAT ## NAME (_Accum a) { return a; } \ |
| _Sat TYPE LAC_to_SAT ## NAME (long _Accum a) { return a; } \ |
| _Sat TYPE LLAC_to_SAT ## NAME (long long _Accum a) { return a; } \ |
| _Sat TYPE USAC_to_SAT ## NAME (unsigned short _Accum a) { return a; } \ |
| _Sat TYPE UAC_to_SAT ## NAME (unsigned _Accum a) { return a; } \ |
| _Sat TYPE ULAC_to_SAT ## NAME (unsigned long _Accum a) { return a; } \ |
| _Sat TYPE ULLAC_to_SAT ## NAME (unsigned long long _Accum a) { return a; } \ |
| _Sat TYPE SATSFR_to_SAT ## NAME (_Sat short _Fract a) { return a; } \ |
| _Sat TYPE SATFR_to_SAT ## NAME (_Sat _Fract a) { return a; } \ |
| _Sat TYPE SATLFR_to_SAT ## NAME (_Sat long _Fract a) { return a; } \ |
| _Sat TYPE SATLLFR_to_SAT ## NAME (_Sat long long _Fract a) { return a; } \ |
| _Sat TYPE SATUSFR_to_SAT ## NAME (_Sat unsigned short _Fract a) { return a; } \ |
| _Sat TYPE SATUFR_to_SAT ## NAME (_Sat unsigned _Fract a) { return a; } \ |
| _Sat TYPE SATULFR_to_SAT ## NAME (_Sat unsigned long _Fract a) { return a; } \ |
| _Sat TYPE SATULLFR_to_SAT ## NAME (_Sat unsigned long long _Fract a) { return a; } \ |
| _Sat TYPE SATSAC_to_SAT ## NAME (_Sat short _Accum a) { return a; } \ |
| _Sat TYPE SATAC_to_SAT ## NAME (_Sat _Accum a) { return a; } \ |
| _Sat TYPE SATLAC_to_SAT ## NAME (_Sat long _Accum a) { return a; } \ |
| _Sat TYPE SATLLAC_to_SAT ## NAME (_Sat long long _Accum a) { return a; } \ |
| _Sat TYPE SATUSAC_to_SAT ## NAME (_Sat unsigned short _Accum a) { return a; } \ |
| _Sat TYPE SATUAC_to_SAT ## NAME (_Sat unsigned _Accum a) { return a; } \ |
| _Sat TYPE SATULAC_to_SAT ## NAME (_Sat unsigned long _Accum a) { return a; } \ |
| _Sat TYPE SATULLAC_to_SAT ## NAME (_Sat unsigned long long _Accum a) { return a; } \ |
| _Complex int NAME ## _to_CI (TYPE a) { return a; } \ |
| _Complex unsigned int NAME ## _to_CUI (TYPE a) { return a; } \ |
| _Complex float NAME ## _to_CF (TYPE a) { return a; } \ |
| _Complex double NAME ## _to_CD (TYPE a) { return a; } \ |
| TYPE CI_to_ ## NAME (_Complex int a) { return a; } \ |
| TYPE CUI_to_ ## NAME (_Complex unsigned int a) { return a; } \ |
| TYPE CF_to_ ## NAME (_Complex float a) { return a; } \ |
| TYPE CD_to_ ## NAME (_Complex double a) { return a; } \ |
| _Sat TYPE CI_to_SAT ## NAME (_Complex int a) { return a; } \ |
| _Sat TYPE CUI_to_SAT ## NAME (_Complex unsigned int a) { return a; } \ |
| _Sat TYPE CF_to_SAT ## NAME (_Complex float a) { return a; } \ |
| _Sat TYPE CD_to_SAT ## NAME (_Complex double a) { return a; } |
| |
| CONV(short _Fract, sf); |
| CONV(_Fract, f); |
| CONV(long _Fract, lf); |
| CONV(long long _Fract, llf); |
| CONV(unsigned short _Fract, usf); |
| CONV(unsigned _Fract, uf); |
| CONV(unsigned long _Fract, ulf); |
| CONV(unsigned long long _Fract, ullf); |
| |
| CONV(short _Accum, sk); |
| CONV(_Accum, k); |
| CONV(long _Accum, lk); |
| CONV(long long _Accum, llk); |
| CONV(unsigned short _Accum, usk); |
| CONV(unsigned _Accum, uk); |
| CONV(unsigned long _Accum, ulk); |
| CONV(unsigned long long _Accum, ullk); |