speed up Xtensa branch target alignment

Bob Wilson bwilson@tensilica.com
Tue Dec 20 19:45:00 GMT 2005
The Xtensa port of GAS uses the relaxation mechanism to align branch targets for 
performance, but it can be slow.  I'm committing this patch to fix the most 
obvious performance problems.  It fixes a serious memory leak and calls 
frag_wane for frags that do not need to be reexamined on future iterations.  It 
does not cause any testsuite regressions for the xtensa-elf target.  For large 
input files, the assembler can still take a long time to run, so we hope to make 
further improvements in the future.

2005-12-20  Sterling Augustine  <sterling@tensilica.com>

	* config/tc-xtensa.c (xtensa_mark_narrow_branches): Set
	is_aligning_branch flag.
	(find_address_of_next_align_frag): Limit by xtensa_fetch_width.
	(future_alignment_required): Except for frags with is_aligning_branch
	flag set, call frag_wane for frags that do not need to be reexamined
	for aligning.
	(relax_frag_immed): Replace orig_vinsn with cur_vinsn to fix a leak.
	(convert_frag_immed): Likewise.
	(convert_frag_narrow): Check is_aligning_branch flag.
	* config/tc-xtensa.h (xtensa_frag_type): Add is_aligning_branch flag.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: gas-align-perf.diff
Type: text/x-patch
Size: 6532 bytes
Desc: not available
URL: <https://sourceware.org/pipermail/binutils/attachments/20051220/6e17a91a/attachment.bin>


More information about the Binutils mailing list