111
|
1 /* PR tree-optimization/58791 */
|
|
2 /* { dg-do run } */
|
|
3 /* { dg-options "-g -ffast-math" } */
|
|
4
|
|
5 #include "../nop.h"
|
|
6
|
|
7 __attribute__((noinline, noclone)) double
|
|
8 foo (float a, float b, float c, float d, float l, double u)
|
|
9 {
|
|
10 float e = a * d;
|
|
11 float f = d * e;
|
|
12 double g = (double) f;
|
|
13 double h = (double) b;
|
|
14 double i = g * h; /* { dg-final { gdb-test pr58791-4.c:32 "i" "486" { target { { i?86-*-* x86_64-*-* } && lp64 } } } } */
|
|
15 double i2 = i + 1.0; /* { dg-final { gdb-test pr58791-4.c:32 "i2" "487" { target { { i?86-*-* x86_64-*-* } && lp64 } } } } */
|
|
16 double j = i * 3.25;
|
|
17 double k = h + j;
|
|
18 float m = l * 8.75;
|
|
19 double n = (double) m;
|
|
20 double o = (double) a;
|
|
21 double p = n * o;
|
|
22 double q = h * p;
|
|
23 double r = q * 2.5;
|
|
24 double s = k - r;
|
|
25 double t = (double) c;
|
|
26 double v = o * u;
|
|
27 double w = o * v;
|
|
28 double x = h * w;
|
|
29 double y = h * x;
|
|
30 double z = y * 8.5;
|
|
31 asm volatile (NOP : : : "memory");
|
|
32 asm volatile (NOP : : : "memory");
|
|
33 return s - z;
|
|
34 }
|
|
35
|
|
36 int
|
|
37 main ()
|
|
38 {
|
|
39 foo (3.0f, 2.0f, -1.0f, 9.0f, 1.0f, 2.0);
|
|
40 return 0;
|
|
41 }
|