view gcc/testsuite/gcc.dg/vrp-overflow-1.c @ 145:1830386684a0

gcc-9.2.0
author anatofuz
date Thu, 13 Feb 2020 11:34:05 +0900
parents
children
line wrap: on
line source

/* { dg-do run } */
/* { dg-options "-O2 -fno-tree-forwprop" } */

extern void __attribute__((noreturn)) unreachable (void);

int fle22 (int a)
{
  unsigned i = a / 4;
  unsigned j = i - 2;

  if (j == 7) /* A dynamic range excludes a value from j for the rest of f1.  */
    return -1;

  if (i <= 2) /* This dynamic range cannot be combined or compared with that of j.  */
    return 0;

  if (i <= j) /* And so we couldn't compute this result.  */
    unreachable ();

  return 1;
}

int fle32 (int a)
{
  unsigned i = a / 4;
  unsigned j = i - 3;

  if (j == 7) /* A dynamic range excludes a value from j for the rest of f1.  */
    return -1;

  if (i <= 2) /* This dynamic range cannot be combined or compared with that of j.  */
    return 0;

  if (i <= j) /* And so we couldn't compute this result.  */
    unreachable ();

  return 1;
}

int flt22 (int a)
{
  unsigned i = a / 4;
  unsigned j = i - 2;

  if (j == 7)
    return -1;

  if (i <= 2)
    return 0;

  if (i < j)
    unreachable ();

  return 1;
}

int flt32 (int a)
{
  unsigned i = a / 4;
  unsigned j = i - 3;

  if (j == 7)
    return -1;

  if (i <= 2)
    return 0;

  if (i < j)
    unreachable ();

  return 1;
}

int fgt22 (int a)
{
  unsigned i = a / 4;
  unsigned j = i + 2;

  if (j == -7)
    return -1;

  if (i >= -3)
    return 0;

  if (i > j)
    unreachable ();

  return 1;
}

int fgt32 (int a)
{
  unsigned i = a / 4;
  unsigned j = i + 3;

  if (j == -7)
    return -1;

  if (i >= -3)
    return 0;

  if (i > j)
    unreachable ();

  return 1;
}

int fge22 (int a)
{
  unsigned i = a / 4;
  unsigned j = i + 2;

  if (j == -7)
    return -1;

  if (i >= -3)
    return 0;

  if (i >= j)
    unreachable ();

  return 1;
}

int fge32 (int a)
{
  unsigned i = a / 4;
  unsigned j = i + 3;

  if (j == -7)
    return -1;

  if (i >= -3)
    return 0;

  if (i >= j)
    unreachable ();

  return 1;
}

int main (int argc, char *argv[]) {
  fle22 (argc);
  fle32 (argc);
  flt22 (argc);
  flt32 (argc);
  fgt22 (argc);
  fgt32 (argc);
  fge22 (argc);
  fge32 (argc);
}