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

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 298 Rev 384
/* { dg-do run }  */
/* { dg-do run }  */
/* { dg-options -O2 }  */
/* { dg-options -O2 }  */
 
 
extern void abort (void);
extern void abort (void);
 
 
foo_div (int i, int j)
foo_div (int i, int j)
{
{
  int k;
  int k;
 
 
  /* [-INF, -1] / [1, +INF] should not give [-1, -1].  */
  /* [-INF, -1] / [1, +INF] should not give [-1, -1].  */
  if (i <= -1)
  if (i <= -1)
    if (j >= 1)
    if (j >= 1)
      {
      {
        k = i / j;
        k = i / j;
        if (k == -1)
        if (k == -1)
          abort ();
          abort ();
 
 
        return k;
        return k;
      }
      }
 
 
  /* [-20, -10] / [2, 10] should give [-10, -1].  */
  /* [-20, -10] / [2, 10] should give [-10, -1].  */
  if (i >= -20)
  if (i >= -20)
    if (i <= -10)
    if (i <= -10)
      if (j >= 2)
      if (j >= 2)
        if (j <= 10)
        if (j <= 10)
          {
          {
            k = i / j;
            k = i / j;
            if (k < -10)
            if (k < -10)
              link_error ();
              link_error ();
            if (k > -1)
            if (k > -1)
              link_error ();
              link_error ();
 
 
            return k;
            return k;
          }
          }
 
 
  /* [-20, -10] / [-10, -2] should give [1, 10].  */
  /* [-20, -10] / [-10, -2] should give [1, 10].  */
  if (i >= -20)
  if (i >= -20)
    if (i <= -10)
    if (i <= -10)
      if (j >= -10)
      if (j >= -10)
        if (j <= -2)
        if (j <= -2)
          {
          {
            k = i / j;
            k = i / j;
            if (k < 1)
            if (k < 1)
              link_error ();
              link_error ();
            if (k > 10)
            if (k > 10)
              link_error ();
              link_error ();
 
 
            return k;
            return k;
          }
          }
 
 
  /* [-20, 10] / [2, 10] should give [-10, 5].  */
  /* [-20, 10] / [2, 10] should give [-10, 5].  */
  if (i >= -20)
  if (i >= -20)
    if (i <= 10)
    if (i <= 10)
      if (j >= 2)
      if (j >= 2)
        if (j <= 10)
        if (j <= 10)
          {
          {
            k = i / j;
            k = i / j;
            if (k < -10)
            if (k < -10)
              link_error ();
              link_error ();
            if (k > 5)
            if (k > 5)
              link_error ();
              link_error ();
 
 
            return k;
            return k;
          }
          }
 
 
  /* [-20, 10] / [-10, -2] should give [-5, 10].  */
  /* [-20, 10] / [-10, -2] should give [-5, 10].  */
  if (i >= -20)
  if (i >= -20)
    if (i <= 10)
    if (i <= 10)
      if (j >= -10)
      if (j >= -10)
        if (j <= -2)
        if (j <= -2)
          {
          {
            k = i / j;
            k = i / j;
            if (k < -5)
            if (k < -5)
              link_error ();
              link_error ();
            if (k > 10)
            if (k > 10)
              link_error ();
              link_error ();
 
 
            return k;
            return k;
          }
          }
 
 
  /* [10, 20] / [2, 10] should give [1, 10].  */
  /* [10, 20] / [2, 10] should give [1, 10].  */
  if (i >= 10)
  if (i >= 10)
    if (i <= 20)
    if (i <= 20)
      if (j >= 2)
      if (j >= 2)
        if (j <= 10)
        if (j <= 10)
          {
          {
            k = i / j;
            k = i / j;
            if (k < 1)
            if (k < 1)
              link_error ();
              link_error ();
            if (k > 10)
            if (k > 10)
              link_error ();
              link_error ();
 
 
            return k;
            return k;
          }
          }
 
 
  /* [10, 20] / [-10, -2] should give [-10, -1].  */
  /* [10, 20] / [-10, -2] should give [-10, -1].  */
  if (i >= 10)
  if (i >= 10)
    if (i <= 20)
    if (i <= 20)
      if (j >= -10)
      if (j >= -10)
        if (j <= -2)
        if (j <= -2)
          {
          {
            k = i / j;
            k = i / j;
            if (k > -1)
            if (k > -1)
              link_error ();
              link_error ();
            if (k < -10)
            if (k < -10)
              link_error ();
              link_error ();
 
 
            return k;
            return k;
          }
          }
 
 
  abort ();
  abort ();
}
}
 
 
 
 
foo_mult (int i, int j)
foo_mult (int i, int j)
{
{
  int k;
  int k;
 
 
  /* [-20, -10] * [2, 10] should give [-200, -20].  */
  /* [-20, -10] * [2, 10] should give [-200, -20].  */
  if (i >= -20)
  if (i >= -20)
    if (i <= -10)
    if (i <= -10)
      if (j >= 2)
      if (j >= 2)
        if (j <= 10)
        if (j <= 10)
          {
          {
            k = i * j;
            k = i * j;
            if (k < -200)
            if (k < -200)
              link_error ();
              link_error ();
            if (k > -20)
            if (k > -20)
              link_error ();
              link_error ();
 
 
            return k;
            return k;
          }
          }
 
 
  /* [-20, -10] * [-10, -2] should give [20, 200].  */
  /* [-20, -10] * [-10, -2] should give [20, 200].  */
  if (i >= -20)
  if (i >= -20)
    if (i <= -10)
    if (i <= -10)
      if (j >= -10)
      if (j >= -10)
        if (j <= -2)
        if (j <= -2)
          {
          {
            k = i * j;
            k = i * j;
            if (k < 20)
            if (k < 20)
              link_error ();
              link_error ();
            if (k > 200)
            if (k > 200)
              link_error ();
              link_error ();
 
 
            return k;
            return k;
          }
          }
 
 
  /* [-20, 10] * [2, 10] should give [-200, 100].  */
  /* [-20, 10] * [2, 10] should give [-200, 100].  */
  if (i >= -20)
  if (i >= -20)
    if (i <= 10)
    if (i <= 10)
      if (j >= 2)
      if (j >= 2)
        if (j <= 10)
        if (j <= 10)
          {
          {
            k = i * j;
            k = i * j;
            if (k < -200)
            if (k < -200)
              link_error ();
              link_error ();
            if (k > 100)
            if (k > 100)
              link_error ();
              link_error ();
 
 
            return k;
            return k;
          }
          }
 
 
  /* [-20, 10] * [-10, -2] should give [-100, 200].  */
  /* [-20, 10] * [-10, -2] should give [-100, 200].  */
  if (i >= -20)
  if (i >= -20)
    if (i <= 10)
    if (i <= 10)
      if (j >= -10)
      if (j >= -10)
        if (j <= -2)
        if (j <= -2)
          {
          {
            k = i * j;
            k = i * j;
            if (k < -100)
            if (k < -100)
              link_error ();
              link_error ();
            if (k > 200)
            if (k > 200)
              link_error ();
              link_error ();
 
 
            return k;
            return k;
          }
          }
 
 
  /* [10, 20] * [2, 10] should give [20, 200].  */
  /* [10, 20] * [2, 10] should give [20, 200].  */
  if (i >= 10)
  if (i >= 10)
    if (i <= 20)
    if (i <= 20)
      if (j >= 2)
      if (j >= 2)
        if (j <= 10)
        if (j <= 10)
          {
          {
            k = i * j;
            k = i * j;
            if (k < 20)
            if (k < 20)
              link_error ();
              link_error ();
            if (k > 200)
            if (k > 200)
              link_error ();
              link_error ();
 
 
            return k;
            return k;
          }
          }
 
 
  /* [10, 20] * [-10, -2] should give [-200, -20].  */
  /* [10, 20] * [-10, -2] should give [-200, -20].  */
  if (i >= 10)
  if (i >= 10)
    if (i <= 20)
    if (i <= 20)
      if (j >= -10)
      if (j >= -10)
        if (j <= -2)
        if (j <= -2)
          {
          {
            k = i * j;
            k = i * j;
            if (k < -200)
            if (k < -200)
              link_error ();
              link_error ();
            if (k > -20)
            if (k > -20)
              link_error ();
              link_error ();
 
 
            return k;
            return k;
          }
          }
 
 
  abort ();
  abort ();
}
}
 
 
 
 
main()
main()
{
{
  if (foo_div (-10, 5) != -2)
  if (foo_div (-10, 5) != -2)
    abort ();
    abort ();
 
 
  if (foo_div (-16, 4) != -4)
  if (foo_div (-16, 4) != -4)
    abort ();
    abort ();
 
 
  if (foo_div (-15, -5) != 3)
  if (foo_div (-15, -5) != 3)
    abort ();
    abort ();
 
 
  if (foo_div (8, 2) != 4)
  if (foo_div (8, 2) != 4)
    abort ();
    abort ();
 
 
  if (foo_div (10, -2) != -5)
  if (foo_div (10, -2) != -5)
    abort ();
    abort ();
 
 
  if (foo_div (20, 5) != 4)
  if (foo_div (20, 5) != 4)
    abort ();
    abort ();
 
 
  if (foo_div (15, -3) != -5)
  if (foo_div (15, -3) != -5)
    abort ();
    abort ();
 
 
  if (foo_mult (-10, 5) != -50)
  if (foo_mult (-10, 5) != -50)
    abort ();
    abort ();
 
 
  if (foo_mult (-16, 4) != -64)
  if (foo_mult (-16, 4) != -64)
    abort ();
    abort ();
 
 
  if (foo_mult (-15, -5) != 75)
  if (foo_mult (-15, -5) != 75)
    abort ();
    abort ();
 
 
  if (foo_mult (8, 2) != 16)
  if (foo_mult (8, 2) != 16)
    abort ();
    abort ();
 
 
  if (foo_mult (10, -2) != -20)
  if (foo_mult (10, -2) != -20)
    abort ();
    abort ();
 
 
  if (foo_mult (20, 5) != 100)
  if (foo_mult (20, 5) != 100)
    abort ();
    abort ();
 
 
  if (foo_mult (15, -3) != -45)
  if (foo_mult (15, -3) != -45)
    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.