[Xtensa Patch] Improve peformance when assembling Exception Table Entries
Sterling Augustine
sterling@tensilica.com
Wed Aug 19 18:00:00 GMT 2009
When the Xtensa port of gas encounters an expression that takes the
difference of two symbols, it walks the frags between those two symbols.
C++ exception tables as produced by GCC have a lot of these expressions,
and they are of the form a - b, a - c, a - d. This results in n-squared
performance in the length of the C++ function, which in turn prevents
certain G++ torture tests from completing in a reasonable amount of time.
This patch caches the second frag, allowing the traversal to continue
from where it left off, resulting in linear performance and allowing the
GCC torture tests to complete in reasonable time.
Sterling
2009-08-19 Sterling Augustine <sterling@tensilica.com>
* config/tc-xtensa.h (xtensa_frag_data): Rename unused field
fr_prev to no_transform_end.
* config/tc-xtensa.c (xtensa_mark_difference_of_two_symbols):
Set and use no_transform_end.
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: diff_symbol_patch
URL: <https://sourceware.org/pipermail/binutils/attachments/20090819/3a101601/attachment.ksh>
More information about the Binutils
mailing list