https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92763
Bug ID: 92763 Summary: ICE in dwarf2out_abstract_function, at dwarf2out.c:22659, or in force_type_die, at dwarf2out.c:26224 Product: gcc Version: 10.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: debug Assignee: unassigned at gcc dot gnu.org Reporter: asolokha at gmx dot com Target Milestone: --- g++-10.0.0-alpha20191201 snapshot (r278886), 9.2, 8.3, 7.5 all ICE when compiling the following testcase reduced from libgomp/testsuite/libgomp.c++/udr-21.C w/ -O1 -fopenmp -fno-var-tracking-assignments -g: struct A { typedef int T; #pragma omp declare reduction (y : T : [&omp_out, &omp_in]() { omp_out += omp_in; return 0; }()) initializer (omp_priv = [omp_orig]() { return omp_orig; }()) static void foo (); }; void A::foo () { int r = 0, s = 0; #pragma omp parallel for reduction (y : r, s) for (int i = 0; i < 1; i++) { } } % g++-10.0.0-alpha20191201 -O1 -fopenmp -fno-var-tracking-assignments -g -c k1pjvw8c.C during GIMPLE pass: einline k1pjvw8c.C: In function '_ZN1A3fooEv._omp_fn.0': k1pjvw8c.C:4:157: internal compiler error: in dwarf2out_abstract_function, at dwarf2out.c:22659 4 | : [&omp_out, &omp_in]() { omp_out += omp_in; return 0; }()) initializer (omp_priv = [omp_orig]() { return omp_orig; }()) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~ 0xb846e7 dwarf2out_abstract_function /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20191201/work/gcc-10-20191201/gcc/dwarf2out.c:22659 0xfbd65e expand_call_inline /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20191201/work/gcc-10-20191201/gcc/tree-inline.c:5182 0xfbe56c gimple_expand_calls_inline /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20191201/work/gcc-10-20191201/gcc/tree-inline.c:5214 0xfbe56c optimize_inline_calls(tree_node*) /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20191201/work/gcc-10-20191201/gcc/tree-inline.c:5356 0x17d7ec6 early_inliner(function*) /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20191201/work/gcc-10-20191201/gcc/ipa-inline.c:2974 Omitting -O1 yields the following ICE instead: % g++-10.0.0-alpha20191201 -fopenmp -fno-var-tracking-assignments -g -c k1pjvw8c.C during RTL pass: final k1pjvw8c.C: In lambda function: k1pjvw8c.C:4:95: internal compiler error: in force_type_die, at dwarf2out.c:26224 4 | #pragma omp declare reduction (y : T : [&omp_out, &omp_in]() { omp_out += omp_in; return 0; }()) initializer (omp_priv = [omp_orig]() { return omp_orig; }()) | ^ 0x6ad480 force_type_die /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20191201/work/gcc-10-20191201/gcc/dwarf2out.c:26224 0xb9ea99 force_type_die /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20191201/work/gcc-10-20191201/gcc/dwarf2out.c:26218 0xb9ea99 get_context_die /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20191201/work/gcc-10-20191201/gcc/dwarf2out.c:26138 0xb9ea99 get_context_die /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20191201/work/gcc-10-20191201/gcc/dwarf2out.c:26130 0xb9ea99 force_decl_die /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20191201/work/gcc-10-20191201/gcc/dwarf2out.c:26157 0xb955dd gen_subprogram_die /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20191201/work/gcc-10-20191201/gcc/dwarf2out.c:22914 0xb973c3 gen_decl_die /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20191201/work/gcc-10-20191201/gcc/dwarf2out.c:26453 0xb98964 dwarf2out_decl /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20191201/work/gcc-10-20191201/gcc/dwarf2out.c:27017 0xb9929b dwarf2out_function_decl /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20191201/work/gcc-10-20191201/gcc/dwarf2out.c:27032 0xc167fc rest_of_handle_final /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20191201/work/gcc-10-20191201/gcc/final.c:4694 0xc167fc execute /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20191201/work/gcc-10-20191201/gcc/final.c:4736