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

            Bug ID: 102897
           Summary: [12 Regression] simplify_permutation ICEs on assert
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: tnfchris at gcc dot gnu.org
  Target Milestone: ---

The following testcase

typedef __attribute__((vector_size(8))) signed char int8x8_t;
typedef __attribute__((vector_size(8))) unsigned char uint8x8_t;

int8x8_t fn1(int8x8_t val20, char tmp) {
  uint8x8_t __trans_tmp_3;
  __trans_tmp_3 = (uint8x8_t){tmp};
  int8x8_t __a = (int8x8_t)__trans_tmp_3;
  return __builtin_shuffle(__a, val20, (uint8x8_t){});
}

ICEs at -O1 and higher with

during GIMPLE pass: forwprop
<source>: In function 'fn1':
<source>:12:1: internal compiler error: in simplify_permutation, at
tree-ssa-forwprop.c:2271
   12 | }
      | ^
0x1000e00 simplify_permutation
        src/gcc/gcc/tree-ssa-forwprop.c:2271
0x1007ae8 execute
        src/gcc/gcc/tree-ssa-forwprop.c:3397

That line contains an assert with the comment

          tree op2_type = TREE_TYPE (op2);
          /* Should have folded this before.  */
          gcc_assert (op2_type != tgt_type);

Reply via email to