OSDN Git Service

* builtins.def: Defome atan, atanf, atanl, tan, tanf and tanl
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.dg / i386-loop-1.c
1 /* PR optimization/9888 */
2 /* { dg-do run { target i?86-*-* } } */
3 /* { dg-options "-mtune=k6 -O3" } */
4
5 /* Verify that GCC doesn't emit out of range 'loop' instructions.  */
6
7 extern void abort (void);
8 extern void exit (int);
9
10    
11 f1 (a)
12      long a;
13 {
14   int i;
15   for (i = 0; i < 10; i++)
16     {
17       if (--a == -1)
18         return i;
19     }
20   return -1;
21 }
22
23 f2 (a)
24      long a;
25 {
26   int i;
27   for (i = 0; i < 10; i++)
28     {
29       if (--a != -1)
30         return i;
31     }
32   return -1;
33 }
34
35 f3 (a)
36      long a;
37 {
38   int i;
39   for (i = 0; i < 10; i++)
40     {
41       if (--a == 0)
42         return i;
43     }
44   return -1;
45 }
46
47 f4 (a)
48      long a;
49 {
50   int i;
51   for (i = 0; i < 10; i++)
52     {
53       if (--a != 0)
54         return i;
55     }
56   return -1;
57 }
58
59 f5 (a)
60      long a;
61 {
62   int i;
63   for (i = 0; i < 10; i++)
64     {
65       if (++a == 0)
66         return i;
67     }
68   return -1;
69 }
70
71 f6 (a)
72      long a;
73 {
74   int i;
75   for (i = 0; i < 10; i++)
76     {
77       if (++a != 0)
78         return i;
79     }
80   return -1;
81 }
82
83
84 int main()
85 {
86   if (f1 (5L) != 5)
87     abort ();
88   if (f2 (1L) != 0)
89     abort ();
90   if (f2 (0L) != 1)
91     abort ();
92   if (f3 (5L) != 4)
93     abort ();
94   if (f4 (1L) != 1)
95     abort ();
96   if (f4 (0L) != 0)
97     abort ();
98   if (f5 (-5L) != 4)
99     abort ();
100   if (f6 (-1L) != 1)
101     abort ();
102   if (f6 (0L) != 0)
103     abort ();
104   exit (0);
105 }