| /* PR tree-optimization/67815 */ |
| /* { dg-do compile } */ |
| /* { dg-options "-Ofast -g -fdump-tree-reassoc1-details" } */ |
| |
| extern float barf (float, float); |
| extern double bar (double, double); |
| |
| float |
| f0 (float x) |
| { |
| return 7.5 * __builtin_copysignf (2.0, x); |
| } |
| |
| float |
| f1 (float x) |
| { |
| return -7.5 * __builtin_copysignf (2.0, x); |
| } |
| |
| double |
| f2 (double x, double y) |
| { |
| return x * ((1.0/12) * __builtin_copysign (1.0, y)); |
| } |
| |
| double |
| f3 (double x, double y) |
| { |
| return (x * (-1.0/12)) * __builtin_copysign (1.0, y); |
| } |
| |
| double |
| f4 (double x, double y, double z) |
| { |
| return (x * z) * ((1.0/12) * __builtin_copysign (4.0, y)); |
| } |
| |
| double |
| f5 (double x, double y, double z) |
| { |
| return (x * (-1.0/12)) * z * __builtin_copysign (2.0, y); |
| } |
| |
| float |
| f6 (float x, float y) |
| { |
| return 7.5f * y * __builtin_copysignf (2.0f, x); |
| } |
| |
| float |
| f7 (float x, float y) |
| { |
| return -7.5f * y * __builtin_copysignf (2.0f, x); |
| } |
| |
| float |
| f8 (float x) |
| { |
| float tmp1 = 7.5f; |
| float tmp2 = __builtin_copysignf (2.0f, x); |
| return tmp1 * tmp2; |
| } |
| |
| double |
| f9 (double x) |
| { |
| double tmp1 = 7.5; |
| double tmp2 = __builtin_copysign (2.0, x); |
| return tmp1 * tmp2; |
| } |
| |
| float |
| f10 (float x) |
| { |
| float tmp1 = 7.5f; |
| float tmp2 = __builtin_copysignf (2.0f, x); |
| float tmp3 = tmp2 * 24.0f; |
| return tmp1 * tmp2; |
| } |
| |
| double |
| f11 (double x) |
| { |
| double tmp1 = 7.5; |
| double tmp2 = __builtin_copysign (2.0, x); |
| double tmp3 = tmp2 * 24.0; |
| return tmp1 * tmp2; |
| } |
| |
| float |
| f12 (float x) |
| { |
| float tmp1 = 7.5f; |
| float tmp2 = __builtin_copysignf (2.0f, x); |
| /* Can't reassoc here. */ |
| return barf (tmp1 * tmp2, tmp2); |
| } |
| |
| double |
| f13 (double x) |
| { |
| double tmp1 = 7.5; |
| double tmp2 = __builtin_copysign (2.0, x); |
| /* Can't reassoc here. */ |
| return bar (tmp1 * tmp2, tmp2); |
| } |
| /* { dg-final { scan-tree-dump-times "Optimizing copysign" 12 "reassoc1"} }*/ |