------- Additional Comments From danglin at gcc dot gnu dot org 2005-01-23 19:48 ------- The bad mem is generated by the call to extract_bit_field from this code in emit_group_load_1:
(gdb) list 1678 { 1679 rtx mem; 1680 1681 gcc_assert (!bytepos); 1682 mem = assign_stack_temp (GET_MODE (src), slen, 0); 1683 emit_move_insn (mem, src); 1684 tmps[i] = extract_bit_field (mem, bytelen * BITS_PER_UNIT, 1685 0, 1, NULL_RTX, mode, mode); 1686 } (gdb) p debug_rtx (mem) (mem:TC (plus:DI (reg/f:DI 62 virtual-stack-vars) (const_int 8 [0x8])) [0 S32 A128]) (gdb) p debug_rtx (tmps[0]) (mem:DI (plus:DI (reg/f:DI 62 virtual-stack-vars) (const_int 40 [0x28])) [0 S8 A128]) (gdb) p mode $26 = DImode -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19330