URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Only display areas with differences |
Details |
Blame |
View Log
Rev 298 |
Rev 338 |
/* { dg-do compile } */
|
/* { dg-do compile } */
|
/* { dg-options "-Os -fdump-tree-sink-stats" } */
|
/* { dg-options "-Os -fdump-tree-sink-stats" } */
|
|
|
typedef short int16_t;
|
typedef short int16_t;
|
typedef unsigned char uint8_t;
|
typedef unsigned char uint8_t;
|
|
|
void foo(int16_t runs[], uint8_t alpha[], int x, int count)
|
void foo(int16_t runs[], uint8_t alpha[], int x, int count)
|
{
|
{
|
int16_t* next_runs = runs + x;
|
int16_t* next_runs = runs + x;
|
uint8_t* next_alpha = alpha + x;
|
uint8_t* next_alpha = alpha + x;
|
|
|
while (x > 0)
|
while (x > 0)
|
{
|
{
|
int n = runs[0];
|
int n = runs[0];
|
|
|
if (x < n)
|
if (x < n)
|
{
|
{
|
alpha[x] = alpha[0];
|
alpha[x] = alpha[0];
|
runs[0] = (int16_t)(x);
|
runs[0] = (int16_t)(x);
|
runs[x] = (int16_t)(n - x);
|
runs[x] = (int16_t)(n - x);
|
break;
|
break;
|
}
|
}
|
runs += n;
|
runs += n;
|
alpha += n;
|
alpha += n;
|
x -= n;
|
x -= n;
|
}
|
}
|
|
|
runs = next_runs;
|
runs = next_runs;
|
alpha = next_alpha;
|
alpha = next_alpha;
|
x = count;
|
x = count;
|
|
|
for (;;)
|
for (;;)
|
{
|
{
|
int n = runs[0];
|
int n = runs[0];
|
|
|
if (x < n)
|
if (x < n)
|
{
|
{
|
alpha[x] = alpha[0];
|
alpha[x] = alpha[0];
|
break;
|
break;
|
}
|
}
|
x -= n;
|
x -= n;
|
runs += n;
|
runs += n;
|
}
|
}
|
}
|
}
|
|
|
/* We should not sink the next_runs = runs + x calculation after the loop. */
|
/* We should not sink the next_runs = runs + x calculation after the loop. */
|
/* { dg-final { scan-tree-dump-times "Sunk statements:" 0 "sink" } } */
|
/* { dg-final { scan-tree-dump-times "Sunk statements:" 0 "sink" } } */
|
/* { dg-final { cleanup-tree-dump "sink" } } */
|
/* { dg-final { cleanup-tree-dump "sink" } } */
|
|
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.