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