google / highway

Performance-portable, length-agnostic SIMD with runtime dispatch
Apache License 2.0
4.2k stars 317 forks source link

FTBFS 1.0.6 #1658

Closed jengelh closed 1 year ago

jengelh commented 1 year ago

Version: 1.0.6

This release outright fails to build on contemporary i586-linux

[   23s] + cd build
[   23s] + /usr/bin/cmake /home/abuild/rpmbuild/BUILD/highway-1.0.6/. '-GUnix Makefiles' -DCMAKE_INSTALL_PREFIX:PATH=/usr -DCMAKE_INSTALL_BINDIR:PATH=bin -DCMAKE_INSTALL_SBINDIR:PATH=sbin -DCMAKE_INSTALL_LIBEXECDIR:PATH=libexec -DCMAKE_INSTALL_SYSCONFDIR:PATH=etc -DCMAKE_INSTALL_SHAREDSTATEDIR:PATH=/var/lib -DCMAKE_INSTALL_LOCALSTATEDIR:PATH=var -DCMAKE_INSTALL_RUNSTATEDIR:PATH=run -DCMAKE_INSTALL_LIBDIR:PATH=lib -DCMAKE_INSTALL_INCLUDEDIR:PATH=include -DCMAKE_INSTALL_DATAROOTDIR:PATH=share -DINCLUDE_INSTALL_DIR:PATH=/usr/include -DLIB_INSTALL_DIR:PATH=/usr/lib -DSYSCONF_INSTALL_DIR:PATH=/etc -DSHARE_INSTALL_PREFIX:PATH=/usr/share -DCMAKE_BUILD_TYPE=RelWithDebInfo '-DCMAKE_C_FLAGS=-fomit-frame-pointer -O2 -Wall -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -flto=auto -g -DHWY_COMPILE_ALL_ATTAINABLE' '-DCMAKE_CXX_FLAGS=-fomit-frame-pointer -O2 -Wall -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -flto=auto -g -DHWY_COMPILE_ALL_ATTAINABLE' '-DCMAKE_Fortran_FLAGS=-fomit-frame-pointer -O2 -Wall -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -flto=auto -g' '-DCMAKE_EXE_LINKER_FLAGS=-flto=auto -Wl,--as-needed -Wl,-z,now' '-DCMAKE_MODULE_LINKER_FLAGS=-flto=auto -Wl,--as-needed' '-DCMAKE_SHARED_LINKER_FLAGS=-flto=auto -Wl,--as-needed -Wl,-z,now' -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DBUILD_SHARED_LIBS:BOOL=ON -DBUILD_STATIC_LIBS:BOOL=OFF -DCMAKE_COLOR_MAKEFILE:BOOL=OFF -DCMAKE_INSTALL_DO_STRIP:BOOL=OFF -DCMAKE_MODULES_INSTALL_DIR=/usr/lib/cmake/highway -DCMAKE_SKIP_RPATH:BOOL=OFF -DCMAKE_SKIP_INSTALL_RPATH:BOOL=ON -DHWY_SYSTEM_GTEST:BOOL=ON
[   24s] -- The C compiler identification is GNU 13.2.1
[   24s] -- The CXX compiler identification is GNU 13.2.1
gcc version 13.2.1 20230803 [revision cc279d6c64562f05019e1d12d0d825f9391b5553] (SUSE Linux) 
[   24s] -- Detecting C compiler ABI info
[   24s] -- Detecting C compiler ABI info - done
[   24s] -- Check for working C compiler: /usr/bin/cc - skipped
[   24s] -- Detecting C compile features
[   24s] -- Detecting C compile features - done
[   24s] -- Detecting CXX compiler ABI info
[   25s] -- Detecting CXX compiler ABI info - done
[   25s] -- Check for working CXX compiler: /usr/bin/c++ - skipped
[   25s] -- Detecting CXX compile features
[   25s] -- Detecting CXX compile features - done
[   25s] -- Performing Test ATOMICS_LOCK_FREE_INSTRUCTIONS
[   25s] -- Performing Test ATOMICS_LOCK_FREE_INSTRUCTIONS - Success
[   26s] -- Performing Test HWY_EMSCRIPTEN
[   26s] -- Performing Test HWY_EMSCRIPTEN - Failed
[   26s] -- Performing Test HWY_RISCV
[   26s] -- Performing Test HWY_RISCV - Failed
[   26s] -- Looking for sys/auxv.h
[   26s] -- Looking for sys/auxv.h - found
[   26s] -- Looking for asm/hwcap.h
[   26s] -- Looking for asm/hwcap.h - not found
[   26s] -- Found GTest: /usr/lib/libgtest.so  
[   27s] -- Configuring done (3.2s)
[   27s] -- Generating done (0.2s)
[   27s] -- Build files have been written to: /home/abuild/rpmbuild/BUILD/highway-1.0.6/build
[   27s] ++ [[ -n 7 ]]
[   27s] ++ echo -j7
[   27s] + /usr/bin/make -O VERBOSE=1 -j7
...
[   27s] [  3%] Building CXX object CMakeFiles/hwy.dir/hwy/print.cc.o
[   27s] /usr/bin/c++ -DHWY_SHARED_DEFINE -DTOOLCHAIN_MISS_ASM_HWCAP_H -Dhwy_EXPORTS -I/home/abuild/rpmbuild/BUILD/highway-1.0.6 -fomit-frame-pointer -O2 -Wall -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -flto=auto -g -DHWY_COMPILE_ALL_ATTAINABLE -O2 -g -DNDEBUG -fPIC -fvisibility=hidden -fvisibility-inlines-hidden -Wno-builtin-macro-redefined -D__DATE__=\"redacted\" -D__TIMESTAMP__=\"redacted\" -D__TIME__=\"redacted\" -fmerge-all-constants -Wall -Wextra -Wconversion -Wsign-conversion -Wvla -Wnon-virtual-dtor -fmath-errno -fno-exceptions -MD -MT CMakeFiles/hwy.dir/hwy/print.cc.o -MF CMakeFiles/hwy.dir/hwy/print.cc.o.d -o CMakeFiles/hwy.dir/hwy/print.cc.o -c /home/abuild/rpmbuild/BUILD/highway-1.0.6/hwy/print.cc
[   27s] In file included from /home/abuild/rpmbuild/BUILD/highway-1.0.6/hwy/print.h:24,
[   27s]                  from /home/abuild/rpmbuild/BUILD/highway-1.0.6/hwy/print.cc:16:
[   27s] /home/abuild/rpmbuild/BUILD/highway-1.0.6/hwy/base.h:386:17: error: '_Float16' is not supported on this target
[   27s]   386 | using float16_t = _Float16;
jengelh commented 1 year ago
abuild@a4:~> echo -en '_Float16 x;' >x.cpp
abuild@a4:~> g++ -v -c x.cpp
Using built-in specs.
Reading specs from /usr/lib/gcc/i586-suse-linux/13/defaults.spec
COLLECT_GCC=g++
Target: i586-suse-linux
Configured with: ../configure CFLAGS=' -fomit-frame-pointer -O2 -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -g' CXXFLAGS=' -fomit-frame-pointer -O2 -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -g' XCFLAGS=' -fomit-frame-pointer -O2 -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -g' TCFLAGS=' -fomit-frame-pointer -O2 -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -g' GDCFLAGS=' -fomit-frame-pointer -O2 -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -g' --prefix=/usr --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib --libexecdir=/usr/lib --enable-languages=c,c++,objc,fortran,obj-c++,ada,go,d,jit,m2 --enable-host-shared --enable-checking=release --disable-werror --with-gxx-include-dir=/usr/include/c++/13 --with-libstdcxx-zoneinfo=/usr/share/zoneinfo --enable-ssp --disable-libssp --disable-libvtv --enable-cet=auto --disable-libcc1 --enable-plugin --with-bugurl=https://bugs.opensuse.org/ --with-pkgversion='SUSE Linux' --with-slibdir=/lib --with-system-zlib --enable-libstdcxx-allocator=new --disable-libstdcxx-pch --enable-libphobos --enable-version-specific-runtime-libs --with-gcc-major-version-only --enable-linker-build-id --enable-linux-futex --enable-gnu-indirect-function --program-suffix=-13 --without-system-libunwind --with-arch-32=i586 --with-tune=generic --enable-link-serialization --build=i586-suse-linux --host=i586-suse-linux
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 13.2.1 20230803 [revision cc279d6c64562f05019e1d12d0d825f9391b5553] (SUSE Linux) 
COLLECT_GCC_OPTIONS='-v' '-c' '-shared-libgcc' '-fPIE' '-pie' '-mtune=generic' '-march=i586'
 /usr/lib/gcc/i586-suse-linux/13/cc1plus -quiet -v -D_GNU_SOURCE x.cpp -quiet -dumpbase x.cpp -dumpbase-ext .cpp -mtune=generic -march=i586 -version -fPIE -o /tmp/ccXTEU23.s
GNU C++17 (SUSE Linux) version 13.2.1 20230803 [revision cc279d6c64562f05019e1d12d0d825f9391b5553] (i586-suse-linux)
        compiled by GNU C version 13.2.1 20230803 [revision cc279d6c64562f05019e1d12d0d825f9391b5553], GMP version 6.3.0, MPFR version 4.2.0-p9, MPC version 1.3.1, isl version isl-0.26-GMP

GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
#include "..." search starts here:
#include <...> search starts here:
 /usr/include/c++/13
 /usr/include/c++/13/i586-suse-linux
 /usr/include/c++/13/backward
 /usr/lib/gcc/i586-suse-linux/13/include
 /usr/local/include
 /usr/lib/gcc/i586-suse-linux/13/include-fixed
 /usr/lib/gcc/i586-suse-linux/13/../../../../i586-suse-linux/include
 /usr/include
End of search list.
Compiler executable checksum: 00000000000000000000000000000000
x.cpp:1:1: error: '_Float16' is not supported on this target
    1 | _Float16 x;
      | ^~~~~~~~
x.cpp:1:1: error: expected unqualified-id before '_Float16'
jbeich commented 1 year ago

Regressed by 9b80d372f5bd (GCC) and 4d7947a69ce0 (Clang). Also affects FreeBSD i386.

jan-wassenberg commented 1 year ago

Thanks for reporting this. _Float16 has caused a bunch of trouble :/ I haven't found exact documentation on where exactly it is supported, only 'It will be supported on more targets as they define ABIs for it.'. On x86 it seems to require SSE2, so we're checking for that in #1664. I will suggest that libjxl update to a later release that includes this fix.

Traneptora commented 1 year ago

It appears it also fails on i686-w64-mingw32.

jan-wassenberg commented 1 year ago

FYI we are planning a 1.0.7 release soon that will include this fix.

jan-wassenberg commented 1 year ago

1.0.7 is released. Marking as fixed :)