OSDN Git Service

2011-05-04 Stuart Henderson <shenders@gcc.gnu.org>
authorshenders <shenders@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 4 May 2011 10:42:59 +0000 (10:42 +0000)
committershenders <shenders@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 4 May 2011 10:42:59 +0000 (10:42 +0000)
        From Jie Zhang
        * config/bfin/bfin.c (bfin_expand_prologue): Don't clobber P2.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@173364 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/bfin/bfin.c

index 6f30c31..3722fe5 100644 (file)
@@ -1,3 +1,8 @@
+2011-05-04  Stuart Henderson  <shenders@gcc.gnu.org>
+
+       From Jie Zhang
+       * config/bfin/bfin.c (bfin_expand_prologue): Don't clobber P2.
+
 2011-05-04  Nick Clifton  <nickc@redhat.com>
 
        * config/mn10300/mn10300.c: Include cfgloop.h.
index e046789..596042d 100644 (file)
@@ -1341,8 +1341,10 @@ bfin_expand_prologue (void)
        = bfin_initial_elimination_offset (ARG_POINTER_REGNUM,
                                           STACK_POINTER_REGNUM);
       rtx lim = crtl->limit_stack ? stack_limit_rtx : NULL_RTX;
+      rtx tmp = gen_rtx_REG (Pmode, REG_R3);
       rtx p2reg = gen_rtx_REG (Pmode, REG_P2);
 
+      emit_move_insn (tmp, p2reg);
       if (!lim)
        {
          emit_move_insn (p2reg, gen_int_mode (0xFFB00000, SImode));
@@ -1379,6 +1381,7 @@ bfin_expand_prologue (void)
        }
       emit_insn (gen_compare_lt (bfin_cc_rtx, spreg, lim));
       emit_insn (gen_trapifcc ());
+      emit_move_insn (p2reg, tmp);
     }
   expand_prologue_reg_save (spreg, all, false);