New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
breakage with GCC 10 #369
Comments
I should have thought to ask initially about the relevant targets, but there's info under https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/QCZ2NWKKNHEPUUIB7V3LM4AAX7YGJASC/ in case you don't already know and it's useful. |
Thank you for the report and heads-up! I will try to fix this as quickly as possible plus planning for a release that puts it out. I actually tried GCC 10 some time ago (curiosity about C2x), and found that C2x may break things quite a bit. I am confident about GCC 10, but not so much about supporting C2x. |
…es. Distilled key differences between header-only, import, export, usage with respect to LIBXSMM and LIBXSMM/ext. Unified and commented decoration macros.
… LIBXSMM now compiles in any case, however header-only applications will duplicated symbols per each object-file if -fcommon is not the default. GCC-10 changed from -fcommon to -fno-common, i.e., duplicated symbols cause linker errors instead of being quietly dropped.
The current master just needs to be released (v1.15) to get LIBXSMM going with GCC 10! Regarding GCC-10, I may double-check with another build as we get closer to the release of GCC-10 but at the moment I can get GCC/master ICEing in the following case: make
cd tests
make MIX=1 ( The default for GCC-10 is The output looks like:
|
You wrote:
The current master just needs to be released (v1.15) to get LIBXSMM going with GCC 10!
This issue is fully resolved.
Good, but I'm sure there's no rush!
Regarding GCC-10, I may double-check with another build as we get closer to the release of GCC-10 but at the moment I can get GCC/master ICEing in the following case:
Did you report it to the GCC tracker? If not, what date is the gcc
from, and is it with recent libxsmm head, so I can try to reproduce and
report it?
|
Let me share the exact SHA for LIBXSMM (beside of saying "master"). Before sharing, I will rebuild GCC and note down the SHA as well. For the time being, it's present with LIBXSMM/master and GCC from February 7th. So it is very likely present with GCC/master. The steps about how to reproduce are shown above. |
We are lucky, the problem (ICE) is gone between Feb. 7th and 16th! I checked with LIBXSMM 81bb743, and prepended GNU Binutils 2.34 to PATH (outdated on my machine). The GNU Compiler from Feb. 7th fails with an ICE as shown above. In contrast, GCC from Feb. 16th works (SHA=9a3d019a74d8d49fb6e6d75a00bd79fdb936a2e1). There are quite some changes to GCC's source between 7th and 16th, and I saved myself bisecting the commits wrt the ICE. Regarding your original report about LIBXSMM w/ GCC-10, the main breaking change in GCC-10 is a change in default compiler flags: GCC prior to 10 uses |
The build breaks with the defaults GCC 10 uses. (It's not released, but will be in Fedora 32, and has broken a load of builds, not just due to this issue...) It defaults to -fno-common (https://gcc.gnu.org/gcc-10/porting_to.html) which produces a bunch of link errors with libxsmm. They should be reproducible using -fno-common with earlier GCC, but I haven't tried that, and I couldn't immediately see how to fix them. The workaround is just to use -fcommon, of course, so it's not a big deal. The targets for which -fno-common produces better code don't seem to be documented, and I don't know if it's actually a win on x86_64.
The text was updated successfully, but these errors were encountered: