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

Subversion Repositories openrisc

[/] [openrisc/] [tags/] [gnu-src/] [gcc-4.5.1/] [gcc-4.5.1-or32-1.0rc1/] [gcc/] [testsuite/] [gcc.dg/] [tree-ssa/] [20050719-1.c] - Diff between revs 298 and 338

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

Rev 298 Rev 338
/* { dg-do run } */
/* { dg-do run } */
/* { dg-options "-O2" } */
/* { dg-options "-O2" } */
 
 
extern void abort (void) __attribute__ ((__nothrow__)) __attribute__
extern void abort (void) __attribute__ ((__nothrow__)) __attribute__
((__noreturn__));
((__noreturn__));
extern void exit (int __status) __attribute__ ((__nothrow__))
extern void exit (int __status) __attribute__ ((__nothrow__))
__attribute__ ((__noreturn__));
__attribute__ ((__noreturn__));
 
 
struct bootLoader {
struct bootLoader {
  int x;
  int x;
};
};
 
 
void
void
zap(struct bootLoader *bootLoader)
zap(struct bootLoader *bootLoader)
{
{
  /* The expression on the RHS of the assignment is *not* a
  /* The expression on the RHS of the assignment is *not* a
     dereference of pointer 'bootLoader'.  It is merely used as an
     dereference of pointer 'bootLoader'.  It is merely used as an
     offset calculation.  VRP was erroneously removing the if()
     offset calculation.  VRP was erroneously removing the if()
     because it thought that 'bootLoader' was always dereferenced.  */
     because it thought that 'bootLoader' was always dereferenced.  */
  int *boot = &bootLoader->x;
  int *boot = &bootLoader->x;
 
 
  if (bootLoader)
  if (bootLoader)
    {
    {
      useboot (boot);
      useboot (boot);
    }
    }
}
}
 
 
int
int
useboot (void *boot)
useboot (void *boot)
{
{
  abort ();
  abort ();
}
}
 
 
main()
main()
{
{
  zap (0);
  zap (0);
  return 0;
  return 0;
}
}
 
 

powered by: WebSVN 2.1.0

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