Bug#949024: g++: internal compiler error on beignet + llvm10
Package: g++-9
Version: 9.2.1-23
Control: affects -1 src:beignet
Trying to build beignet with llvm 10 and the default -std fails with
this internal compiler error. (See attached for exact changes; it
previously used -std=c++0x, but that fails with LLVM 10 because it can't
find std::index_sequence.)
_Possibly_ this upstream bug:
https://gcc.gnu.org/ml/gcc-bugs/2019-11/msg02364.html
(The error says to attach the full preprocessed source, but it's ~2M
which I suspect is too big to be allowed here.)
// Target: x86_64-linux-gnu
// Configured with: ../src/configure -v --with-pkgversion='Debian
9.2.1-23' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs
--enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2
--prefix=/usr --with-gcc-major-version-only --program-suffix=-9
--program-prefix=x86_64-linux-gnu- --enable-shared
--enable-linker-build-id --libexecdir=/usr/lib
--without-included-gettext --enable-threads=posix --libdir=/usr/lib
--enable-nls --enable-bootstrap --enable-clocale=gnu
--enable-libstdcxx-debug --enable-libstdcxx-time=yes
--with-default-libstdcxx-abi=new --enable-gnu-unique-object
--disable-vtable-verify --enable-plugin --enable-default-pie
--with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto
--enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64
--with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic
--enable-offload-targets=nvptx-none,hsa --without-cuda-driver
--enable-checking=release --build=x86_64-linux-gnu
--host=x86_64-linux-gnu --target=x86_64-linux-gnu
--with-build-config=bootstrap-lto-lean --enable-link-mutex
// Thread model: posix
// Supported LTO compression algorithms: zlib zstd
// gcc version 9.2.1 20200110 (Debian 9.2.1-23)
//
// In file included from
/home/rnpalmer/Debian/builds/stackbuild/beignet/backend/src/./ir/instruction.hpp:28,
// from
/home/rnpalmer/Debian/builds/stackbuild/beignet/backend/src/ir/instruction.cpp:24:
//
/home/rnpalmer/Debian/builds/stackbuild/beignet/backend/src/./ir/immediate.hpp:
In constructor 'gbe::ir::Immediate::Immediate(gbe::ir::half*, uint32_t)':
//
/home/rnpalmer/Debian/builds/stackbuild/beignet/backend/src/./ir/immediate.hpp:159:62:
warning: 'void* memcpy(void*, const void*, size_t)' writing to an object
of non-trivially copyable type 'class gbe::ir::half'; use
copy-assignment or copy-initialization instead [-Wclass-memaccess]
// 159 | memcpy(this->data.FIELD, FIELD, ELEMNUM * getTypeSize()); \
// | ^
//
/home/rnpalmer/Debian/builds/stackbuild/beignet/backend/src/./ir/immediate.hpp:172:5:
note: in expansion of macro 'DECL_CONSTRUCTOR'
// 172 | DECL_CONSTRUCTOR(half, f16, TYPE_HALF, elemNum)
// | ^~~~~~~~~~~~~~~~
// In file included from
/home/rnpalmer/Debian/builds/stackbuild/beignet/backend/src/./ir/immediate.hpp:30,
// from
/home/rnpalmer/Debian/builds/stackbuild/beignet/backend/src/./ir/instruction.hpp:28,
// from
/home/rnpalmer/Debian/builds/stackbuild/beignet/backend/src/ir/instruction.cpp:24:
//
/home/rnpalmer/Debian/builds/stackbuild/beignet/backend/src/./ir/half.hpp:34:9:
note: 'class gbe::ir::half' declared here
// 34 | class half
// | ^~~~
//
/home/rnpalmer/Debian/builds/stackbuild/beignet/backend/src/ir/instruction.cpp:
In instantiation of 'class gbe::ir::internal::NaryInstruction<0>':
//
/home/rnpalmer/Debian/builds/stackbuild/beignet/backend/src/ir/instruction.cpp:135:59:
required from here
//
/home/rnpalmer/Debian/builds/stackbuild/beignet/backend/src/ir/instruction.cpp:120:31:
internal compiler error: in tsubst_copy, at cp/pt.c:15779
// 120 | class ALIGNED_INSTRUCTION NaryInstruction :
// | ^~~~~~~~~~~~~~~
// Please submit a full bug report,
// with preprocessed source if appropriate.
// See <file:///usr/share/doc/gcc-9/README.Bugs> for instructions.
// /usr/lib/gcc/x86_64-linux-gnu/9/cc1plus -quiet -I
/home/rnpalmer/Debian/builds/stackbuild/beignet/obj-x86_64-linux-gnu -I
/home/rnpalmer/Debian/builds/stackbuild/beignet -I
/home/rnpalmer/Debian/builds/stackbuild/beignet/include -I
/usr/include/libdrm -I
/home/rnpalmer/Debian/builds/stackbuild/beignet/obj-x86_64-linux-gnu/backend
-I /home/rnpalmer/Debian/builds/stackbuild/beignet/backend/src/. -I
/usr/lib/llvm-10/include -imultiarch x86_64-linux-gnu -D_GNU_SOURCE -D
ENABLE_OPENCL_20 -D GEN7_SAMPLER_CLAMP_BORDER_WORKAROUND -D LLVM_100 -D
gbe_EXPORTS -D _FORTIFY_SOURCE=2 -D GBE_DEBUG=1 -D _GNU_SOURCE -D
__STDC_CONSTANT_MACROS -D __STDC_FORMAT_MACROS -D __STDC_LIMIT_MACROS -D
GBE_DEBUG_MEMORY=0 -D GBE_COMPILER_AVAILABLE=1
/home/rnpalmer/Debian/builds/stackbuild/beignet/backend/src/ir/instruction.cpp
-quiet -dumpbase instruction.cpp -mtune=generic -march=x86-64
-auxbase-strip CMakeFiles/gbe.dir/ir/instruction.cpp.o -g -O2 -Wformat=1
-Werror=format-security -Wdate-time -Wall -Wcast-align
-Wno-invalid-offsetof
-fdebug-prefix-map=/home/rnpalmer/Debian/builds/stackbuild/beignet=.
-fstack-protector-strong -funroll-loops -fstrict-aliasing -fno-rtti
-fvisibility=hidden -fPIC -fasynchronous-unwind-tables -o -
-frandom-seed=0 -fdump-noaddr
diff --git a/debian/control b/debian/control
index 320f19e..af6c9cd 100644
--- a/debian/control
+++ b/debian/control
@@ -12,9 +12,9 @@ Build-Depends: debhelper-compat (= 12),
#but as this package cannot run its tests in a standard build,
#specifying an explicit version prevents it from changing
#(due to llvm-defaults changes) without testing
- clang-9,
- libclang-9-dev,
- llvm-9-dev,
+ clang-10,
+ libclang-10-dev,
+ llvm-10-dev,
ocl-icd-dev,
ocl-icd-opencl-dev,
opencl-headers (>= 2.0~),
diff --git a/debian/patches/Debian-compliant-compiler-flags-handling.patch b/debian/patches/Debian-compliant-compiler-flags-handling.patch
index 99e7325..87229a7 100644
--- a/debian/patches/Debian-compliant-compiler-flags-handling.patch
+++ b/debian/patches/Debian-compliant-compiler-flags-handling.patch
@@ -28,6 +28,15 @@ Author: Simon Richter <sjr@debian.org>,Rebecca Palmer <rebecca_palmer@zoho.com>
elseif (COMPILER STREQUAL "ICC")
set (CMAKE_C_CXX_FLAGS "${CMAKE_C_CXX_FLAGS} -wd2928 -Wall -fPIC -fstrict-aliasing -fp-model fast -msse4.1 -Wl,-E")
endif ()
+@@ -79,7 +78,7 @@ elseif (COMPILER STREQUAL "CLANG")
+ elseif (COMPILER STREQUAL "ICC")
+ set (CMAKE_C_CXX_FLAGS "${CMAKE_C_CXX_FLAGS} -wd2928 -Wall -fPIC -fstrict-aliasing -fp-model fast -msse4.1 -Wl,-E")
+ endif ()
+-set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_C_CXX_FLAGS} -std=c++0x -Wno-invalid-offsetof")
++set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_C_CXX_FLAGS} -Wno-invalid-offsetof")
+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_C_CXX_FLAGS}")
+ set (CMAKE_CXX_FLAGS_DEBUG "-O0 -g -DGBE_DEBUG=1")
+ set (CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g -DGBE_DEBUG=1")
--- a/backend/src/sys/platform.hpp
+++ b/backend/src/sys/platform.hpp
@@ -41,15 +41,6 @@
@@ -54,7 +63,7 @@ Author: Simon Richter <sjr@debian.org>,Rebecca Palmer <rebecca_palmer@zoho.com>
- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_C_CXX_FLAGS} -std=c++0x -Wno-invalid-offsetof")
- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_C_CXX_FLAGS}")
-+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_C_CXX_FLAGS} -std=c++0x -Wno-invalid-offsetof -ffloat-store")
++ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_C_CXX_FLAGS} -Wno-invalid-offsetof -ffloat-store")
+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_C_CXX_FLAGS} -ffloat-store") #compiler_{degrees,radians,function_argument2} use equality comparison of floats
set (CMAKE_CXX_FLAGS_DEBUG "-O0 -g -DGBE_DEBUG=1")
set (CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g -DGBE_DEBUG=1")
diff --git a/debian/rules b/debian/rules
index 2bca087..2f82669 100755
--- a/debian/rules
+++ b/debian/rules
@@ -13,7 +13,7 @@ export DEB_CPPFLAGS_MAINT_APPEND = -DGBE_DEBUG=1
# We build with the headers from opencl-headers.
SUPERFLUOUS=cl.h cl_d3d10.h cl_dx9_media_sharing.h cl_ext.h cl_gl_ext.h cl_platform.h cl.hpp cl_d3d11.h cl_egl.h cl_gl.h opencl.h
-LLVM_VERSION := 9
+LLVM_VERSION := 10
override_dh_auto_configure:
$(RM) $(patsubst %,include/CL/%,$(SUPERFLUOUS))
Reply to: