https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94821

            Bug ID: 94821
           Summary: aarch64: ICE in walk_body at gcc/tree-nested.c:713
           Product: gcc
           Version: 10.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: z.zhanghaijian at huawei dot com
  Target Milestone: ---

The case gcc.dg/pr94780.c on aarch64:

_Atomic double x;

double
foo (void)
{
  double bar () { return x; }
  x /= 3;
  return bar ();
}

-------------------------------
gcc pr94780.c -S

pr94780.c: In function ‘foo’:
pr94780.c:8:1: internal compiler error: Segmentation fault
    8 | foo (void)
      | ^~~
0x125cdc3 crash_signal
        ../.././gcc/toplev.c:328
0x94a4dc tree_check(tree_node*, char const*, int, char const*, tree_code)
        ../.././gcc/tree.h:3286
0x1356f83 convert_nonlocal_reference_op
        ../.././gcc/tree-nested.c:1064
0x1677c5f walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*,
tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*))
        ../.././gcc/tree.c:12000
0xe0a7b7 walk_gimple_op(gimple*, tree_node* (*)(tree_node**, int*, void*),
walk_stmt_info*)
        ../.././gcc/gimple-walk.c:268
0xe0b33b walk_gimple_stmt(gimple_stmt_iterator*, tree_node*
(*)(gimple_stmt_iterator*, bool*, walk_stmt_info*), tree_node* (*)(tree_node**,
int*, void*), walk_stmt_info*)
        ../.././gcc/gimple-walk.c:596
0xe09d83 walk_gimple_seq_mod(gimple**, tree_node* (*)(gimple_stmt_iterator*,
bool*, walk_stmt_info*), tree_node* (*)(tree_node**, int*, void*),
walk_stmt_info*)
        ../.././gcc/gimple-walk.c:51
0xe0b437 walk_gimple_stmt(gimple_stmt_iterator*, tree_node*
(*)(gimple_stmt_iterator*, bool*, walk_stmt_info*), tree_node* (*)(tree_node**,
int*, void*), walk_stmt_info*)
        ../.././gcc/gimple-walk.c:605
0xe09d83 walk_gimple_seq_mod(gimple**, tree_node* (*)(gimple_stmt_iterator*,
bool*, walk_stmt_info*), tree_node* (*)(tree_node**, int*, void*),
walk_stmt_info*)
        ../.././gcc/gimple-walk.c:51
0x1355da7 walk_body
        ../.././gcc/tree-nested.c:713
0x1355def walk_function
        ../.././gcc/tree-nested.c:724
0x135613b walk_all_functions
        ../.././gcc/tree-nested.c:789
0x13607b3 lower_nested_functions(tree_node*)
        ../.././gcc/tree-nested.c:3551
0xbc6187 cgraph_node::analyze()
        ../.././gcc/cgraphunit.c:676
0xbc842f analyze_functions
        ../.././gcc/cgraphunit.c:1227
0xbcd97b symbol_table::finalize_compilation_unit()
        ../.././gcc/cgraphunit.c:2974
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.
-------------------------------

PR94780 was only fixed on i386, the same error was also reported on aarch64.

I have an initial fix patch that is under testing.

Any suggestions?

Reply via email to