mirror of
https://github.com/nArnoSNES/tcc-65816.git
synced 2025-02-20 04:28:56 +00:00
60 lines
912 B
C
60 lines
912 B
C
/* PR24716, scalar evolution returning the wrong result
|
|
for pdest. */
|
|
|
|
int Link[] = { -1 };
|
|
int W[] = { 2 };
|
|
|
|
extern void abort (void);
|
|
|
|
int f (int k, int p)
|
|
{
|
|
int pdest, j, D1361;
|
|
j = 0;
|
|
pdest = 0;
|
|
for (;;) {
|
|
if (pdest > 2)
|
|
do
|
|
j--, pdest++;
|
|
while (j > 2);
|
|
|
|
if (j == 1)
|
|
break;
|
|
|
|
while (pdest > p)
|
|
if (j == p)
|
|
pdest++;
|
|
|
|
do
|
|
{
|
|
D1361 = W[k];
|
|
do
|
|
if (D1361 != 0)
|
|
pdest = 1, W[k] = D1361 = 0;
|
|
while (p < 1);
|
|
} while (k > 0);
|
|
|
|
do
|
|
{
|
|
p = 0;
|
|
k = Link[k];
|
|
while (p < j)
|
|
if (k != -1)
|
|
pdest++, p++;
|
|
}
|
|
while (k != -1);
|
|
j = 1;
|
|
}
|
|
|
|
/* The correct return value should be pdest (1 in the call from main).
|
|
DOM3 is mistaken and propagates a 0 here. */
|
|
return pdest;
|
|
}
|
|
|
|
int main ()
|
|
{
|
|
if (!f (0, 2))
|
|
abort ();
|
|
return 0;
|
|
}
|
|
|