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

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

Rev 298 Rev 338
/* The problem in this PR was mostly finding a suitable place to insert
/* The problem in this PR was mostly finding a suitable place to insert
   the reciprocals of the function arguments.  This test case tries to
   the reciprocals of the function arguments.  This test case tries to
   test three possible ways of how this may go wrong.  */
   test three possible ways of how this may go wrong.  */
/* { dg-options "-O2 -ffast-math" } */
/* { dg-options "-O2 -ffast-math" } */
/* { dg-do compile } */
/* { dg-do compile } */
 
 
/* The original test case.  */
/* The original test case.  */
double
double
f1 (double a, double b, double c)
f1 (double a, double b, double c)
{
{
  double y0;
  double y0;
  double y1;
  double y1;
 
 
  if (a == 0.0)
  if (a == 0.0)
    {
    {
      y0 = -c / b;
      y0 = -c / b;
      return y0;
      return y0;
    }
    }
  y0 = c / b;
  y0 = c / b;
  y1 = a / b;
  y1 = a / b;
  return y0 * y1;
  return y0 * y1;
}
}
 
 
/* Labels may end up in the middle of a block.  Also bad.  */
/* Labels may end up in the middle of a block.  Also bad.  */
double
double
f2 (double a, double b, double c)
f2 (double a, double b, double c)
{
{
  double y0;
  double y0;
  double y1;
  double y1;
 
 
a_label:
a_label:
another_label:
another_label:
  if (a == 0.0)
  if (a == 0.0)
    {
    {
      y0 = -c / b;
      y0 = -c / b;
      return y0;
      return y0;
    }
    }
  y0 = c / b;
  y0 = c / b;
  y1 = a / b;
  y1 = a / b;
  return y0 * y1;
  return y0 * y1;
}
}
 
 
/* Uses must still be dominated by their defs.  */
/* Uses must still be dominated by their defs.  */
double
double
f3 (double a, double b, double c)
f3 (double a, double b, double c)
{
{
  double y0;
  double y0;
  double y1;
  double y1;
 
 
  y0 = -c / b;
  y0 = -c / b;
  if (a == 0.0)
  if (a == 0.0)
    {
    {
      return y0;
      return y0;
    }
    }
  y0 = c / b;
  y0 = c / b;
  y1 = a / b;
  y1 = a / b;
  return y0 * y1;
  return y0 * y1;
}
}
 
 

powered by: WebSVN 2.1.0

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