This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Commit: V850: Fix generation of callt helper functions for interrupt handlers
- From: Nick Clifton <nickc at redhat dot com>
- To: gcc-patches at gcc dot gnu dot org
- Date: Tue, 12 Apr 2011 12:33:24 +0100
- Subject: Commit: V850: Fix generation of callt helper functions for interrupt handlers
Hi Guys,
I am applying the patch below to the 4.6 branch and mainline sources.
It fixes a problem with the V850 backend where it would generate a
CALLT instruction for a V850 variant which does not support it, when
gcc was compiling an interrupt handler.
Cheers
Nick
gcc/ChangeLog
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.
Index: gcc/config/v850/v850.c
===================================================================
--- gcc/config/v850/v850.c (revision 172300)
+++ gcc/config/v850/v850.c (working copy)
@@ -1686,7 +1686,7 @@
/* 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 ());
@@ -1768,7 +1768,7 @@
/* 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 ());
@@ -2019,7 +2019,7 @@
/* 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 ());