------- 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

Reply via email to