view gcc/testsuite/gcc.dg/pr69097-1.c @ 158:494b0b89df80 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 18:13:55 +0900
parents 04ced10e8804
children
line wrap: on
line source

/* PR tree-optimization/69097 */
/* { dg-do compile } */
/* { dg-options "-O2 -fdump-tree-optimized" } */
/* All the x % -y below should be optimized into x % y, as
   it should never be INT_MIN % -(-1).  */
/* { dg-final { scan-tree-dump-not "-y" "optimized" } } */

int
f1 (int x, int y)
{
  if (x == -__INT_MAX__ - 1)
    __builtin_unreachable ();
  return x % -y;
}

int
f2 (int x, int y)
{
  if (x < -__INT_MAX__)
    __builtin_unreachable ();
  return x % -y;
}

int
f3 (int x, int y)
{
  if (y == -1)
    __builtin_unreachable ();
  return x % -y;
}

int
f4 (int x, int y)
{
  if (y < 0)
    __builtin_unreachable ();
  return x % -y;
}

int
f5 (int x, int y)
{
  if (y >= -1)
    __builtin_unreachable ();
  return x % -y;
}

int
f6 (int x, int y)
{
  if (y < 0 || y > 24)
    __builtin_unreachable ();
  return x % -y;
}

int
f7 (int x, int y)
{
  if (y <= -17 || y >= -1)
    __builtin_unreachable ();
  return x % -y;
}

int
f8 (int x, int y)
{
  if (y >= -13 && y <= 15)
    __builtin_unreachable ();
  return x % -y;
}

int
f9 (int x, int y)
{
  return x % -(y & ~4);
}

int
f10 (int x, int y)
{
  if (x != -__INT_MAX__ - 1)
    return x % -y;
  return 34;
}

int
f11 (int x, int y)
{
  if (x >= -__INT_MAX__)
    return x % -y;
  return 34;
}

int
f12 (int x, int y)
{
  if (y != -1)
    return x % -y;
  return 34;
}

int
f13 (int x, int y)
{
  if (y >= 0)
    return x % -y;
  return 34;
}

int
f14 (int x, int y)
{
  if (y < -1)
    return x % -y;
  return 34;
}

int
f15 (int x, int y)
{
  if (y >= 0 && y <= 24)
    return x % -y;
  return 34;
}

int
f16 (int x, int y)
{
  if (y > -17 && y < -1)
    return x % -y;
  return 34;
}

int
f17 (int x, int y)
{
  if (y < -13 || y > 15)
    return x % -y;
  return 34;
}