https://gcc.gnu.org/g:f24015a4c2ca6d6fbbf7090004b3a83081f18f03

commit r16-2026-gf24015a4c2ca6d6fbbf7090004b3a83081f18f03
Author: Andrew Pinski <quic_apin...@quicinc.com>
Date:   Thu Jul 3 11:58:50 2025 -0700

    fold: Change comparison of error_mark_node to use error_operand_p in 
tree_expr_nonnegative_warnv_p [PR118948]
    
    This is an obvious fix for this small regression. Basically after 
r15-328-g5726de79e2154a,
    there is a call to tree_expr_nonnegative_warnv_p where the type of the 
expression is now
    error_mark_node. Though there was only a check if the expression was 
error_mark_node.
    
    Bootstrapped and tested on x86_64-linux-gnu.
    
            PR c/118948
    
    gcc/ChangeLog:
    
            * fold-const.cc (tree_expr_nonnegative_warnv_p): Use
            error_operand_p instead of checking for error_mark_node directly.
    
    gcc/testsuite/ChangeLog:
    
            * gcc.dg/pr118948-1.c: New test.
    
    Signed-off-by: Andrew Pinski <quic_apin...@quicinc.com>

Diff:
---
 gcc/fold-const.cc                 |  2 +-
 gcc/testsuite/gcc.dg/pr118948-1.c | 12 ++++++++++++
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/gcc/fold-const.cc b/gcc/fold-const.cc
index 47492575d006..8867540243b8 100644
--- a/gcc/fold-const.cc
+++ b/gcc/fold-const.cc
@@ -15224,7 +15224,7 @@ bool
 tree_expr_nonnegative_warnv_p (tree t, bool *strict_overflow_p, int depth)
 {
   enum tree_code code;
-  if (t == error_mark_node)
+  if (error_operand_p (t))
     return false;
 
   code = TREE_CODE (t);
diff --git a/gcc/testsuite/gcc.dg/pr118948-1.c 
b/gcc/testsuite/gcc.dg/pr118948-1.c
new file mode 100644
index 000000000000..2a46cf14a261
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr118948-1.c
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-options "" } */
+
+/* PR c/118948 */
+
+/* Used to ICE in tree_expr_nonnegative_p after an error. */
+
+void f(void) {
+    int i; /* { dg-note "previous" } */
+    for (i = 0; i < 2; i++) ;
+    float i; /* { dg-error "conflicting types for" } */
+}

Reply via email to