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

            Bug ID: 117086
           Summary: [15 Regression] ICE in tree check: expected
                    vector_type, have boolean_type in
                    TYPE_VECTOR_SUBPARTS, at tree.h:4255
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: rguenth at gcc dot gnu.org
  Target Milestone: ---

> ./cc1plus -quiet lra-constraints.ii -O2 -march=znver5 -o /dev/null
during GIMPLE pass: forwprop
../../src/gcc/gcc/lra-constraints.cc: In function ‘bool split_reg(bool, int,
rtx_insn*, rtx, rtx_insn*)’:
../../src/gcc/gcc/lra-constraints.cc:6111:1: internal compiler error: tree
check: expected vector_type, have boolean_type in TYPE_VECTOR_SUBPARTS, at
tree.h:4255
 6111 | split_reg (bool before_p, int original_regno, rtx_insn *insn,
      | ^~~~~~~~~
0x3a92dab internal_error(char const*, ...)
        ../../src/gcc/gcc/diagnostic-global-context.cc:517
0x20532ec tree_check_failed(tree_node const*, char const*, int, char const*,
...)
        ../../src/gcc/gcc/tree.cc:9003
0xe61611 tree_check(tree_node const*, char const*, int, char const*, tree_code)
        ../../src/gcc/gcc/tree.h:3921
0xe9aef1 TYPE_VECTOR_SUBPARTS(tree_node const*)
        ../../src/gcc/gcc/tree.h:4255
0x1c6f538 verify_gimple_assign_ternary
        ../../src/gcc/gcc/tree-cfg.cc:4380
0x1c71459 verify_gimple_assign
        ../../src/gcc/gcc/tree-cfg.cc:4866


forwprop creates a bogus VEC_COND_EXPR:

(gdb) p debug_gimple_stmt (stmt)
_513 = VEC_COND_EXPR <mask__342.3367_293, 0, 1>;
$1 = void
(gdb) p rhs1_type
$2 = <vector_type 0x7ffff14779d8>
(gdb) p lhs_type
$3 = <boolean_type 0x7ffff6827b28 bool>
(gdb) p gimple_assign_rhs2 (stmt)
$4 = (tree_node *) 0x7ffff68205a0
(gdb) p debug_tree ($4)
 <integer_cst 0x7ffff68205a0 type <boolean_type 0x7ffff6827b28 bool> constant
0>

Reply via email to