This is the mail archive of the
binutils-cvs@sourceware.org
mailing list for the binutils project.
[binutils-gdb] gas: xtensa: speed up find_trampoline_seg
- From: Max Filippov <jcmvbkbc at sourceware dot org>
- To: bfd-cvs at sourceware dot org
- Date: 27 Nov 2017 23:19:52 -0000
- Subject: [binutils-gdb] gas: xtensa: speed up find_trampoline_seg
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=407e1140841f7fc337e90a7ba4482fb5a10c1701
commit 407e1140841f7fc337e90a7ba4482fb5a10c1701
Author: Max Filippov <jcmvbkbc@gmail.com>
Date: Mon Nov 20 06:35:06 2017 -0800
gas: xtensa: speed up find_trampoline_seg
find_trampoline_seg takes noticeable time when assembling source with
many sections. Cache the result of the most recent search and check it
first. No functional changes.
gas/
2017-11-27 Max Filippov <jcmvbkbc@gmail.com>
* config/tc-xtensa.c (find_trampoline_seg): Add static variable
that caches the result of the most recent search.
Diff:
---
gas/ChangeLog | 5 +++++
gas/config/tc-xtensa.c | 9 ++++++++-
2 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 92d0c36..81f9f83 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,5 +1,10 @@
2017-11-27 Max Filippov <jcmvbkbc@gmail.com>
+ * config/tc-xtensa.c (find_trampoline_seg): Add static variable
+ that caches the result of the most recent search.
+
+2017-11-27 Max Filippov <jcmvbkbc@gmail.com>
+
* config/tc-xtensa.c (trampoline_chain_entry, trampoline_chain)
(trampoline_chain_index): New structures.
(trampoline_index): Add chain_index field.
diff --git a/gas/config/tc-xtensa.c b/gas/config/tc-xtensa.c
index 9defd73..ce7eb49 100644
--- a/gas/config/tc-xtensa.c
+++ b/gas/config/tc-xtensa.c
@@ -7453,11 +7453,18 @@ static struct trampoline_seg *
find_trampoline_seg (asection *seg)
{
struct trampoline_seg *ts = trampoline_seg_list.next;
+ static struct trampoline_seg *mr;
+
+ if (mr && mr->seg == seg)
+ return mr;
for ( ; ts; ts = ts->next)
{
if (ts->seg == seg)
- return ts;
+ {
+ mr = ts;
+ return ts;
+ }
}
return NULL;