v850.c (expand_prologue): Do not use the CALLT instruction for interrupt handlers...
authorNick Clifton <nickc@redhat.com>
Tue, 12 Apr 2011 11:34:26 +0000 (11:34 +0000)
committerNick Clifton <nickc@gcc.gnu.org>
Tue, 12 Apr 2011 11:34:26 +0000 (11:34 +0000)
* config/v850/v850.c (expand_prologue): Do not use the CALLT
instruction for interrupt handlers if the target is the basic V850
architecture.
(expand_epilogue): Likewise.

From-SVN: r172313

gcc/ChangeLog
gcc/config/v850/v850.c

index 6aea7a491f35c804989af0d3d22e4880f608a338..d7a72dbf44ce554620fe2609eb8392d4de38c674 100644 (file)
@@ -1,3 +1,10 @@
+2011-04-12  Nick Clifton  <nickc@redhat.com>
+
+       * config/v850/v850.c (expand_prologue): Do not use the CALLT
+       instruction for interrupt handlers if the target is the basic V850
+       architecture.
+       (expand_epilogue): Likewise.
+
 2011-04-12  Jakub Jelinek  <jakub@redhat.com>
 
        PR rtl-optimization/48549
index f2275961b3a52ff7cfe11c046a88601aab97b3d6..b0b9388a0abb1c4e8895fa94547653235bacd673 100644 (file)
@@ -1690,7 +1690,7 @@ expand_prologue (void)
   /* Save/setup global registers for interrupt functions right now.  */
   if (interrupt_handler)
     {
-      if (! TARGET_DISABLE_CALLT)
+      if (! TARGET_DISABLE_CALLT && (TARGET_V850E || TARGET_V850E2_ALL))
        emit_insn (gen_callt_save_interrupt ());
       else
        emit_insn (gen_save_interrupt ());
@@ -1772,7 +1772,7 @@ expand_prologue (void)
       /* Special case interrupt functions that save all registers for a call.  */
       if (interrupt_handler && ((1L << LINK_POINTER_REGNUM) & reg_saved) != 0)
        {
-         if (! TARGET_DISABLE_CALLT)
+         if (! TARGET_DISABLE_CALLT && (TARGET_V850E || TARGET_V850E2_ALL))
            emit_insn (gen_callt_save_all_interrupt ());
          else
            emit_insn (gen_save_all_interrupt ());
@@ -2023,7 +2023,7 @@ expand_epilogue (void)
       /* And return or use reti for interrupt handlers.  */
       if (interrupt_handler)
         {
-          if (! TARGET_DISABLE_CALLT)
+          if (! TARGET_DISABLE_CALLT && (TARGET_V850E || TARGET_V850E2_ALL))
             emit_insn (gen_callt_return_interrupt ());
           else
             emit_jump_insn (gen_return_interrupt ());