https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65412

--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
clang decides at 4 to change it to a switch statement while GCC takes a few
extra ifs to change it.  Again this is heuristics at work.


#define B(y) void f##y(void);
#define B10(y)  B(y##0)  B(y##1)  B(y##2) \
                B(y##3)  B(y##4)  B(y##5) \
                B(y##6)  B(y##7)  B(y##8) \
                B(y##9)

B10(1)

#define A(y) else if (x == y) f##y();

void f10(int x)
{
  if (0) ;
  A(11)
  A(12)
  A(13)
  A(14)
}

Reply via email to