1  /* { dg-do compile } */
       2  /* { dg-options "-O2" } */
       3  
       4  /* { dg-final { scan-assembler-times "addq" 16 } } */
       5  /* { dg-final { scan-assembler-times "subq" 16 } } */
       6  /* { dg-final { scan-assembler-times "moveq" 4 } } */
       7  extern int bar (void);
       8  
       9  #define FOO(x) \
      10    void foo##x (void) { int a = bar (); if (a == x) bar (); } \
      11    void bar##x (void) { int a = bar (); if (a == -x) bar (); } \
      12    void foon##x (void) { int a = bar (); if (a != x) bar (); } \
      13    void barn##x (void) { int a = bar (); if (a != -x) bar (); } \
      14    
      15  
      16  FOO (1)
      17  FOO (2)
      18  FOO (3)
      19  FOO (4)
      20  FOO (5)
      21  FOO (6)
      22  FOO (7)
      23  FOO (8)
      24  FOO (9)
      25  
      26