arm.c (output_return_instruction): Correctly handle interworking and interrupt functions.
authorPhilip Blundell <philb@gnu.org>
Thu, 24 May 2001 21:09:05 +0000 (21:09 +0000)
committerPhil Blundell <pb@gcc.gnu.org>
Thu, 24 May 2001 21:09:05 +0000 (21:09 +0000)
2001-05-24  Philip Blundell  <philb@gnu.org>

* config/arm/arm.c (output_return_instruction): Correctly handle
interworking and interrupt functions.

From-SVN: r42543

gcc/ChangeLog
gcc/config/arm/arm.c

index af1163dcb6dd5babbdd476498f5f19f2646f5972..5d436c8b31b8f29f5c58e08e789e1304579d00c4 100644 (file)
@@ -1,3 +1,8 @@
+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
index 55e4630c15e037070a7eb2ca2fd0257d61db11fe..ed4a35bd30b898f128193a6ae4b0e4094af89309 100644 (file)
@@ -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)