This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH][ARM] PR target/64405 Disable interworking for non-Thumb targets


Ping, with a caveat.

This bug appears on all release branches and is thus not a regression.
Should it be slotted for next stage 1?

Kyrill

On 16/01/15 16:55, Kyrill Tkachov wrote:
Hi all,

This PR is about GCC emiting 'bx lr' instructions when compiling with
-march=armv2 or armv3(!). It should be using a move into the pc instead
on those architectures.
The cause I found for it is that the functions are marked with the
ARM_FT_INTERWORKED type and hence in the output_return_instruction
function they use 'bx lr'.
Rather than changing output_return_instruction to check for the
architecture level when outputting the string I think the correct thing
to do is to disable interworking
when the target does not support any Thumb at all, like these old
architectures. Is that correct thinking?

Anyway, with this patch the functions are given the ARM_FT_NORMAL type
and use 'mov pc, lr' to return.
Tested arm-none-eabi.

What do people think?

Thanks,
Kyrill

2014-01-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>

      PR target/64405
      * config/arm/arm.c (arm_option_override): Disable interworking if Thumb
      is not available.

2014-01-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>

      PR target/64405
      * gcc.target/arm/pr64405_1.c: New test.



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]