(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
pr96938.c
       1  /* PR target/96938 */
       2  /* { dg-do compile } */
       3  /* { dg-options "-O2 -masm=att" } */
       4  /* { dg-final { scan-assembler-times "\tbtrl\t" 10 } } */
       5  
       6  void
       7  f1 (unsigned char *f, int o, unsigned char v)
       8  {
       9    *f = (*f & ~(1 << o)) | (v << o);
      10  }
      11  
      12  void
      13  f2 (unsigned char *f, int o, unsigned char v)
      14  {
      15    int t = *f & ~(1 << o);
      16    *f = t | (v << o);
      17  }
      18  
      19  void
      20  f3 (unsigned char *f, int o, unsigned char v)
      21  {
      22    *f &= ~(1 << o);
      23  }
      24  
      25  void
      26  f4 (unsigned char *f, int o, unsigned char v)
      27  {
      28    *f = (*f & ~(1 << (o & 31))) | v;
      29  }
      30  
      31  void
      32  f5 (unsigned char *f, int o, unsigned char v)
      33  {
      34    *f = (*f & ~(1 << (o & 31))) | (v << (o & 31));
      35  }
      36  
      37  void
      38  f6 (unsigned short *f, int o, unsigned short v)
      39  {
      40    *f = (*f & ~(1 << o)) | (v << o);
      41  }
      42  
      43  void
      44  f7 (unsigned short *f, int o, unsigned short v)
      45  {
      46    int t = *f & ~(1 << o);
      47    *f = t | (v << o);
      48  }
      49  
      50  void
      51  f8 (unsigned short *f, int o, unsigned short v)
      52  {
      53    *f &= ~(1 << o);
      54  }
      55  
      56  void
      57  f9 (unsigned short *f, int o, unsigned short v)
      58  {
      59    *f = (*f & ~(1 << (o & 31))) | v;
      60  }
      61  
      62  void
      63  f10 (unsigned short *f, int o, unsigned short v)
      64  {
      65    *f = (*f & ~(1 << (o & 31))) | (v << (o & 31));
      66  }