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

            Bug ID: 94700
           Summary: ICE in forwprop when folding to a VEC_PERM_EXPR
           Product: gcc
           Version: 10.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: rsandifo at gcc dot gnu.org
  Target Milestone: ---

Compiling this with -march=armv8.2-a+sve -msve-vector-bits=256 -O3:

#include <arm_sve.h>

typedef float v8sf __attribute__((vector_size(32)));

svfloat32_t
f (svbool_t pg, svfloat32_t x, svfloat32_t y)
{
  v8sf a = svadd_x (pg, x, 1);
  v8sf b = { a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7] };
  return svdiv_x (pg, b, y);
}

gives:

foo.c: In function ‘svfloat32_t f(svbool_t, svfloat32_t, svfloat32_t)’:         
foo.c:11:1: error: non-trivial conversion in ‘ssa_name’                         
   11 | }                                                                       
      | ^                                                                       
v8sf                                                                            
__SVFloat32_t                                                                   
b_18 = _1;                                                                      
during GIMPLE pass: forwprop                                                    
dump file: foo.031t.forwprop1                                                   

This is the maybe_ident equivalent of PR94683.  I should have
realised at the time that both arms would need fixing.

Reply via email to