From: Richard Biener Date: Wed, 21 Dec 2022 11:27:58 +0000 (+0100) Subject: middle-end/107994 - ICE after error with comparison gimplification X-Git-Tag: release-12.2.mpacbti-rel1~131 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=45cff68d063b689bd6a9f30827b1fdd3f5ea2cb4;p=thirdparty%2Fgcc.git 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. (cherry picked from commit 845b514e8a150447ba041294586af76a6ac05158) --- diff --git a/gcc/gimplify.cc b/gcc/gimplify.cc index 2588824dce25..a3aa90262c52 100644 --- a/gcc/gimplify.cc +++ b/gcc/gimplify.cc @@ -15832,6 +15832,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)); @@ -15856,9 +15859,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. */