2 /* { dg-options "-std=gnu99 -O0" } */
4 extern void abort (void);
6 /* Make sure GCC knows there is no associativity for saturating types. */
8 /* Don't transform to (temp + (0.5r + 0.8r)) */
9 _Sat _Fract
add_test (_Sat _Fract temp
)
11 return temp
+ 0.5r
+ 0.8r
;
14 /* Don't transform to (temp * ((-0.5r - 0.5r) * (-0.5r - 0.5r))) */
15 _Sat _Fract
mul_test (_Sat _Fract temp
)
17 return temp
* (-0.5r
- 0.5r
) * (-0.5r
- 0.5r
);
20 /* Don't transform to ((temp1 + temp2) * 0.5r) */
21 _Sat _Fract
mul_add_test (_Sat _Fract temp1
, _Sat _Fract temp2
)
23 return temp1
* 0.5r
+ temp2
* 0.5r
;
26 /* Don't transform to ((temp1 - temp2) * 0.5r) */
27 _Sat _Fract
mul_sub_test (_Sat _Fract temp1
, _Sat _Fract temp2
)
29 return temp1
* 0.5r
- temp2
* 0.5r
;
44 a
= mul_add_test (0.75r
, 0.5r
);
48 a
= mul_sub_test (0.75r
, -0.5r
);