1/* { dg-do run } */ 2/* { dg-options "-std=gnu99 -O0" } */ 3 4/* C99 6.5.15 Conditional operator. 5 Test with fixed-point operands. 6 Based on the test from ../dfp/. */ 7 8extern void abort (void); 9volatile int yes, no; 10 11#define FUNC(TYPE,NAME,PF) \ 12volatile TYPE NAME ## a, NAME ## b, NAME ## c; \ 13void \ 14init_ ## NAME () \ 15{ \ 16 NAME ## b = 0.2 ## PF; \ 17 NAME ## c = 0.3 ## PF; \ 18 yes = 1; \ 19 no = 0; \ 20} 21 22FUNC (short _Fract, sf, hr) 23FUNC (_Fract, f, r) 24FUNC (long _Fract, lf, lr) 25FUNC (long long _Fract, llf, llr) 26FUNC (unsigned short _Fract, usf, uhr) 27FUNC (unsigned _Fract, uf, ur) 28FUNC (unsigned long _Fract, ulf, ulr) 29FUNC (long long _Fract, ullf, ullr) 30FUNC (_Sat short _Fract, Ssf, hr) 31FUNC (_Sat _Fract, Sf, r) 32FUNC (_Sat long _Fract, Slf, lr) 33FUNC (_Sat long long _Fract, Sllf, llr) 34FUNC (_Sat unsigned short _Fract, Susf, uhr) 35FUNC (_Sat unsigned _Fract, Suf, ur) 36FUNC (_Sat unsigned long _Fract, Sulf, ulr) 37FUNC (_Sat long long _Fract, Sullf, ullr) 38FUNC (short _Accum, sa, hk) 39FUNC (_Accum, a, k) 40FUNC (long _Accum, la, lk) 41FUNC (long long _Accum, lla, llk) 42FUNC (unsigned short _Accum, usa, uhk) 43FUNC (unsigned _Accum, ua, uk) 44FUNC (unsigned long _Accum, ula, ulk) 45FUNC (long long _Accum, ulla, ullk) 46FUNC (_Sat short _Accum, Ssa, hk) 47FUNC (_Sat _Accum, Sa, k) 48FUNC (_Sat long _Accum, Sla, lk) 49FUNC (_Sat long long _Accum, Slla, llk) 50FUNC (_Sat unsigned short _Accum, Susa, uhk) 51FUNC (_Sat unsigned _Accum, Sua, uk) 52FUNC (_Sat unsigned long _Accum, Sula, ulk) 53FUNC (_Sat long long _Accum, Sulla, ullk) 54 55int 56main () 57{ 58#define TEST(NAME) \ 59 init_ ## NAME (); \ 60 NAME ## a = yes ? NAME ## b : NAME ## c; \ 61 if (NAME ## a != NAME ## b) \ 62 abort (); \ 63 NAME ## a = no ? NAME ## b : NAME ## c; \ 64 if (NAME ## a != NAME ## c) \ 65 abort (); 66 67 TEST(sf) 68 TEST(f) 69 TEST(lf) 70 TEST(llf) 71 TEST(usf) 72 TEST(uf) 73 TEST(ulf) 74 TEST(ullf) 75 TEST(Ssf) 76 TEST(Sf) 77 TEST(Slf) 78 TEST(Sllf) 79 TEST(Susf) 80 TEST(Suf) 81 TEST(Sulf) 82 TEST(Sullf) 83 TEST(sa) 84 TEST(a) 85 TEST(la) 86 TEST(lla) 87 TEST(usa) 88 TEST(ua) 89 TEST(ula) 90 TEST(ulla) 91 TEST(Ssa) 92 TEST(Sa) 93 TEST(Sla) 94 TEST(Slla) 95 TEST(Susa) 96 TEST(Sua) 97 TEST(Sula) 98 TEST(Sulla) 99 100 return 0; 101} 102