Problem with ARM longcalls

Bernd Schmidt bernds@codesourcery.com
Wed Mar 23 15:47:00 GMT 2011


I've discovered a problem with -mlong-calls on ARM. The bug was first
reported against a new target, but I'd copied the relevant code from the
ARM backend.

We use current_function_section in arm_is_long_call_p to decide whether
we're calling something that goes into the same section. The problem
with this is that current_function_section can only be used during
final, since it relies on the global variable in_cold_section_p which is
set up only in assemble_start_function. On ARM, this problem manifests
as short-calls when a long-call would be required; in the other port it
was an "insn doesn't satisfy its constraints" error.

The following patch is against 4.5, since the problem appears hidden in
mainline (the initialization of first_function_block_is_cold has
changed). Ok for trunk and branches after arm-linux tests complete?


Bernd
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: dfs.diff
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20110323/89a0904e/attachment.ksh>


More information about the Gcc-patches mailing list