[Bug tree-optimization/86097] [8/9 Regression] ICE: verify_gimple failed (error: mismatching comparison operand types)
rguenther at suse dot de
gcc-bugzilla@gcc.gnu.org
Wed Jun 20 10:20:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86097
--- Comment #4 from rguenther at suse dot de <rguenther at suse dot de> ---
On Wed, 20 Jun 2018, vries at gcc dot gnu.org wrote:
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86097
>
> --- Comment #2 from Tom de Vries <vries at gcc dot gnu.org> ---
> Earliest point of detection:
> ...
> @@ -1570,6 +1570,7 @@ canonicalize_loop_ivs (struct loop *loop, tree *nit, bool
> bump_in_latch)
> fe->flags = EDGE_TRUE_VALUE;
> }
> gimple_cond_set_code (stmt, LT_EXPR);
> + gcc_assert (TREE_TYPE (var_before) == TREE_TYPE (*nit));
> gimple_cond_set_lhs (stmt, var_before);
> gimple_cond_set_rhs (stmt, *nit);
> update_stmt (stmt);
> ...
So I wonder why we can assume that *nit has type 'type' (I assume
var_before gets type 'type' via create_iv getting zero and one of that
type). That is, we do
if (original_precision != precision)
{
*nit = fold_convert (type, *nit);
*nit = force_gimple_operand (*nit, &stmts, true, NULL_TREE);
if (stmts)
gsi_insert_seq_on_edge_immediate (loop_preheader_edge (loop),
stmts);
}
but that misses checking for signedness match.
More information about the Gcc-bugs
mailing list