bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug gold/12919] icf fails to fold one of the component of std::sort


From: tmsriram at google dot com
Subject: [Bug gold/12919] icf fails to fold one of the component of std::sort
Date: Wed, 21 Sep 2011 18:58:03 +0000

http://sourceware.org/bugzilla/show_bug.cgi?id=12919

--- Comment #4 from Sriraman Tallam <tmsriram at google dot com> 2011-09-21 
18:58:03 UTC ---
It is about pre-emptible symbols and libstdcxx makes namespace std as visiblity
default.

It is working as intended. Let me explain with an example first.

If you have two functions foo and bar, calling zip and zap. If foo and bar are
in a shared object and exported in the dynamic symbol table, it is not correct
to fold foo and bar even though zip and zap get folded. Simple reason, zip and
zap can be pre-empted by another definition in the executable. So, the ICF
algorithm would only fold foo and bar if they both called functions with the
same name. 

Here, the 3 introsort_loop functions essentially point to different
move_median* functions (the functions differ in their names), for A, B and C.
The move_median functions themselves get folded, but since they are exported, 
icf thinks they can be pre-empted and in theory they can. So, it will not fold
the introsort_loop functions.

However, if you were to link this into an executable, the introsort_loop
functions would be folded.

However, pre-emption of these functions maybe never happens in practice. So, I
could add a flag to icf that disables preemption and the introsort_loop
functions would be folded. I am not sure if this is the right thing to do.

-- 
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]