Comment # 75 on bug 1212101 from Richard Biener
(In reply to Martin Sirringhaus from comment #73)
> Ok, using `gcc-nm -C {} | grep VecStorage` I get two hits:
> 
> SkOpts_hsw.o
> 00000000 W skvx::Vec<16, float>::VecStorage(float)
> 00000000 W skvx::Vec<16, float>::VecStorage(float)
> 00000000 W skvx::Vec<16, unsigned int>::VecStorage(unsigned int)
> 00000000 W skvx::Vec<16, unsigned int>::VecStorage(unsigned int)
> 00000000 W skvx::Vec<16, unsigned short>::VecStorage(unsigned short)
> 00000000 W skvx::Vec<16, unsigned short>::VecStorage(unsigned short)
> 00000000 W skvx::Vec<2, float>::VecStorage(float)
> 00000000 W skvx::Vec<2, float>::VecStorage(float)
> 00000000 W skvx::Vec<2, unsigned char>::VecStorage(unsigned char)
> 00000000 W skvx::Vec<2, unsigned char>::VecStorage(unsigned char)
> 00000000 W skvx::Vec<2, int>::VecStorage(int)
> 00000000 W skvx::Vec<2, int>::VecStorage(int)
> 00000000 W skvx::Vec<2, unsigned int>::VecStorage(unsigned int)
> 00000000 W skvx::Vec<2, unsigned int>::VecStorage(unsigned int)
> 00000000 W skvx::Vec<2, unsigned long>::VecStorage(unsigned long)
> 00000000 W skvx::Vec<2, unsigned long>::VecStorage(unsigned long)
> 00000000 W skvx::Vec<2, unsigned short>::VecStorage(unsigned short)
> 00000000 W skvx::Vec<2, unsigned short>::VecStorage(unsigned short)
> 00000000 W skvx::Vec<32, int>::VecStorage(int)
> 00000000 W skvx::Vec<32, int>::VecStorage(int)
> 00000000 W skvx::Vec<4, float>::VecStorage(float)
> 00000000 W skvx::Vec<4, float>::VecStorage(float)
> 00000000 W skvx::Vec<4, unsigned char>::VecStorage(unsigned char)
> 00000000 W skvx::Vec<4, unsigned char>::VecStorage(unsigned char)
> 00000000 W skvx::Vec<4, int>::VecStorage(int)
> 00000000 W skvx::Vec<4, int>::VecStorage(int)
> 00000000 W skvx::Vec<4, unsigned int>::VecStorage(unsigned int)
> 00000000 W skvx::Vec<4, unsigned int>::VecStorage(unsigned int)
> 00000000 W skvx::Vec<4, unsigned long>::VecStorage(unsigned long)
> 00000000 W skvx::Vec<4, unsigned long>::VecStorage(unsigned long)
> 00000000 W skvx::Vec<4, unsigned short>::VecStorage(unsigned short)
> 00000000 W skvx::Vec<4, unsigned short>::VecStorage(unsigned short)
> 00000000 W skvx::Vec<8, unsigned char>::VecStorage(unsigned char)
> 00000000 W skvx::Vec<8, unsigned char>::VecStorage(unsigned char)
> 00000000 W skvx::Vec<8, int>::VecStorage(int)
> 00000000 W skvx::Vec<8, int>::VecStorage(int)
> 00000000 W skvx::Vec<8, unsigned short>::VecStorage(unsigned short)
> 00000000 W skvx::Vec<8, unsigned short>::VecStorage(unsigned short)
> SkOpts_skx.o
> 00000000 W skvx::Vec<16, int>::VecStorage(int)
> 00000000 W skvx::Vec<16, int>::VecStorage(int)
> 00000000 W skvx::Vec<2, int>::VecStorage(int)
> 00000000 W skvx::Vec<2, int>::VecStorage(int)
> 00000000 W skvx::Vec<2, unsigned int>::VecStorage(unsigned int)
> 00000000 W skvx::Vec<2, unsigned int>::VecStorage(unsigned int)
> 00000000 W skvx::Vec<4, int>::VecStorage(int)
> 00000000 W skvx::Vec<4, int>::VecStorage(int)
> 00000000 W skvx::Vec<8, int>::VecStorage(int)
> 00000000 W skvx::Vec<8, int>::VecStorage(int)
> 
> But why would upstreams binary work, while ours crashes? Shouldn't that be a
> general problem, then?

It's a problem that's somewhat specific to LTO as with LTO the linker is
involved before these symbols are removed as unneeded and it gets the
chance to pick up the "wrong" one as prevailing.


You are receiving this mail because: