This is the followup mentioned in 
https://gcc.gnu.org/pipermail/gcc-patches/2025-May/683444.html .
It adds the check for cfun before accessing function specific flags.
We handle the case where !cfun as conservative in that it the function might 
throw.

gcc/ChangeLog:

        * gimple-fold.cc (replace_stmt_with_simplification): Check cfun before
        accessing cfun.

Signed-off-by: Andrew Pinski <quic_apin...@quicinc.com>
---
 gcc/gimple-fold.cc | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/gcc/gimple-fold.cc b/gcc/gimple-fold.cc
index 28c5069931d..b74fb8bb50c 100644
--- a/gcc/gimple-fold.cc
+++ b/gcc/gimple-fold.cc
@@ -6081,8 +6081,9 @@ replace_stmt_with_simplification (gimple_stmt_iterator 
*gsi,
       auto code = tree_code (res_op->code);
       if (TREE_CODE_CLASS (code) == tcc_comparison
          /* GIMPLE_CONDs condition may not throw.  */
-         && (!flag_exceptions
-             || !cfun->can_throw_non_call_exceptions
+         && ((cfun
+              && (!flag_exceptions
+                  || !cfun->can_throw_non_call_exceptions))
              || !operation_could_trap_p (code,
                                          FLOAT_TYPE_P (TREE_TYPE (ops[0])),
                                          false, NULL_TREE)))
@@ -6124,8 +6125,9 @@ replace_stmt_with_simplification (gimple_stmt_iterator 
*gsi,
             `(ne (cmp @0 @1) integer_zerop)` which creates a new expression
             for the comparison.  */
          if (TREE_CODE_CLASS (code) == tcc_comparison
-             && flag_exceptions
-             && cfun->can_throw_non_call_exceptions
+             && (!cfun
+                 || (flag_exceptions
+                     && cfun->can_throw_non_call_exceptions))
              && operation_could_trap_p (code,
                                         FLOAT_TYPE_P (TREE_TYPE (ops[0])),
                                         false, NULL_TREE))
-- 
2.43.0

Reply via email to