URL
https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk
Only display areas with differences |
Details |
Blame |
View Log
Rev 324 |
Rev 384 |
|
|
/* The testcase failed due to corrupted alias information.
|
/* The testcase failed due to corrupted alias information.
|
During the crossjump analyzing step the mem alias info of the
|
During the crossjump analyzing step the mem alias info of the
|
st instructions are merged and get copied during basic block
|
st instructions are merged and get copied during basic block
|
reordering which leads to an insn with wrong alias info.
|
reordering which leads to an insn with wrong alias info.
|
The scheduler afterwards exchanges the mvc and st instructions
|
The scheduler afterwards exchanges the mvc and st instructions
|
not recognizing the anti dependence. */
|
not recognizing the anti dependence. */
|
/* { dg-do run } */
|
/* { dg-do run } */
|
/* { dg-options "-O3 -mtune=z990 -fno-inline" } */
|
/* { dg-options "-O3 -mtune=z990 -fno-inline" } */
|
|
|
extern void exit (int);
|
extern void exit (int);
|
extern void abort (void);
|
extern void abort (void);
|
|
|
int f;
|
int f;
|
int g;
|
int g;
|
int h;
|
int h;
|
|
|
int* x = &f;
|
int* x = &f;
|
int* p1 = &g;
|
int* p1 = &g;
|
int* p2 = &h;
|
int* p2 = &h;
|
|
|
int
|
int
|
foo(void)
|
foo(void)
|
{
|
{
|
|
|
if (*x == 0)
|
if (*x == 0)
|
{
|
{
|
x = p1; /* mvc - memory to memory */
|
x = p1; /* mvc - memory to memory */
|
p1 = (int*)0; /* st - register to memory */
|
p1 = (int*)0; /* st - register to memory */
|
return 1;
|
return 1;
|
}
|
}
|
if (*x == 5)
|
if (*x == 5)
|
{
|
{
|
f = 1;
|
f = 1;
|
g = 2;
|
g = 2;
|
|
|
p2 = (int*)0; /* st */
|
p2 = (int*)0; /* st */
|
return 1;
|
return 1;
|
}
|
}
|
}
|
}
|
|
|
int
|
int
|
main (int argc, char** argv)
|
main (int argc, char** argv)
|
{
|
{
|
foo ();
|
foo ();
|
|
|
/* If the scheduler has exchanged the mvc and st instructions,
|
/* If the scheduler has exchanged the mvc and st instructions,
|
x is 0. The expected result is &g. */
|
x is 0. The expected result is &g. */
|
if (x == &g)
|
if (x == &g)
|
exit (0);
|
exit (0);
|
else
|
else
|
abort ();
|
abort ();
|
}
|
}
|
|
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.