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/] [tls/] [opt-2.c] - Diff between revs 298 and 338

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

Rev 298 Rev 338
/* This testcase generated invalid assembly on IA-32,
/* This testcase generated invalid assembly on IA-32,
   since %gs:0 memory load was not exposed to the compiler
   since %gs:0 memory load was not exposed to the compiler
   as memory load and mem to mem moves are not possible
   as memory load and mem to mem moves are not possible
   on IA-32.  */
   on IA-32.  */
/* { dg-do link } */
/* { dg-do link } */
/* { dg-options "-O2 -ftls-model=initial-exec" } */
/* { dg-options "-O2 -ftls-model=initial-exec" } */
/* { dg-options "-O2 -ftls-model=initial-exec -march=i686" { target { { i?86-*-* x86_64-*-* } && ilp32 } } } */
/* { dg-options "-O2 -ftls-model=initial-exec -march=i686" { target { { i?86-*-* x86_64-*-* } && ilp32 } } } */
/* { dg-require-effective-target tls_native } */
/* { dg-require-effective-target tls_native } */
/* { dg-require-effective-target tls_runtime  } */
/* { dg-require-effective-target tls_runtime  } */
 
 
__thread int thr;
__thread int thr;
 
 
struct A
struct A
{
{
  unsigned int a, b, c, d, e;
  unsigned int a, b, c, d, e;
};
};
 
 
int bar (int x, unsigned long y, void *z)
int bar (int x, unsigned long y, void *z)
{
{
  return 0;
  return 0;
}
}
 
 
int
int
foo (int x, int y, const struct A *z)
foo (int x, int y, const struct A *z)
{
{
  struct A b;
  struct A b;
  int d;
  int d;
 
 
  b = *z;
  b = *z;
  d = bar (x, y, &b);
  d = bar (x, y, &b);
  if (d == 0 && y == 0x5402)
  if (d == 0 && y == 0x5402)
    {
    {
      int e = thr;
      int e = thr;
      d = bar (x, 0x5401, &b);
      d = bar (x, 0x5401, &b);
      if (d)
      if (d)
        {
        {
          thr = e;
          thr = e;
          d = 0;
          d = 0;
        }
        }
      else if ((z->c & 0600) != (b.c & 0600)
      else if ((z->c & 0600) != (b.c & 0600)
               || ((z->c & 060) && ((z->c & 060) != (b.c & 060))))
               || ((z->c & 060) && ((z->c & 060) != (b.c & 060))))
        {
        {
          thr = 22;
          thr = 22;
          d = -1;
          d = -1;
        }
        }
    }
    }
 
 
  return d;
  return d;
}
}
 
 
int main (void)
int main (void)
{
{
  foo (1, 2, 0);
  foo (1, 2, 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.