https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68549
alalaw01 at gcc dot gnu.org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |alalaw01 at gcc dot gnu.org --- Comment #8 from alalaw01 at gcc dot gnu.org --- Here's another testcase, reduced from value.c in gdb - ICEs at -O2 on (at least) x86_64 and AArch64: typedef long unsigned int size_t; extern void *xmalloc (size_t) __attribute__ ((__malloc__)) __attribute__ ((__returns_nonnull__)); struct __jmp_buf_tag { }; extern int __sigsetjmp (struct __jmp_buf_tag __env[1], int __savemask) __attribute__ ((__nothrow__)); typedef struct __jmp_buf_tag sigjmp_buf[1]; extern sigjmp_buf *exceptions_state_mc_init (void); extern int exceptions_state_mc_action_iter (void); extern void printf_unfiltered (const char *, ...) ; extern struct gdbarch *get_current_arch (void); struct internalvar { struct internalvar *next; }; static struct internalvar *internalvars; struct internalvar * create_internalvar (const char *name) { struct internalvar *var = ((struct internalvar *) xmalloc (sizeof (struct internalvar))); internalvars = var; } void show_convenience () { struct gdbarch *gdbarch = get_current_arch (); int varseen = 0; for (struct internalvar *var = internalvars; var; var = var->next) { if (!varseen) varseen = 1; sigjmp_buf *buf = exceptions_state_mc_init (); __sigsetjmp ( (*buf), 1); while (exceptions_state_mc_action_iter ()) while (exceptions_state_mc_action_iter ()) ; } if (!varseen) printf_unfiltered ( "" ); }