summaryrefslogtreecommitdiff
path: root/gcc/config/arm
diff options
context:
space:
mode:
authorpb <pb@138bc75d-0d04-0410-961f-82ee72b054a4>2001-05-24 21:09:05 +0000
committerpb <pb@138bc75d-0d04-0410-961f-82ee72b054a4>2001-05-24 21:09:05 +0000
commit2cceed212f6740a1223fce9826dc7c9f8bc0229b (patch)
treebd779a568af9f649bd5ce368a537665bf8ee1b63 /gcc/config/arm
parent96b69d5643181b94d626272dc4a26cbd31206cea (diff)
downloadgcc-2cceed212f6740a1223fce9826dc7c9f8bc0229b.tar.gz
2001-05-24 Philip Blundell <philb@gnu.org>
* config/arm/arm.c (output_return_instruction): Correctly handle interworking and interrupt functions. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@42543 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/arm')
-rw-r--r--gcc/config/arm/arm.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index 55e4630c15e..ed4a35bd30b 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)