* rtlanal.c (simplify_subreg_regno): Don't treat HARD_FRAME_POINTER_REGNUM specially. * config/arm/arm.md (thumb_movhi_clobber): Restore previous version of the pattern that always calls gcc_unreachable. Index: rtlanal.c =================================================================== --- rtlanal.c (revision 161987) +++ rtlanal.c (working copy) @@ -3297,8 +3297,7 @@ simplify_subreg_regno (unsigned int xreg /* We shouldn't simplify stack-related registers. */ if ((!reload_completed || frame_pointer_needed) - && (xregno == FRAME_POINTER_REGNUM - || xregno == HARD_FRAME_POINTER_REGNUM)) + && xregno == FRAME_POINTER_REGNUM) return -1; if (FRAME_POINTER_REGNUM != ARG_POINTER_REGNUM Index: config/arm/arm.md =================================================================== --- config/arm/arm.md (revision 161987) +++ config/arm/arm.md (working copy) @@ -5666,17 +5666,9 @@ (define_expand "thumb_movhi_clobber" (match_operand:HI 1 "register_operand" "")) (clobber (match_operand:DI 2 "register_operand" ""))] "TARGET_THUMB1" - " - if (strict_memory_address_p (HImode, XEXP (operands[0], 0)) - && REGNO (operands[1]) <= LAST_LO_REGNUM) - { - emit_insn (gen_movhi (operands[0], operands[1])); - DONE; - } - /* XXX Fixme, need to handle other cases here as well. */ +{ gcc_unreachable (); - " -) +}) ;; We use a DImode scratch because we may occasionally need an additional ;; temporary if the address isn't offsettable -- push_reload doesn't seem