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

Reply via email to