aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2011-04-12 11:34:26 +0000
committerNick Clifton <nickc@gcc.gnu.org>2011-04-12 11:34:26 +0000
commite5db8f2fdee28a867df2ada8f2631d62715a1ac9 (patch)
tree4be7e308ed9b30ccecfca8963fe89f4ee2af6ddc
parent74f091d686a259e096d7fb316d3a2e60623cdd3d (diff)
downloadgcc-e5db8f2fdee28a867df2ada8f2631d62715a1ac9.zip
gcc-e5db8f2fdee28a867df2ada8f2631d62715a1ac9.tar.gz
gcc-e5db8f2fdee28a867df2ada8f2631d62715a1ac9.tar.bz2
v850.c (expand_prologue): Do not use the CALLT instruction for interrupt handlers if...
* 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
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/v850/v850.c6
2 files changed, 10 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 6aea7a4..d7a72db 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/v850/v850.c b/gcc/config/v850/v850.c
index f227596..b0b9388 100644
--- a/gcc/config/v850/v850.c
+++ b/gcc/config/v850/v850.c
@@ -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 ());