https://sourceware.org/bugzilla/show_bug.cgi?id=29058
Bug ID: 29058
Summary: Quadratic(?) slowdown of m68k-as on m68k_frob_symbol()
Product: binutils
Version: 2.38
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: gas
Assignee: unassigned at sourceware dot org
Reporter: slyich at gmail dot com
Target Milestone: ---
Created attachment 14060
--> https://sourceware.org/bugzilla/attachment.cgi?id=14060&action=edit
sqlite3-sqlite3.o.c.xz
Initially noticed the problem when tried to cross-compile sqlite-3.38.2 to
m68k-unknown-linux-gnu.
Reproducer run:
$ m68k-unknown-linux-gnu-gcc -g -O2 -S sqlite3-sqlite3.o.c -o a.S
# takes 40 seconds, ok
$ m68k-unknown-linux-gnu-gcc -c a.S
# takes hours, bug
perf top -p $pid says all time is spent in:
99,85% m68k-unknown-linux-gnu-as [.] m68k_frob_symbol
which makes sense as m68k_frob_symbol() is a linear scan over every label:
gas/write.c:
write_object_file() {
for (symp = symbol_rootP; symp; symp = symbol_next (symp)) {
obj_frob_symbol (symp, punt); (or tc_frob_symbol (symp, punt);)
gas/config/tc-m68k.c:
m68k_frob_symbol(symbolS *sym) {
for (l = labels; l != NULL; l = l->next) {
if (l->label == sym) { ...
--
You are receiving this mail because:
You are on the CC list for the bug.