* gcc.dg/i386-loop-1.c: New test.

From-SVN: r64031
This commit is contained in:
Eric Botcazou 2003-03-09 16:40:00 +01:00 committed by Eric Botcazou
parent f937d5e67e
commit 9edf6a4c0f
2 changed files with 109 additions and 0 deletions

View File

@ -1,3 +1,7 @@
2003-03-09 Eric Botcazou <ebotcazou@libertysurf.fr>
* gcc.dg/i386-loop-1.c: New test.
2003-03-09 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
PR c++/9970

View File

@ -0,0 +1,105 @@
/* PR optimization/9888 */
/* { dg-do run { target i?86-*-* } } */
/* { 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);
}