Compiler projects using llvm
// RUN: %clang_cc1 -std=c++11 -verify %s -Wno-tautological-compare

template <typename T, typename U>
void f(int i, float f, bool b, int* pi, T* pt, T t) {
  i %= 3;
  f %= 3;  // expected-error {{invalid operands}}
  b %= 3;
  pi %= 3; // expected-error {{invalid operands}}
  pt %= 3; // FIXME
  t %= 3;

  i &= 3;
  f &= 3;  // expected-error {{invalid operands}}
  b &= 3;
  pi &= 3; // expected-error {{invalid operands}}
  pt &= 3; // FIXME
  t &= 3;

  i ^= 3;
  f ^= 3;  // expected-error {{invalid operands}}
  b ^= 3;
  pi ^= 3; // expected-error {{invalid operands}}
  pt ^= 3; // FIXME
  t ^= 3;

  i |= 3;
  f |= 3;  // expected-error {{invalid operands}}
  b |= 3;
  pi |= 3; // expected-error {{invalid operands}}
  pt |= 3; // FIXME
  t |= 3;

  i <<= 3;
  f <<= 3;  // expected-error {{invalid operands}}
  b <<= 3;
  pi <<= 3; // expected-error {{invalid operands}}
  pt <<= 3; // FIXME
  t <<= 3;

  i >>= 3;
  f >>= 3;  // expected-error {{invalid operands}}
  b >>= 3;
  pi >>= 3; // expected-error {{invalid operands}}
  pt >>= 3; // FIXME
  t >>= 3;
}