https://bugzilla.suse.com/show_bug.cgi?id=1212101
https://bugzilla.suse.com/show_bug.cgi?id=1212101#c77
--- Comment #77 from Christopher Yeleighton
(In reply to Richard Biener from comment #69)
(In reply to Martin Sirringhaus from comment #68)
Created attachment 867688 [details] Preprocessed SkOpts_avx
Here is the preprocessed SkOpts_avx with -flto. Although, fwiw I suspect this file is a red herring.
A quick check doesn't show any symbols instantiated besides the obviously desired ones when using -O3 -mavx.
Oh, but when building with -O0 I can clearly see the C++ frontend instantiating
skvx::Vec<4, unsigned long>::VecStorage(unsigned long)
for example. That means these will eventually leak into the LTO link where they also get "random" chosen. In fact I can see that with optimization these symbols are only removed during IPA which means for LTO at LTO WPA time.
To make your explanation less cryptic: these constructors should be expanded inline and forgotten and not end up as separate symbols. However, both -O0 and -flto cause them to be used as stand-alone functions, one for debugging and the other for binary optimisation. I have checked that libxul.so built without -flto does not contain the offending constructor at all. -- You are receiving this mail because: You are the assignee for the bug.