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

            Bug ID: 79734
           Summary: ICE: verify_gimple failed
           Product: gcc
           Version: 7.0.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: gerhard.steinmetz.fort...@t-online.de
  Target Milestone: ---

With version 6/7 (on x86_64 GNU/Linux).
Reduced from ./g++.dg/ext/vector27.C :


$ cat z1.cc
typedef float vecf __attribute__ ((vector_size (4 * sizeof (float))));
void g (vecf *a, vecf *b)
{
  *a = (*a < 1 && !(*b > 2)) ? *a + *b : 3;
}


$ gcc-7-20170226 -c z1.cc
$ gcc-7-20170226 -mavx512vl -c z1.cc
z1.cc: In function 'void g(vecf*, vecf*)':
z1.cc:2:6: error: mode size of non-integral result does not match field size of
BIT_FIELD_REF
 void g (vecf *a, vecf *b)
      ^
BIT_FIELD_REF <_3, 8, 0>
z1.cc:4:16: note: in statement
   *a = (*a < 1 && !(*b > 2)) ? *a + *b : 3;
        ~~~~~~~~^~~~~~~~~~~~~
_16 = BIT_FIELD_REF <_3, 8, 0>;
z1.cc:2:6: error: mode size of non-integral result does not match field size of
BIT_FIELD_REF
 void g (vecf *a, vecf *b)
      ^
BIT_FIELD_REF <_17, 8, 0>
z1.cc:4:16: note: in statement
   *a = (*a < 1 && !(*b > 2)) ? *a + *b : 3;
        ~~~~~~~~^~~~~~~~~~~~~
_18 = BIT_FIELD_REF <_17, 8, 0>;
z1.cc:2:6: error: mode size of non-integral result does not match field size of
BIT_FIELD_REF
 void g (vecf *a, vecf *b)
      ^
BIT_FIELD_REF <_3, 8, 8>
z1.cc:4:16: note: in statement
   *a = (*a < 1 && !(*b > 2)) ? *a + *b : 3;
        ~~~~~~~~^~~~~~~~~~~~~
_21 = BIT_FIELD_REF <_3, 8, 8>;
z1.cc:2:6: error: mode size of non-integral result does not match field size of
BIT_FIELD_REF
 void g (vecf *a, vecf *b)
      ^
BIT_FIELD_REF <_22, 8, 8>
z1.cc:4:16: note: in statement
   *a = (*a < 1 && !(*b > 2)) ? *a + *b : 3;
        ~~~~~~~~^~~~~~~~~~~~~
_23 = BIT_FIELD_REF <_22, 8, 8>;
z1.cc:2:6: error: mode size of non-integral result does not match field size of
BIT_FIELD_REF
 void g (vecf *a, vecf *b)
      ^
BIT_FIELD_REF <_3, 8, 16>
z1.cc:4:16: note: in statement
   *a = (*a < 1 && !(*b > 2)) ? *a + *b : 3;
        ~~~~~~~~^~~~~~~~~~~~~
_26 = BIT_FIELD_REF <_3, 8, 16>;
z1.cc:2:6: error: mode size of non-integral result does not match field size of
BIT_FIELD_REF
 void g (vecf *a, vecf *b)
      ^
BIT_FIELD_REF <_27, 8, 16>
z1.cc:4:16: note: in statement
   *a = (*a < 1 && !(*b > 2)) ? *a + *b : 3;
        ~~~~~~~~^~~~~~~~~~~~~
_28 = BIT_FIELD_REF <_27, 8, 16>;
z1.cc:2:6: error: mode size of non-integral result does not match field size of
BIT_FIELD_REF
 void g (vecf *a, vecf *b)
      ^
BIT_FIELD_REF <_3, 8, 24>
z1.cc:4:16: note: in statement
   *a = (*a < 1 && !(*b > 2)) ? *a + *b : 3;
        ~~~~~~~~^~~~~~~~~~~~~
_31 = BIT_FIELD_REF <_3, 8, 24>;
z1.cc:2:6: error: mode size of non-integral result does not match field size of
BIT_FIELD_REF
 void g (vecf *a, vecf *b)
      ^
BIT_FIELD_REF <_32, 8, 24>
z1.cc:4:16: note: in statement
   *a = (*a < 1 && !(*b > 2)) ? *a + *b : 3;
        ~~~~~~~~^~~~~~~~~~~~~
_33 = BIT_FIELD_REF <_32, 8, 24>;
z1.cc:2:6: internal compiler error: verify_gimple failed
 void g (vecf *a, vecf *b)
      ^
0xe2dfc6 verify_gimple_in_cfg(function*, bool)
        ../../gcc/tree-cfg.c:5266
0xd0f823 execute_function_todo
        ../../gcc/passes.c:1966
0xd10155 execute_todo
        ../../gcc/passes.c:2016

Reply via email to