(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
pr78904-2b.c
       1  /* PR target/78904 */
       2  /* { dg-do compile { target { ! ia32 } } } */
       3  /* { dg-require-effective-target nonpic } */
       4  /* { dg-options "-O2 -masm=att" } */
       5  
       6  struct S1
       7  {
       8    unsigned char pad1;
       9    unsigned char val;
      10    unsigned short pad2;
      11    unsigned int pad3;
      12  };
      13  
      14  extern struct S1 t;
      15  
      16  struct S1 test_and (struct S1 a)
      17  {
      18    a.val &= t.val;
      19  
      20    return a;
      21  }
      22  
      23  /* { dg-final { scan-assembler "\[ \t\]andb\[ \t\]+t\[^\n\r]*, %.h" } } */
      24  
      25  struct S1 test_or (struct S1 a)
      26  {
      27    a.val |= t.val;
      28  
      29    return a;
      30  }
      31  
      32  /* { dg-final { scan-assembler "\[ \t\]orb\[ \t\]+t\[^\n\r]*, %.h" } } */
      33  
      34  struct S1 test_xor (struct S1 a)
      35  {
      36    a.val ^= t.val;
      37  
      38    return a;
      39  }
      40  
      41  /* { dg-final { scan-assembler "\[ \t\]xorb\[ \t\]+t\[^\n\r]*, %.h" } } */
      42  
      43  struct S1 test_add (struct S1 a)
      44  {
      45    a.val += t.val;
      46  
      47    return a;
      48  }
      49  
      50  /* { dg-final { scan-assembler "\[ \t\]addb\[ \t\]+t\[^\n\r]*, %.h" } } */