[Bug tree-optimization/97239] [11 Regression] ICE in gimple_expand_vec_cond_expr, at gimple-isel.cc:201
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Sep 29 11:46:52 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97239
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Ever confirmed|0 |1
Last reconfirmed| |2020-09-29
Status|UNCONFIRMED |NEW
Target Milestone|--- |11.0
--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
Confirmed. Yet another VEC_COND_EXPR producing masks from masks. This time:
201 gcc_assert (known_eq (GET_MODE_SIZE (mode), GET_MODE_SIZE
(cmp_op_mode))
202 && known_eq (GET_MODE_NUNITS (mode),
203 GET_MODE_NUNITS (cmp_op_mode)));
(gdb) p mode
$1 = E_HImode
(gdb) p cmp_op_mode
$2 = E_V16SImode
(gdb) p debug_gimple_stmt (stmt)
mask__29.155_75 = VEC_COND_EXPR <mask__2.147_61, { -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1 }, mask__5.150_67>;
vector(16) <signed-boolean:1> mask__2.147;
vector(16) <signed-boolean:1> mask__5.150;
vector(16) <signed-boolean:1> mask__29.155;
mask__2.147_61 = simd.38_17(D) != { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0 };
mask__5.150_67 = simd.38_17(D) == { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0 };
mask__29.155_75 = VEC_COND_EXPR <mask__2.147_61, { -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, mask__5.150_67>;
so this is simd != 0 ? true : simd == 0 which is just 'true'?
That said, it's probably an uphill battle to try to combat all such
cases with more foldings ...
Rather we need to synthesize mask from mask VEC_COND via bit ops?
mask__29.155_75 = mask__2.147_61 | (~mask__2.147_61 & mask__5.150_67);
in this case.
More information about the Gcc-bugs
mailing list