comparison gcc/testsuite/gcc.dg/sinatan-3.c @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents
children
comparison
equal deleted inserted replaced
111:04ced10e8804 131:84e7813d76e9
1 /* { dg-do compile } */
2 /* { dg-options "-Ofast -fdump-tree-optimized" } */
3
4 extern float sinf (float);
5 extern float cosf (float);
6 extern float atanf (float);
7 extern double sin (double);
8 extern double cos (double);
9 extern double atan (double);
10 extern long double sinl (long double);
11 extern long double cosl (long double);
12 extern long double atanl (long double);
13
14 float __attribute__ ((noinline))
15 cosatanf_(float x)
16 {
17 float atg = atanf(x);
18 return cosf(atg) + atg;
19 }
20
21 double __attribute__ ((noinline))
22 cosatan_(double x)
23 {
24 double atg = atan(x);
25 return cos(atg) + atg;
26 }
27
28 long double __attribute__ ((noinline))
29 cosatanl_(long double x)
30 {
31 long double atg = atanl(x);
32 return cosl(atg) + atg;
33 }
34
35 float __attribute__ ((noinline))
36 sinatanf_(float x)
37 {
38 float atg = atanf(x);
39 return sinf(atg) + atg;
40 }
41
42 double __attribute__ ((noinline))
43 sinatan_(double x)
44 {
45 double atg = atan(x);
46 return sin(atg) + atg;
47 }
48
49 long double __attribute__ ((noinline))
50 sinatanl_(long double x)
51 {
52 long double atg = atanl(x);
53 return sinl(atg) + atg;
54 }
55
56 /* There should be calls to both sin and atan */
57 /* { dg-final { scan-tree-dump "cos " "optimized" } } */
58 /* { dg-final { scan-tree-dump "sin " "optimized" } } */
59 /* { dg-final { scan-tree-dump "atan " "optimized" } } */
60 /* { dg-final { scan-tree-dump "cosf " "optimized" } } */
61 /* { dg-final { scan-tree-dump "sinf " "optimized" } } */
62 /* { dg-final { scan-tree-dump "atanf " "optimized" } } */
63 /* { dg-final { scan-tree-dump "cosl " "optimized" } } */
64 /* { dg-final { scan-tree-dump "sinl " "optimized" } } */
65 /* { dg-final { scan-tree-dump "atanl " "optimized" } } */