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

            Bug ID: 119706
           Summary: [15 regression] ICE in gimple pass 'dom' for -O3
                    -mcpu=grace
                    --param=aarch64-autovec-preference=sve-only
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: jschmitz at gcc dot gnu.org
  Target Milestone: ---
            Target: aarch64

Created attachment 61057
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=61057&action=edit
Test case for reproducing the ICE

For the attached test case (reduced from the RAJAPerf kernel
Basic_MULTI_REDUCE), there is an ICE when compiling it with
-O3 -mcpu=grace --param=aarch64-autovec-preference=sve-only:

during GIMPLE pass: dom
testcase.i: In member function ‘void a::basic::u::v(cd, a::b)’:
testcase.i:170:6: internal compiler error: in maybe_canonicalize_mem_ref_addr,
at gimple-fold.cc:6394
  170 | void u::v(cd, b) {
      |      ^
0x2622a9b internal_error(char const*, ...)
        .././../../src/gcc/diagnostic-global-context.cc:517
0x844b57 fancy_abort(char const*, int, char const*)
        .././../../src/gcc/diagnostic.cc:1749
0xf4ff5b maybe_canonicalize_mem_ref_addr
        .././../../src/gcc/gimple-fold.cc:6394
0xf5c117 fold_stmt_1
        .././../../src/gcc/gimple-fold.cc:6499
0x1497cd7 dom_opt_dom_walker::optimize_stmt(basic_block_def*,
gimple_stmt_iterator*, bool*)
        .././../../src/gcc/tree-ssa-dom.cc:2352
0x149951f dom_opt_dom_walker::before_dom_children(basic_block_def*)
        .././../../src/gcc/tree-ssa-dom.cc:1747
0x22f08e3 dom_walker::walk(basic_block_def*)
        .././../../src/gcc/domwalk.cc:311
0x1499e13 execute
        .././../../src/gcc/tree-ssa-dom.cc:939

The gimple expression
MEM <vector([2,2]) double> [(double *)POLY_INT_CST [16B, 16B] + ivtmp_97 * 8]
does not pass the assertion
gcc_checking_assert (TREE_CODE (TREE_OPERAND (*t, 0)) == DEBUG_EXPR_DECL ||
is_gimple_mem_ref_addr (TREE_OPERAND (*t, 0))).

Reply via email to