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>

Reply via email to