/* { dg-do compile } */
/* { dg-options "-fdump-tree-original" } */

unsigned int
my_mod (unsigned int a, unsigned int b)
{
  return a % (1 << b);
}

/* The above should be simplified to (unsigned int) ((1 << b) + -1) & a */
/* { dg-final { scan-tree-dump "& a;" "original" } } */