Senthil Kumar Selvaraj schrieb:
On a 64 bit machine, executing
$ make check RUNTESTFLAGS="avr-torture.exp=builtins-1.c
--target_board=atxmega128a1"
causes virtual memory allocation failure and/or large scale machine
slowdown, with cc1 using up gobs (>35G) virtual memory.
I tracked this down to
void delay_4 (void) { __builtin_avr_delay_cycles (-1ul); }
In avr_expand_delay_cycles, the operand is converted into a
HOST_WIDE_UINT, which on a 64 bit machine is 0xFFFFFFFFFFFFFFFF. The
range checks therefore get bypassed and the while(cycles >= 2) loop near
the end keeps generating nops, exhausting memory.
Given that avr_init_builtins declares delay_cycles builtin to take
take an unsigned long (which I guess is 4 bytes for the AVR target),
should the code be changed to consider only the lower 4 bytes? Or did I
do something wrong?
Regards
Senthil
Please file a bug report.
Thanks, Johann