revise Xtensa longcall relaxtion in GAS
Bob Wilson
bwilson@tensilica.com
Sat Mar 26 21:57:00 GMT 2005
This patch makes some changes to the behavior of longcall expansions in the
Xtensa port of GAS:
- Always relax calls to weak symbols even if longcalls are not enabled. This
fixes GCC test g++.dg/warn/weak1.C.
- Relax a call out of range within a section even if longcalls are not enabled.
This doesn't come up much but it seems like a good thing to handle.
I updated some comments and fixed a few minor formatting issues, too. Tested
successfully with the GAS testsuite for an xtensa-elf target. Committed on the
mainline and 2.16 branch.
2005-03-25 Bob Wilson <bob.wilson@acm.org>
* config/tc-xtensa.c (use_longcalls): Delete.
(xg_symbolic_immeds_fit): Check for direct calls and return TRUE if
the use_longcalls flag is set. Do this before checking the segment.
(xg_expand_assembly_insn): Rearrange to use new do_expand flag. Never
expand direct calls at this point.
(xtensa_set_frag_assembly_state): Set use_longcalls flag.
(xtensa_find_unmarked_state_frags): Likewise.
(md_assemble): Do not disable longcalls by setting is_specific_opcode.
(xg_assemble_vliw_tokens): Switch frags when use_longcalls changes.
(convert_frag_immed): Remove unnecessary check of is_specific_opcode.
* config/tc-xtensa.h (xtensa_frag_type): Add use_longcalls flag.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: longcall.patch
Type: text/x-patch
Size: 9276 bytes
Desc: not available
URL: <https://sourceware.org/pipermail/binutils/attachments/20050326/f2dc1cca/attachment.bin>
More information about the Binutils
mailing list