diff options
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/arm/arm.c | 16 |
2 files changed, 18 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fc6fa1e..a69996d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2009-08-24 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com> + * config/arm/arm.c (output_return_instruction): Handle for + unified syntax. + +2009-08-24 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com> + * config/arm/arm.c (arm_select_cc_mode): Handle subreg. 2009-08-24 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com> diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 0d53896..1ac6510 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -12889,18 +12889,28 @@ output_return_instruction (rtx operand, int really_return, int reverse) gcc_assert (stack_adjust == 0 || stack_adjust == 4); if (stack_adjust && arm_arch5 && TARGET_ARM) - sprintf (instr, "ldm%sib\t%%|sp, {", conditional); + if (TARGET_UNIFIED_ASM) + sprintf (instr, "ldmib%s\t%%|sp, {", conditional); + else + sprintf (instr, "ldm%sib\t%%|sp, {", conditional); else { /* If we can't use ldmib (SA110 bug), then try to pop r3 instead. */ if (stack_adjust) live_regs_mask |= 1 << 3; - sprintf (instr, "ldm%sfd\t%%|sp, {", conditional); + + if (TARGET_UNIFIED_ASM) + sprintf (instr, "ldmfd%s\t%%|sp, {", conditional); + else + sprintf (instr, "ldm%sfd\t%%|sp, {", conditional); } } else - sprintf (instr, "ldm%sfd\t%%|sp!, {", conditional); + if (TARGET_UNIFIED_ASM) + sprintf (instr, "pop%s\t{", conditional); + else + sprintf (instr, "ldm%sfd\t%%|sp!, {", conditional); p = instr + strlen (instr); |