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. _______________________________________________ bug-binutils mailing list bug-binutils@gnu.org https://lists.gnu.org/mailman/listinfo/bug-binutils