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