------- Comment #4 from ubizjak at gmail dot com 2007-12-03 13:45 ------- This all comes down to PR 19398. Since JamoClusterSearch() is defined as static, gcc switches to register passing convention, and this uses %eax, %edx and %ecx. %ebx is used as a PIC register, so we are out of QImode registers.
The pattern is defined as: (define_insn "*lshrsi3_1" [(set (match_operand:SI 0 "nonimmediate_operand" "=rm,rm") (lshiftrt:SI (match_operand:SI 1 "nonimmediate_operand" "0,0") (match_operand:QI 2 "nonmemory_operand" "I,c"))) (clobber (reg:CC FLAGS_REG))] so reload is in fact free to use "m" alternative. Unfortunatelly, reload rather dies than touches memory. -- ubizjak at gmail dot com changed: What |Removed |Added ---------------------------------------------------------------------------- BugsThisDependsOn| |19398 Component|target |rtl-optimization http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34312