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

--- Comment #9 from Richard Biener <rguenth at gcc dot gnu.org> ---
More reduced, the important part is that the conditional argument to bar() is
gimplified to if-then-else and not if-converted.

#include <setjmp.h>

void bar (int c);

jmp_buf buf;

int foo(unsigned char S_3_1, unsigned char S_6_5)
{
#define X \
  if (setjmp (buf) == 0) \
    bar (S_3_1 == S_6_5 ? 49 : 48);

#define Y X X X X X X X X X X
#define Z Y Y Y Y Y Y Y Y Y Y
#define W Z Z Z Z Z Z Z Z Z Z
#define R W W W W W W W W W W

R
}

Reply via email to