aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilip Blundell <philb@gnu.org>2001-05-24 21:09:05 +0000
committerPhil Blundell <pb@gcc.gnu.org>2001-05-24 21:09:05 +0000
commite46ccf7c814d24040d7ba4bab65629ec73af1c59 (patch)
treebd779a568af9f649bd5ce368a537665bf8ee1b63
parentb605cfa89145e8a9b49419f03130a3bfe483d17a (diff)
downloadgcc-e46ccf7c814d24040d7ba4bab65629ec73af1c59.zip
gcc-e46ccf7c814d24040d7ba4bab65629ec73af1c59.tar.gz
gcc-e46ccf7c814d24040d7ba4bab65629ec73af1c59.tar.bz2
arm.c (output_return_instruction): Correctly handle interworking and interrupt functions.
2001-05-24 Philip Blundell <philb@gnu.org> * config/arm/arm.c (output_return_instruction): Correctly handle interworking and interrupt functions. From-SVN: r42543
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/arm/arm.c2
2 files changed, 7 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index af1163d..5d436c8 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
2001-05-24 Philip Blundell <philb@gnu.org>
+ * config/arm/arm.c (output_return_instruction): Correctly handle
+ interworking and interrupt functions.
+
+2001-05-24 Philip Blundell <philb@gnu.org>
+
* config/arm/arm.h (TARGET_SWITCHES): Correct misleading help for
-m{no-}sched-prolog. Fix typos and improve formatting.
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index 55e4630..ed4a35b 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -7037,6 +7037,8 @@ output_return_instruction (operand, really_return, reverse)
load a single register. On other architectures, the cost is the same.
In 26 bit mode we have to use LDM in order to be able to restore the CPSR. */
if ((live_regs_mask == (1 << LR_REGNUM))
+ && ! TARGET_INTERWORK
+ && ! IS_INTERRUPT (func_type)
&& (! really_return || TARGET_APCS_32))
{
if (! really_return)