https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71873
Bug ID: 71873 Summary: ICE in push_reload Product: gcc Version: 7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: saaadhu at gcc dot gnu.org Target Milestone: --- The following testcase causes an ICE in push_reload when compiled with $ cat test.c #include <stdint.h> typedef struct { uint8_t x; uint32_t y; } A; A a; extern int bar(int); extern int foo (char *s, ...); extern uint8_t param; extern uint8_t h,m,s,ld,lm; extern uint16_t d; void gps_parse_string(int z) { while (bar(z)) { switch (param) { case 0: foo("a", &h, &m, &s, &d); break; case 1: foo("d", &ld, &lm, &a.y); break; } } } $ avr-gcc -Os -mmcu=atmega8 -S test.c test.c: In function 'gps_parse_string': test.c:27:1: internal compiler error: in push_reload, at reload.c:1349 } ^ 0xd8feb0 push_reload(rtx_def*, rtx_def*, rtx_def**, rtx_def**, reg_class, machine_mode, machine_mode, int, int, int, reload_type) /home/saaadhu/code/work/gcc/gcc/reload.c:1348 0xd8f760 push_reload(rtx_def*, rtx_def*, rtx_def**, rtx_def**, reg_class, machine_mode, machine_mode, int, int, int, reload_type) /home/saaadhu/code/work/gcc/gcc/reload.c:1155 0xd97e86 find_reloads(rtx_insn*, int, int, int, short*) /home/saaadhu/code/work/gcc/gcc/reload.c:4035 0xda58d4 calculate_needs_all_insns /home/saaadhu/code/work/gcc/gcc/reload1.c:1483 0xda4018 reload(rtx_insn*, int) /home/saaadhu/code/work/gcc/gcc/reload1.c:995 0xc0865e do_reload /home/saaadhu/code/work/gcc/gcc/ira.c:5396 0xc08a46 execute /home/saaadhu/code/work/gcc/gcc/ira.c:5568 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <http://gcc.gnu.org/bugs.html> for instructions. Might be a duplicate of PR 67031, but the testcases there do not cause an ICE on trunk (gcc version 7.0.0 20160704), but the above one does.