middle-end/107994 - ICE after error with comparison gimplification

The following avoids passing down error_mark_node to fold_convert.

	PR middle-end/107994
	* gimplify.cc (gimplify_expr): Catch errorneous comparison
	operand.
This commit is contained in:
Richard Biener 2022-12-21 12:27:58 +01:00
parent 89ba8366fe
commit 845b514e8a

View file

@ -17098,6 +17098,9 @@ gimplify_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p,
Compare scalar mode aggregates as scalar mode values. Using
memcmp for them would be very inefficient at best, and is
plain wrong if bitfields are involved. */
if (error_operand_p (TREE_OPERAND (*expr_p, 1)))
ret = GS_ERROR;
else
{
tree type = TREE_TYPE (TREE_OPERAND (*expr_p, 1));
@ -17122,9 +17125,8 @@ gimplify_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p,
ret = gimplify_scalar_mode_aggregate_compare (expr_p);
else
ret = gimplify_variable_sized_compare (expr_p);
break;
}
break;
/* If *EXPR_P does not need to be special-cased, handle it
according to its class. */