/* PR c/65179 */
/* { dg-do compile } */
/* { dg-options "-O -Wextra -Wno-shift-negative-value" } */

enum E {
  A = 0 << 1,
  B = 1 << 1,
  C = -1 << 1,
  /* { dg-error "not an integer constant" "no constant" { target { c++11 && c++17_down } } .-1 } */
  /* { dg-error "left operand of shift expression" "shift" { target { c++11 && c++17_down } } .-2 } */
  D = 0 >> 1,
  E = 1 >> 1,
  F = -1 >> 1
};

int
left (int x)
{
  /* Warn for LSHIFT_EXPR.  */
  const int z = 0;
  const int o = 1;
  const int m = -1;
  int r = 0;
  r += z << x;
  r += o << x;
  r += m << x; /* { dg-bogus "left shift of negative value" } */
  r += 0 << x;
  r += 1 << x;
  r += -1 << x; /* { dg-bogus "left shift of negative value" } */
  r += -1U << x;
  return r;
}

int
right (int x)
{
  /* Shouldn't warn for RSHIFT_EXPR.  */
  const int z = 0;
  const int o = 1;
  const int m = -1;
  int r = 0;
  r += z >> x;
  r += o >> x;
  r += m >> x;
  r += 0 >> x;
  r += 1 >> x;
  r += -1 >> x;
  r += -1U >> x;
  return r;
}
