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.c-torture/] [execute/] [pr15262-1.c] - Diff between revs 297 and 338

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

Rev 297 Rev 338
/* PR 15262.
/* PR 15262.
   The alias analyzer only considers relations between pointers and
   The alias analyzer only considers relations between pointers and
   symbols.  If two pointers P and Q point to the same symbol S, then
   symbols.  If two pointers P and Q point to the same symbol S, then
   their respective memory tags will either be the same or they will
   their respective memory tags will either be the same or they will
   have S in their alias set.
   have S in their alias set.
 
 
   However, if there are no common symbols between P and Q, TBAA will
   However, if there are no common symbols between P and Q, TBAA will
   currently miss their alias relationship altogether.  */
   currently miss their alias relationship altogether.  */
struct A
struct A
{
{
  int t;
  int t;
  int i;
  int i;
};
};
 
 
int foo () { return 3; }
int foo () { return 3; }
 
 
main ()
main ()
{
{
  struct A loc, *locp;
  struct A loc, *locp;
  float f, g, *p;
  float f, g, *p;
  int T355, *T356;
  int T355, *T356;
 
 
  /* Avoid the partial hack in TBAA that would consider memory tags if
  /* Avoid the partial hack in TBAA that would consider memory tags if
     the program had no addressable symbols.  */
     the program had no addressable symbols.  */
  f = 3;
  f = 3;
  g = 2;
  g = 2;
  p = foo () ? &g : &f;
  p = foo () ? &g : &f;
  if (*p > 0.0)
  if (*p > 0.0)
    g = 1;
    g = 1;
 
 
  /* Store into *locp and cache its current value.  */
  /* Store into *locp and cache its current value.  */
  locp = malloc (sizeof (*locp));
  locp = malloc (sizeof (*locp));
  locp->i = 10;
  locp->i = 10;
  T355 = locp->i;
  T355 = locp->i;
 
 
  /* Take the address of one of locp's fields and write to it.  */
  /* Take the address of one of locp's fields and write to it.  */
  T356 = &locp->i;
  T356 = &locp->i;
  *T356 = 1;
  *T356 = 1;
 
 
  /* Read the recently stored value.  If TBAA fails, this will appear
  /* Read the recently stored value.  If TBAA fails, this will appear
     as a redundant load that will be replaced with '10'.  */
     as a redundant load that will be replaced with '10'.  */
  T355 = locp->i;
  T355 = locp->i;
  if (T355 != 1)
  if (T355 != 1)
    abort ();
    abort ();
 
 
  return 0;
  return 0;
}
}
 
 

powered by: WebSVN 2.1.0

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