------- Additional Comments From uweigand at gcc dot gnu dot org 2005-02-18 18:45 ------- OK, now I see the problem: cleanup_subreg_operands *does* indeed touch only operands. However, the result of the splitter matches the *llgt_didi insn instead of *llgt_disi, because after reload nonimmediate_operands matches a SUBREG (MEM). Thus the SUBREG is indeed part of the operand, which is broken.
The proper fix is to move the *llgt_disi pattern to *before* the *llgt_didi pattern to ensure it matches first. I'll commit this fix once testing completes. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20054