/* PR tree-optimization/61839.  */
/* { dg-do compile } */
/* { dg-options "-O2 -fdump-tree-evrp" } */
/* { dg-require-effective-target int32plus } */

__attribute__ ((noinline))
int foo ()
{
  int a = -1;
  volatile unsigned b = 1U;
  int c = 1;
  c = (a + 972195718) / (b ? 2 : 0);
  if (c == 486097858)
    ;
  else
    __builtin_abort ();
  return 0;
}

__attribute__ ((noinline))
int bar ()
{
  int a = -1;
  volatile unsigned b = 1U;
  int c = 1;
  c = (a + 972195718) % (b ? 2 : 0);
  if (c == 1)
    ;
  else
    __builtin_abort ();
  return 0;
}

__attribute__ ((noinline))
int bar2 ()
{
  int a = -1;
  volatile unsigned b = 1U;
  int c = 1;
  c = (a + 972195716) % (b ? 1 : 2);
  if (c == 0)
    ;
  else
    __builtin_abort ();
  return 0;
}

/* Ensure we are folding modulus sub-ranges properly.  */
__attribute__ ((noinline))
int mod (int a, int b)
{
  int v1, v2;
  v1 = (a < 10) ? 12 : 24;
  v2 = (b > 20) ? 3 : 6;

  if (a > 20)
    v1 = v1 * 2;
  if (b > 20)
    v2 = v2 * 2;

  if (a == b)
    v2 = 0;
    
  /* v1 == 12, 24, or 48.  v2 == 0, 3, 6, or 12. */
  int c = v1 % v2;
  if (c == 0)
    ;
  else
    __builtin_abort ();
  return 0;
}

/* EVRP now makes transformations in all functions, leaving a single
 * builtin_abort call in bar2. */
/* { dg-final { scan-tree-dump-times "__builtin_abort" 1 "evrp" } } */

/* Make sure to optimize 972195717 / 0 in function foo.  */
/* { dg-final { scan-tree-dump-times "972195717 / " 0  "evrp" } } */
/* Make sure  to optimize 972195717 % 0 in function bar.  */
/* { dg-final { scan-tree-dump-times "972195717 % " 0 "evrp" } } */
/* Make sure to optimize 972195717 % [1,2] function bar2.  */
/* { dg-final { scan-tree-dump-times "972195715 % " 0 "evrp" } } */
/* [12,12][24,24][48,48] % [0,0][3,3][6,6][12,12] == [0,0] */
/* { dg-final { scan-tree-dump-times "%" 0 "evrp" } } */
