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.dg/] [tree-ssa/] [pr19210-1.c] - Diff between revs 298 and 384

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

Rev 298 Rev 384
/* { dg-do compile } */
/* { dg-do compile } */
/* { dg-options "-O2 -Wunsafe-loop-optimizations" } */
/* { dg-options "-O2 -Wunsafe-loop-optimizations" } */
extern void g(void);
extern void g(void);
 
 
void
void
f (unsigned n)
f (unsigned n)
{
{
  unsigned k;
  unsigned k;
  for(k = 0;k <= n;k++) /* { dg-warning "cannot optimize.*infinite loops" } */
  for(k = 0;k <= n;k++) /* { dg-warning "cannot optimize.*infinite loops" } */
    g();
    g();
 
 
  for(k = 0;k <= n;k += 4) /* { dg-warning "cannot optimize.*overflow" } */
  for(k = 0;k <= n;k += 4) /* { dg-warning "cannot optimize.*overflow" } */
    g();
    g();
 
 
  /* We used to get warning for this loop.  However, since then # of iterations
  /* We used to get warning for this loop.  However, since then # of iterations
     analysis improved, and we can now prove that this loop does not verflow.
     analysis improved, and we can now prove that this loop does not verflow.
     This is because the only case when it would overflow is if n = ~0 (since
     This is because the only case when it would overflow is if n = ~0 (since
     ~0 is divisible by 5), and this cannot be the case, since when we got
     ~0 is divisible by 5), and this cannot be the case, since when we got
     here, the previous loop exited, thus there exists k > n.  */
     here, the previous loop exited, thus there exists k > n.  */
  for(k = 5;k <= n;k += 5)
  for(k = 5;k <= n;k += 5)
    g();
    g();
 
 
  /* So we need the following loop, instead.  */
  /* So we need the following loop, instead.  */
  for(k = 4;k <= n;k += 5) /* { dg-warning "cannot optimize.*overflow" } */
  for(k = 4;k <= n;k += 5) /* { dg-warning "cannot optimize.*overflow" } */
    g();
    g();
 
 
  for(k = 15;k >= n;k--) /* { dg-warning "cannot optimize.*infinite" } */
  for(k = 15;k >= n;k--) /* { dg-warning "cannot optimize.*infinite" } */
    g();
    g();
}
}
 
 

powered by: WebSVN 2.1.0

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