------- Comment #2 from ubizjak at gmail dot com 2008-03-10 22:11 ------- Confirmed with g++ -O oo.C, backtrace:
#0 fancy_abort (file=0xcb2b48 "../../gcc-svn/trunk/gcc/expr.c", line=373, function=0xcb3e43 "convert_move") at ../../gcc-svn/trunk/gcc/diagnostic.c:683 #1 0x00000000006a952e in convert_move (to=0x2aaaae5c28e0, from=0x2aaaae5c2900, unsignedp=0) at ../../gcc-svn/trunk/gcc/expr.c:373 #2 0x00000000006ae785 in store_expr (exp=0x2aaaae5bc0a0, target=0x2aaaae5c28e0, call_param_p=0, nontemporal=<value optimized out>) at ../../gcc-svn/trunk/gcc/expr.c:4663 #3 0x00000000006b0dd2 in expand_assignment (to=0x2aaaae46f5f0, from=0x2aaaae5bc0a0, nontemporal=0 '\0') at ../../gcc-svn/trunk/gcc/expr.c:4258 #4 0x0000000000697c89 in expand_expr_real_1 (exp=0x2aaaae5c5450, target=0x0, tmode=VOIDmode, modifier=EXPAND_NORMAL, alt_rtl=<value optimized out>) at ../../gcc-svn/trunk/gcc/expr.c:9141 #5 0x00000000006a75f3 in expand_expr_real (exp=0x2aaaae5c5450, target=0x2aaaae46d400, tmode=VOIDmode, modifier=EXPAND_NORMAL, alt_rtl=0x0) at ../../gcc-svn/trunk/gcc/expr.c:7088 we hit gcc_assert (from_mode != BLKmode); with (gdb) p debug_rtx (from) (mem/s/c:BLK (symbol_ref:DI ("internal_crash_read_ip") [flags 0x2] <var_decl 0x2aaaae5bc0a0 internal_crash_read_ip>) [0 internal_crash_read_ip+0 S1 A8]) probably we need Index: expr.c =================================================================== --- expr.c (revision 133091) +++ expr.c (working copy) @@ -4654,7 +4654,8 @@ store_expr (tree exp, rtx target, int ca temp = convert_to_mode (GET_MODE (target), temp, unsignedp); emit_move_insn (target, temp); } - else if (GET_MODE (target) == BLKmode) + else if (GET_MODE (target) == BLKmode + || GET_MODE (temp) == BLKmode) emit_block_move (target, temp, expr_size (exp), (call_param_p ? BLOCK_OP_CALL_PARM -- ubizjak at gmail dot com changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Last reconfirmed|0000-00-00 00:00:00 |2008-03-10 22:11:35 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35526