http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55686
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2012-12-14 Ever Confirmed|0 |1 --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> 2012-12-14 10:02:52 UTC --- Reduced testcase: typedef unsigned long VALUE; typedef unsigned long rb_num_t; typedef struct rb_vm_struct { VALUE *pc; VALUE *sp; } rb_control_frame_t; void vm_expandarray(rb_control_frame_t *cfp, VALUE ary, rb_num_t num, int flag) { VALUE *base = cfp->sp, *ptr; rb_num_t len; if (flag & 0x02) { rb_num_t i = 0, j; for (j=0; i<num; i++, j++) { VALUE v = ptr[len - j - 1]; *base++ = v; } } register VALUE * reg_pc __asm__("e" "di"); register rb_control_frame_t * reg_cfp __asm__("e" "si"); { rb_num_t flag = (rb_num_t)((reg_pc)[(2)]); rb_num_t num = (rb_num_t)((reg_pc)[(1)]); VALUE ary = (*(((((reg_cfp)->sp)))-(0)-1)); ((reg_cfp->pc = reg_pc = (reg_pc + (1+2)))); ((((reg_cfp)->sp) -= (((1))))); vm_expandarray((((reg_cfp))), ary, num, (int)flag); goto *(void const *)(*(reg_pc)); } } > ./cc1 -quiet -O -m32 vm.3.3.i vm.3.3.i: In function 'vm_expandarray': vm.3.3.i:28:1: internal compiler error: in assign_by_spills, at lra-assigns.c:1244 } ^ 0x95a80e assign_by_spills /space/rguenther/src/svn/trunk/gcc/lra-assigns.c:1244 0x95b133 lra_assign() /space/rguenther/src/svn/trunk/gcc/lra-assigns.c:1398 0x955893 lra(_IO_FILE*) /space/rguenther/src/svn/trunk/gcc/lra.c:2309 0x90ba42 do_reload /space/rguenther/src/svn/trunk/gcc/ira.c:4624 0x90bc50 rest_of_handle_reload /space/rguenther/src/svn/trunk/gcc/ira.c:4737