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