1  /* { dg-do compile } */
       2  /* { dg-options "-O -fdump-tree-optimized-raw" } */
       3  
       4  static inline unsigned deposit32(unsigned value, int start, int length,
       5                                   unsigned fieldval)
       6  {
       7      unsigned mask = (~0U >> (32 - length)) << start;
       8      return (value & ~mask) | ((fieldval << start) & mask);
       9  }
      10  
      11  unsigned foo(unsigned value)
      12  {
      13     return deposit32(value, 10, 1, 1);
      14  }
      15  
      16  /* { dg-final { scan-tree-dump-not "bit_and_expr" "optimized" } } */
      17  /* { dg-final { scan-tree-dump-not "bit_xor_expr" "optimized" } } */
      18  /* { dg-final { scan-tree-dump-not "bit_not_expr" "optimized" } } */