Hi all. I just have taken some time to inspect CPUTYPE support for clang. It seems to me that clang generates incorrect code in some cases. The first failure point I discovered was inability to build gcc from sources or compile something with gcc. Code produced by gcc seem to fail whether this was gcc compiled from bootstrap or anything else: http://lists.freebsd.org/pipermail/freebsd-multimedia/2012-October/013469.html I started testing by commenting out CPUTYPE in make.conf. After first rebuild I also updated the ports and installed new version of wine-devel. And to my surprise it works like a charm. Rolling back to the world built with CPUTYPE=native makes wine break again. To my surprise CPUTYPE was not the cause of wine failure per se. Wine continues to work for k6, k6-3, athlon and athlon-tbird. But it completely fails when the world was built with athlon-4 and athlon-xp. Trying to recompile gcc I also found that everything works and yet again up to the athlon-tbird. My conclusion is: clang incorrectly produces code within one of core libraries (I haven't tested which one yet, but I suspect libgcc_s.so) when optimizing for athlon-4 or athlon-xp. -- Sphinx of black quartz, judge my vow.
On Wed, Oct 24, 2012 at 10:57:22AM +0300, Volodymyr Kostyrko wrote:> Hi all. > > I just have taken some time to inspect CPUTYPE support for clang. It > seems to me that clang generates incorrect code in some cases. > > The first failure point I discovered was inability to build gcc from > sources or compile something with gcc. Code produced by gcc seem to fail > whether this was gcc compiled from bootstrap or anything else: > > http://lists.freebsd.org/pipermail/freebsd-multimedia/2012-October/013469.html > > I started testing by commenting out CPUTYPE in make.conf. After first > rebuild I also updated the ports and installed new version of > wine-devel. And to my surprise it works like a charm. Rolling back to > the world built with CPUTYPE=native makes wine break again. > > To my surprise CPUTYPE was not the cause of wine failure per se. Wine > continues to work for k6, k6-3, athlon and athlon-tbird. But it > completely fails when the world was built with athlon-4 and athlon-xp. > > Trying to recompile gcc I also found that everything works and yet again > up to the athlon-tbird. > > My conclusion is: clang incorrectly produces code within one of core > libraries (I haven't tested which one yet, but I suspect libgcc_s.so) > when optimizing for athlon-4 or athlon-xp.I am not versed in the AMD marketing monikers. I guess that athlon-{4,xp} turns on SSE and might be SSE2, while previous selections turn it off. Can you confirm/deny this ? BTW, did you tested on i386 or amd64 ? -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 196 bytes Desc: not available URL: <http://lists.freebsd.org/pipermail/freebsd-stable/attachments/20121024/4d5168a9/attachment.sig>
On 2012-10-24 09:57, Volodymyr Kostyrko wrote:> I just have taken some time to inspect CPUTYPE support for clang. It > seems to me that clang generates incorrect code in some cases. > > The first failure point I discovered was inability to build gcc from > sources or compile something with gcc. Code produced by gcc seem to fail > whether this was gcc compiled from bootstrap or anything else: > > http://lists.freebsd.org/pipermail/freebsd-multimedia/2012-October/013469.htmlCan you attempt to figure out what the illegal instruction was, in that case?> I started testing by commenting out CPUTYPE in make.conf. After first > rebuild I also updated the ports and installed new version of > wine-devel. And to my surprise it works like a charm. Rolling back to > the world built with CPUTYPE=native makes wine break again. > > To my surprise CPUTYPE was not the cause of wine failure per se. Wine > continues to work for k6, k6-3, athlon and athlon-tbird. But it > completely fails when the world was built with athlon-4 and athlon-xp. > > Trying to recompile gcc I also found that everything works and yet again > up to the athlon-tbird. > > My conclusion is: clang incorrectly produces code within one of core > libraries (I haven't tested which one yet, but I suspect libgcc_s.so) > when optimizing for athlon-4 or athlon-xp.On the problematic athlons, can you please post the exact CPUIDs from dmesg? If you have WITH_CLANG_EXTRAS enabled, please also post the output of "opt -version".