OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

[/] [openrisc/] [tags/] [gnu-src/] [gcc-4.5.1/] [gcc-4.5.1-or32-1.0rc2/] [gcc/] [testsuite/] [gcc.target/] [s390/] [20040305-1.c] - Diff between revs 324 and 384

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 ();
}
}
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.