lab-cosmo / librascal

A scalable and versatile library to generate representations for atomic-scale learning
https://lab-cosmo.github.io/librascal/
GNU Lesser General Public License v2.1
80 stars 20 forks source link

Building librascal with -O3 -g crashes AppleClang-10 #311

Open Luthaf opened 3 years ago

Luthaf commented 3 years ago

This is the first time I see a compiler crash!

$ clang --version
Apple LLVM version 10.0.1 (clang-1001.0.46.4)
Target: x86_64-apple-darwin18.7.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

$ cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS=-g ..
-- Build type is: Release
-- The CXX compiler identification is AppleClang 10.0.1.10010046
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /Library/Developer/CommandLineTools/usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Downloading wigxjpf
-- Found PythonInterp: /opt/miniconda3/bin/python3 (found suitable version "3.7.9", minimum required is "3")
-- Found PythonLibs: /opt/miniconda3/lib/libpython3.7m.dylib
-- Downloading pybind11
-- pybind11 v2.3.0
-- Installation ROOT: /opt/miniconda3
-- cpplint parser: /usr/local/bin/cpplint
-- clang-format executable: /usr/local/bin/clang-format
-- BLACK auto formatter: /opt/miniconda3/bin/black
-- Configuring done
-- Generating done
-- Build files have been written to: ~/code/librascal/build

$ make
Scanning dependencies of target rascal
[  3%] Building CXX object src/CMakeFiles/rascal.dir/rascal/utils/json_io.cc.o
[  6%] Building CXX object src/CMakeFiles/rascal.dir/rascal/utils/units.cc.o
[  9%] Building CXX object src/CMakeFiles/rascal.dir/rascal/utils/utils.cc.o
[ 12%] Building CXX object src/CMakeFiles/rascal.dir/rascal/utils/sparsify_fps.cc.o
[ 15%] Building CXX object src/CMakeFiles/rascal.dir/rascal/math/bessel.cc.o
[ 18%] Building CXX object src/CMakeFiles/rascal.dir/rascal/math/hyp1f1.cc.o
[ 21%] Building CXX object src/CMakeFiles/rascal.dir/rascal/math/interpolator.cc.o
[ 25%] Building CXX object src/CMakeFiles/rascal.dir/rascal/math/gauss_legendre.cc.o
[ 28%] Building CXX object src/CMakeFiles/rascal.dir/rascal/math/spherical_harmonics.cc.o
[ 31%] Building CXX object src/CMakeFiles/rascal.dir/rascal/structure_managers/structure_manager_lammps.cc.o
[ 34%] Building CXX object src/CMakeFiles/rascal.dir/rascal/structure_managers/structure_manager_centers.cc.o
[ 37%] Building CXX object src/CMakeFiles/rascal.dir/rascal/representations/calculator_base.cc.o
[ 40%] Linking CXX shared library librascal.dylib
[ 40%] Built target rascal
Scanning dependencies of target spherical_invariants_example
[ 43%] Building CXX object examples/CMakeFiles/spherical_invariants_example.dir/spherical_invariants_example.cc.o
In file included from ~/code/librascal/examples/spherical_invariants_example.cc:28:
In file included from ~/code/librascal/src/rascal/representations/calculator_sorted_coulomb.hh:33:
~/code/librascal/src/rascal/structure_managers/structure_manager.hh:1235:24: error: internal error: could not emit constant value "abstractly"
    template <bool C = IsOrderOneAndHasOrder<2>, std::enable_if_t<C, int> = 0>
                       ^
~/code/librascal/src/rascal/structure_managers/structure_manager.hh:1235:24: error: internal error: could not emit constant value "abstractly"
~/code/librascal/src/rascal/structure_managers/structure_manager.hh:1251:24: error: internal error: could not emit constant value "abstractly"
    template <bool C = IsOrderOneAndHasOrder<2>, std::enable_if_t<C, int> = 0>
                       ^
~/code/librascal/src/rascal/structure_managers/structure_manager.hh:1251:24: error: internal error: could not emit constant value "abstractly"
~/code/librascal/src/rascal/structure_managers/structure_manager.hh:1251:24: error: internal error: could not emit constant value "abstractly"
~/code/librascal/src/rascal/structure_managers/structure_manager.hh:1251:24: error: internal error: could not emit constant value "abstractly"
~/code/librascal/src/rascal/structure_managers/structure_manager.hh:1235:24: error: internal error: could not emit constant value "abstractly"
    template <bool C = IsOrderOneAndHasOrder<2>, std::enable_if_t<C, int> = 0>
                       ^
~/code/librascal/src/rascal/structure_managers/structure_manager.hh:1235:24: error: internal error: could not emit constant value "abstractly"
8 errors generated.
make[2]: *** [examples/CMakeFiles/spherical_invariants_example.dir/spherical_invariants_example.cc.o] Error 1
make[1]: *** [examples/CMakeFiles/spherical_invariants_example.dir/all] Error 2
make: *** [all] Error 2

The code compiles fine without -DCMAKE_CXX_FLAGS=-g.

I'll investigate a bit more to see which flags produces this. If we manage to create a minimal bug report (single file, not including the full librascal source), we could send a bug report to LLVM.

Luthaf commented 3 years ago

It seems to compile fine with LLVM clang 11. So we could also decide that AppleClang 10 is not supported =/