Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 846626 - sys-devel/gcc: ICE when compiling games-emulation/dolphin
Summary: sys-devel/gcc: ICE when compiling games-emulation/dolphin
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Gentoo Toolchain Maintainers
URL: https://gcc.gnu.org/bugzilla/show_bug...
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2022-05-21 00:03 UTC by John Helmert III
Modified: 2023-04-18 03:06 UTC (History)
2 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
Dynamics.cpp.ii (Dynamics.cpp.ii,197 bytes, text/plain)
2022-05-21 00:03 UTC, John Helmert III
Details

Note You need to log in before you can comment on or make changes to this bug.
Description John Helmert III archtester Gentoo Infrastructure gentoo-dev Security 2022-05-21 00:03:30 UTC
Created attachment 779639 [details]
Dynamics.cpp.ii

$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-pc-linux-gnu/11.3.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /var/tmp/portage/sys-devel/gcc-11.3.0/work/gcc-11.3.0/configure --host=x86_64-pc-linux-gnu --build=x86_64-pc-linux-gnu --prefix=/usr --bindir=/usr/x86_64-pc-linux-gnu/gcc-bin/11.3.0 --includedir=/usr/lib/gcc/x86_64-pc-linux-gnu/11.3.0/include --datadir=/usr/share/gcc-data/x86_64-pc-linux-gnu/11.3.0 --mandir=/usr/share/gcc-data/x86_64-pc-linux-gnu/11.3.0/man --infodir=/usr/share/gcc-data/x86_64-pc-linux-gnu/11.3.0/info --with-gxx-include-dir=/usr/lib/gcc/x86_64-pc-linux-gnu/11.3.0/include/g++-v11 --with-python-dir=/share/gcc-data/x86_64-pc-linux-gnu/11.3.0/python --enable-languages=c,c++,go,objc,fortran --enable-obsolete --enable-secureplt --disable-werror --with-system-zlib --enable-nls --without-included-gettext --disable-libunwind-exceptions --enable-checking=yes --with-bugurl=https://bugs.gentoo.org/ --with-pkgversion='Gentoo 11.3.0 p4' --disable-esp --enable-libstdcxx-time --with-build-config=bootstrap-lto --disable-libstdcxx-pch --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --enable-multilib --with-multilib-list=m32,m64 --disable-fixed-point --enable-targets=all --enable-libgomp --disable-libssp --disable-libada --disable-cet --disable-systemtap --disable-valgrind-annotations --disable-vtable-verify --disable-libvtv --without-zstd --enable-lto --with-isl --disable-isl-version-check --enable-default-pie --enable-default-ssp
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 11.3.0 (Gentoo 11.3.0 p4)
$ g++ Dyamics.cpp.ii

Dynamics.cpp.ii:1:11: error: ‘_Nm’ has not been declared
    1 | template <_Nm> struct array;
      |           ^~~
Dynamics.cpp.ii:3:9: error: expected ‘;’ at end of member declaration
    3 |   TVec3() array<> data
      |         ^
      |          ;
Dynamics.cpp.ii:3:17: error: wrong number of template arguments (0, should be 1)
    3 |   TVec3() array<> data
      |                 ^
Dynamics.cpp.ii:1:23: note: provided for ‘template<<typeprefixerror><anonymous> > struct array’
    1 | template <_Nm> struct array;
      |                       ^~~~~
Dynamics.cpp.ii:3:19: error: expected ‘;’ at end of member declaration
    3 |   TVec3() array<> data
      |                   ^~~~
      |                       ;
Dynamics.cpp.ii:4:2: error: expected ‘;’ after struct definition
    4 | } using Vec3 = TVec3;
      |  ^
      |  ;
Dynamics.cpp.ii:6:26: error: expected ‘;’ at end of member declaration
    6 |   Vec3 angular_velocity {}
      |                          ^
      |                           ;
Dynamics.cpp.ii:5:1: error: new types may not be defined in a return type
    5 | struct RotationalState {
      | ^~~~~~
Dynamics.cpp.ii:5:1: note: (perhaps a semicolon is missing after the definition of ‘RotationalState’)
Dynamics.cpp.ii: In function ‘RotationalState EmulatePoint()’:
Dynamics.cpp.ii:9:13: error: expected ‘;’ at end of input
    9 |   state = {}
      |             ^
      |             ;
Dynamics.cpp.ii:9:13: error: expected ‘}’ at end of input
Dynamics.cpp.ii:7:18: note: to match this ‘{’
    7 | } EmulatePoint() {
      |                  ^
Dynamics.cpp.ii:9:13: warning: no return statement in function returning non-void [-Wreturn-type]
    9 |   state = {}
      |             ^
Dynamics.cpp.ii:9:9: internal compiler error: in cp_gimplify_expr, at cp/cp-gimplify.c:718
    9 |   state = {}
      |   ~~~~~~^~~~
0x7b789e cp_gimplify_expr(tree_node**, gimple**, gimple**)
	/usr/src/debug/sys-devel/gcc-11.3.0/gcc-11.3.0/gcc/cp/cp-gimplify.c:718
0x12b01fe gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*), int)
	/usr/src/debug/sys-devel/gcc-11.3.0/gcc-11.3.0/gcc/gimplify.c:14048
0xaa29ff gimplify_init_ctor_preeval
	/usr/src/debug/sys-devel/gcc-11.3.0/gcc-11.3.0/gcc/gimplify.c:4546
0xaa2aec gimplify_init_ctor_preeval
	/usr/src/debug/sys-devel/gcc-11.3.0/gcc-11.3.0/gcc/gimplify.c:4532
0x186cfdf gimplify_init_constructor
	/usr/src/debug/sys-devel/gcc-11.3.0/gcc-11.3.0/gcc/gimplify.c:5127
0x12bf7a7 gimplify_modify_expr
	/usr/src/debug/sys-devel/gcc-11.3.0/gcc-11.3.0/gcc/gimplify.c:5784
0x12b05f2 gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*), int)
	/usr/src/debug/sys-devel/gcc-11.3.0/gcc-11.3.0/gcc/gimplify.c:14139
0x12aff38 gimplify_stmt(tree_node**, gimple**)
	/usr/src/debug/sys-devel/gcc-11.3.0/gcc-11.3.0/gcc/gimplify.c:6888
0x1879dec gimplify_cleanup_point_expr
	/usr/src/debug/sys-devel/gcc-11.3.0/gcc-11.3.0/gcc/gimplify.c:6630
0x12b1552 gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*), int)
	/usr/src/debug/sys-devel/gcc-11.3.0/gcc-11.3.0/gcc/gimplify.c:14532
0x12b0645 gimplify_stmt(tree_node**, gimple**)
	/usr/src/debug/sys-devel/gcc-11.3.0/gcc-11.3.0/gcc/gimplify.c:6888
0x12b0645 gimplify_statement_list
	/usr/src/debug/sys-devel/gcc-11.3.0/gcc-11.3.0/gcc/gimplify.c:1880
0x12b0645 gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*), int)
	/usr/src/debug/sys-devel/gcc-11.3.0/gcc-11.3.0/gcc/gimplify.c:14584
0x12aff38 gimplify_stmt(tree_node**, gimple**)
	/usr/src/debug/sys-devel/gcc-11.3.0/gcc-11.3.0/gcc/gimplify.c:6888
0x183d7fd gimplify_bind_expr
	/usr/src/debug/sys-devel/gcc-11.3.0/gcc-11.3.0/gcc/gimplify.c:1422
0x12b18ab gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*), int)
	/usr/src/debug/sys-devel/gcc-11.3.0/gcc-11.3.0/gcc/gimplify.c:14340
0x12aff38 gimplify_stmt(tree_node**, gimple**)
	/usr/src/debug/sys-devel/gcc-11.3.0/gcc-11.3.0/gcc/gimplify.c:6888
0x183a441 gimplify_body(tree_node*, bool)
	/usr/src/debug/sys-devel/gcc-11.3.0/gcc-11.3.0/gcc/gimplify.c:15363
0x183a18c gimplify_function_tree(tree_node*)
	/usr/src/debug/sys-devel/gcc-11.3.0/gcc-11.3.0/gcc/gimplify.c:15517
0x1839e43 cgraph_node::analyze()
	/usr/src/debug/sys-devel/gcc-11.3.0/gcc-11.3.0/gcc/cgraphunit.c:670
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <https://bugs.gentoo.org/> for instructions.

In the process of checking gcc.git.
Comment 1 Sergei Trofimovich 2022-05-21 09:10:42 UTC
My bet is on https://gcc.gnu.org/PR104583
Comment 2 John Helmert III archtester Gentoo Infrastructure gentoo-dev Security 2022-06-03 21:24:22 UTC
(In reply to Sergei Trofimovich from comment #1)
> My bet is on https://gcc.gnu.org/PR104583

Thanks! I can confirm the patch there seems to fix the issue, it simply errors out as expected:

$ g++ Dynamics.cpp.ii
Dynamics.cpp.ii:1:11: error: ‘_Nm’ has not been declared
    1 | template <_Nm> struct array;
      |           ^~~
Dynamics.cpp.ii:3:9: error: expected ‘;’ at end of member declaration
    3 |   TVec3() array<> data
      |         ^
      |          ;
Dynamics.cpp.ii:3:17: error: wrong number of template arguments (0, should be 1)
    3 |   TVec3() array<> data
      |                 ^
Dynamics.cpp.ii:1:23: note: provided for ‘template<<typeprefixerror><anonymous> > struct array’
    1 | template <_Nm> struct array;
      |                       ^~~~~
Dynamics.cpp.ii:3:19: error: expected ‘;’ at end of member declaration
    3 |   TVec3() array<> data
      |                   ^~~~
      |                       ;
Dynamics.cpp.ii:4:2: error: expected ‘;’ after struct definition
    4 | } using Vec3 = TVec3;
      |  ^
      |  ;
Dynamics.cpp.ii:6:26: error: expected ‘;’ at end of member declaration
    6 |   Vec3 angular_velocity {}
      |                          ^
      |                           ;
Dynamics.cpp.ii:5:1: error: new types may not be defined in a return type
    5 | struct RotationalState {
      | ^~~~~~
Dynamics.cpp.ii:5:1: note: (perhaps a semicolon is missing after the definition of ‘RotationalState’)
Dynamics.cpp.ii: In function ‘RotationalState EmulatePoint()’:
Dynamics.cpp.ii:9:13: error: expected ‘;’ at end of input
    9 |   state = {}
      |             ^
      |             ;
Dynamics.cpp.ii:9:13: error: expected ‘}’ at end of input
Dynamics.cpp.ii:7:18: note: to match this ‘{’
    7 | } EmulatePoint() {
      |                  ^
Dynamics.cpp.ii:9:13: warning: no return statement in function returning non-void [-Wreturn-type]
    9 |   state = {}
      |             ^

Somewhat strangely (to me), with the patch Dolphin builds successfully and doesn't hit the above errors, despite ICEing on code that was reduced to code that produces the above errors.
Comment 3 Sam James archtester Gentoo Infrastructure gentoo-dev Security 2023-04-18 03:06:50 UTC
Fixed in 12/13.