Hi All, This problem optimize rule missing. gen_lowpart got invalid operand.
I attached fix patch. diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ca9398c..9982644 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2011-03-16 Yoshinori Sato <ys...@users.sourceforge.jp> + + PR/target 47998 + * config/h8300/h8300.md + (peephole): Add rule. + 2011-03-16 Nick Clifton <ni...@redhat.com> * config/rx/rx.h (JUMP_ALIGN): Define. diff --git a/gcc/config/h8300/h8300.md b/gcc/config/h8300/h8300.md index 5efe2cb..4aa7633 100644 --- a/gcc/config/h8300/h8300.md +++ b/gcc/config/h8300/h8300.md @@ -4940,6 +4940,8 @@ || GET_MODE (operands[0]) == SImode) && GET_MODE (operands[0]) == GET_MODE (operands[1]) && REGNO (operands[0]) == REGNO (operands[2]) + && (GET_CODE (operands[1]) == REG + || GET_CODE (operands[1]) == SUBREG) && !reg_overlap_mentioned_p (operands[2], operands[1]) && !(GET_MODE (operands[1]) != QImode && GET_CODE (operands[1]) == MEM -- Yoshinori Sato <ys...@users.sourceforge.jp>