]> gcc.gnu.org Git - gcc.git/commitdiff
middle-end/107994 - ICE after error with comparison gimplification
authorRichard Biener <rguenther@suse.de>
Wed, 21 Dec 2022 11:27:58 +0000 (12:27 +0100)
committerRichard Biener <rguenther@suse.de>
Wed, 21 Dec 2022 12:12:52 +0000 (13:12 +0100)
The following avoids passing down error_mark_node to fold_convert.

PR middle-end/107994
* gimplify.cc (gimplify_expr): Catch errorneous comparison
operand.

gcc/gimplify.cc

index 250782b11409c4a1cee23a7097a7df2fd6038258..c9c800a585090bf9730b704e496cbc57fcc76556 100644 (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.  */
This page took 0.074322 seconds and 5 git commands to generate.