[Bug other/53923] ICE: RTL check: expected code 'reg', have 'debug_expr' in rhs_regno, at rtl.h:1091
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53923 Georg-Johann Lay gjl at gcc dot gnu.org changed: What|Removed |Added CC||richard.sandiford at linaro ||dot org --- Comment #3 from Georg-Johann Lay gjl at gcc dot gnu.org 2012-07-31 17:48:08 UTC --- Also CCing Richard as one of the last editors of df-problems.c
[Bug other/53923] ICE: RTL check: expected code 'reg', have 'debug_expr' in rhs_regno, at rtl.h:1091
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53923 --- Comment #1 from Georg-Johann Lay gjl at gcc dot gnu.org 2012-07-11 09:27:26 UTC --- Created attachment 27773 -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=27773 libgcc2-mulsc3.c: preprocessed bit of libgcc2.c compile with avr-gcc libgcc2-mulsc3.c -c -mmcu=avr25 -Os -g -mcall-prologues
[Bug other/53923] ICE: RTL check: expected code 'reg', have 'debug_expr' in rhs_regno, at rtl.h:1091
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53923 Georg-Johann Lay gjl at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2012-07-11 CC||eric.weddington at atmel ||dot com Ever Confirmed|0 |1
[Bug other/53923] ICE: RTL check: expected code 'reg', have 'debug_expr' in rhs_regno, at rtl.h:1091
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53923 --- Comment #2 from Georg-Johann Lay gjl at gcc dot gnu.org 2012-07-11 10:03:49 UTC --- avr.c already contains code to work around problems from DCE, instead of DCE working out proper solutions to cover AVR, see PR50063 Something goes wrong in df-problems.c:dead_debug_insert_temp (insn 328 886 866 37 (set (reg:SF 16 r16) (unspec:SF [ (reg:SF 16 r16) (reg/v:SF 4 r4 [orig:162 b ] [162]) ] UNSPEC_COPYSIGN)) libgcc2-mulsc3.c:1307 322 {copysignsf3} (expr_list:REG_DEAD (reg/v:SF 4 r4 [orig:162 b ] [162]) (expr_list:REG_DEAD (reg/v:SF 4 r4 [orig:162 b ] [162]) (expr_list:REG_EQUAL (unspec:SF [ (const_double:SF 0 [0] 0.0 [0x0.0p+0]) (reg/v:SF 4 r4 [orig:162 b ] [162]) ] UNSPEC_COPYSIGN) (nil) There is this code that sets reg from NULL to garbage (debug_expr:SF D#2) /* Move all uses of uregno from debug-head to uses, setting mode to the widest referenced mode. */ while ((cur = *tailp)) { if (DF_REF_REGNO (cur-use) == uregno) { *usesp = cur; usesp = cur-next; *tailp = cur-next; cur-next = NULL; if (!reg || (GET_MODE_BITSIZE (GET_MODE (reg)) GET_MODE_BITSIZE (GET_MODE (*DF_REF_REAL_LOC (cur-use) reg = *DF_REF_REAL_LOC (cur-use);