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