OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-stable/] [gcc-4.5.1/] [gcc/] [testsuite/] [gcc.dg/] [tree-ssa/] [20040319-1.c] - Diff between revs 816 and 826

Only display areas with differences | Details | Blame | View Log

Rev 816 Rev 826
/* { dg-do run } */
/* { dg-do run } */
/* { dg-options "-O2" } */
/* { dg-options "-O2" } */
 
 
/* Test derived from PR 14643.  When a function has no addressable
/* Test derived from PR 14643.  When a function has no addressable
   variables but 2 or more pointers have conflicting memory tags, they
   variables but 2 or more pointers have conflicting memory tags, they
   were not being processed by the type based alias analyzer,
   were not being processed by the type based alias analyzer,
   resulting in optimizations removing a non-redundant load.  */
   resulting in optimizations removing a non-redundant load.  */
 
 
extern void abort (void);
extern void abort (void);
 
 
struct bar { int count;  int *arr;};
struct bar { int count;  int *arr;};
 
 
void foo (struct bar *b)
void foo (struct bar *b)
{
{
  b->count = 0;
  b->count = 0;
  *(b->arr) = 2;
  *(b->arr) = 2;
  if (b->count == 0)     /* b->count can't be assumed to be 0 here.  */
  if (b->count == 0)     /* b->count can't be assumed to be 0 here.  */
    abort ();
    abort ();
}
}
 
 
main ()
main ()
{
{
  struct bar x;
  struct bar x;
  x.arr = &x.count;
  x.arr = &x.count;
  foo (&x);
  foo (&x);
  return 0;
  return 0;
}
}
 
 

powered by: WebSVN 2.1.0

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