Here's a reduced testcase (reduced to the point of generating lots of
warnings, I'm compiling with -O2 -w, on x86_64):
struct __jmp_buf_tag
{
};
typedef struct __jmp_buf_tag sigjmp_buf[1];
extern struct cmd_list_element *showlist;
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 (char *ignore, int from_tty)
{
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 ();
while (exceptions_state_mc_action_iter ())
while (exceptions_state_mc_action_iter_1 ())
;
}
if (!varseen)
printf_unfiltered ();
}
On 26 November 2015 at 11:33, Alan Lawrence <[email protected]> wrote:
> This caused an ICE compiling value.c from gdb on
> aarch64-none-linux-gnu; the testcase, after preprocessing on aarch64,
> ICEs on both aarch64 and x86_64, but is about 1MB - I'm working on
> reducing that down to something small enough to post...
>
> $ ./gcc/xgcc -B ./gcc -O2 -g value.c
> ../../binutils-gdb/gdb/value.c: In function ‘show_convenience’:
> ../../binutils-gdb/gdb/value.c:2615:1: error: loop 3’s latch is missing
> ../../binutils-gdb/gdb/value.c:2615:1: internal compiler error: in
> verify_loop_structure, at cfgloop.c:1669
> 0x71e653 verify_loop_structure()
> /work/alalaw01/src2/gcc/gcc/cfgloop.c:1669
> 0x97c6ae checking_verify_loop_structure
> /work/alalaw01/src2/gcc/gcc/cfgloop.h:325
> 0x97c6ae loop_optimizer_init(unsigned int)
> /work/alalaw01/src2/gcc/gcc/loop-init.c:106
> 0x97c78a rtl_loop_init
> /work/alalaw01/src2/gcc/gcc/loop-init.c:398
> 0x97c78a execute
> /work/alalaw01/src2/gcc/gcc/loop-init.c:425
>
> --Alan