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