------- Comment #2 from hp at gcc dot gnu dot org 2009-08-11 01:02 ------- I had a brief look. Seems like the new code assumes that promote_mode always promotes the input mode (ahem! :) when mismatching, which it only does if the target defines PROMOTE_MODE (which CRIS does not; it just has a TARGET_PROMOTE_FUNCTION_MODE hook). So, a QImode is still QImode and mismatching SImode for the object in SA.partition_to_pseudo[dest])).
At the gcc_assert in question: (gdb) p src_mode $24 = QImode (gdb) p unsignedp $25 = 0 (gdb) p dest_mode $26 = QImode (gdb) p dest $27 = 3 (gdb) p SA.partition_to_pseudo[dest] $28 = (rtx) 0xb7e658f0 (gdb) pr (reg/v:SI 220 [ type ]) hth -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41031