URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Go to most recent revision |
Only display areas with differences |
Details |
Blame |
View Log
Rev 298 |
Rev 816 |
/* { dg-do compile } */
|
/* { dg-do compile } */
|
/* { dg-options "-O2 -fdump-tree-vrp1-details" } */
|
/* { dg-options "-O2 -fdump-tree-vrp1-details" } */
|
|
|
static int blocksize = 4096;
|
static int blocksize = 4096;
|
|
|
int bar (int);
|
int bar (int);
|
|
|
void foo (void)
|
void foo (void)
|
{
|
{
|
int toread;
|
int toread;
|
int bytes;
|
int bytes;
|
static char eof_reached = 0;
|
static char eof_reached = 0;
|
|
|
toread = blocksize;
|
toread = blocksize;
|
bytes = 1;
|
bytes = 1;
|
|
|
while (toread != 0)
|
while (toread != 0)
|
{
|
{
|
bytes = bar (toread);
|
bytes = bar (toread);
|
if (bytes <= 0)
|
if (bytes <= 0)
|
{
|
{
|
if (bytes < 0)
|
if (bytes < 0)
|
continue;
|
continue;
|
break;
|
break;
|
}
|
}
|
toread -= bytes;
|
toread -= bytes;
|
}
|
}
|
|
|
if (bytes == 0)
|
if (bytes == 0)
|
eof_reached = 1;
|
eof_reached = 1;
|
}
|
}
|
|
|
|
|
/* First, we should simplify the bits < 0 test within the loop. */
|
/* First, we should simplify the bits < 0 test within the loop. */
|
/* { dg-final { scan-tree-dump-times "Simplified relational" 1 "vrp1" } } */
|
/* { dg-final { scan-tree-dump-times "Simplified relational" 1 "vrp1" } } */
|
|
|
/* Second, we should thread the edge out of the loop via the break
|
/* Second, we should thread the edge out of the loop via the break
|
statement. We also realize that the final bytes == 0 test is useless,
|
statement. We also realize that the final bytes == 0 test is useless,
|
and thread over it. */
|
and thread over it. */
|
/* { dg-final { scan-tree-dump-times "Threaded jump" 3 "vrp1" } } */
|
/* { dg-final { scan-tree-dump-times "Threaded jump" 3 "vrp1" } } */
|
|
|
/* { dg-final { cleanup-tree-dump "vrp1" } } */
|
/* { dg-final { cleanup-tree-dump "vrp1" } } */
|
|
|
|
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.