[Bug tree-optimization/85794] [8/9 Regression][AArch64] ICE in expand_vector_condition in GIMPLE pass: veclower2
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed May 16 07:22:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85794
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
Invalid GIMPLE. We have
vect_patt_18.16_33 = VEC_COND_EXPR <_24 != vect_cst__23, vect_cst__31,
vect_cst__32>;
with
<ne_expr 0x7ffff66d27d0
type <vector_type 0x7ffff6a7f5e8
type <boolean_type 0x7ffff6a7f3f0 DI
size <integer_cst 0x7ffff6894d08 constant 64>
unit-size <integer_cst 0x7ffff6894d20 constant 8>
align:64 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type
0x7ffff6a7f3f0 precision:64 min <integer_cst 0x7ffff66c4ac8
-9223372036854775808> max <integer_cst 0x7ffff66c4b88 9223372036854775807>>
BLK size <integer_cst 0x7ffff6894d08 64> unit-size <integer_cst
0x7ffff6894d20 8>
align:64 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type
0x7ffff6a7f5e8 nunits:1>
arg:0 <ssa_name 0x7ffff689ee58
type <integer_type 0x7ffff68a57e0 long unsigned int public unsigned DI
size <integer_cst 0x7ffff6894d08 64> unit-size <integer_cst 0x7ffff6894d20 8>
...
arg:1 <ssa_name 0x7ffff689ee10
type <vector_type 0x7ffff6992c78 type <integer_type 0x7ffff68a57e0 long
unsigned int>
the GIMPLE verifier should also catch this. Testing
Index: gcc/tree-cfg.c
===================================================================
--- gcc/tree-cfg.c (revision 260280)
+++ gcc/tree-cfg.c (working copy)
@@ -4137,6 +4137,12 @@ verify_gimple_assign_ternary (gassign *s
}
/* Fallthrough. */
case COND_EXPR:
+ if (!is_gimple_val (rhs1)
+ && verify_gimple_comparison (TREE_TYPE (rhs1),
+ TREE_OPERAND (rhs1, 0),
+ TREE_OPERAND (rhs1, 1),
+ TREE_CODE (rhs1)))
+ return true;
if (!useless_type_conversion_p (lhs_type, rhs2_type)
|| !useless_type_conversion_p (lhs_type, rhs3_type))
{
which will result in
t.c: In function ‘fn1’:
t.c:3:6: error: mismatching comparison operand types
void fn1() {
^~~
long unsigned int
vector(1) long unsigned int
vect_patt_19.16_32 = VEC_COND_EXPR <_9 != vect_cst__28, vect_cst__12,
vect_cst__21>;
t.c:3:6: error: mismatching comparison operand types
long unsigned int
vector(1) long unsigned int
vect_patt_19.16_33 = VEC_COND_EXPR <_64 != vect_cst__28, vect_cst__12,
vect_cst__21>;
during GIMPLE pass: vect
t.c:3:6: internal compiler error: verify_gimple failed
More information about the Gcc-bugs
mailing list