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.