https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101758

--- Comment #5 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
This is the fix which works:
diff --git a/gcc/gimple-fold.c b/gcc/gimple-fold.c
index ad7b140173f..f1fbdbd40c2 100644
--- a/gcc/gimple-fold.c
+++ b/gcc/gimple-fold.c
@@ -5587,6 +5587,16 @@ gimple_fold_call (gimple_stmt_iterator *gsi, bool
inplace)
                                        gimple_call_arg (stmt, 2),
                                        NULL_TREE);
          break;
+       case IFN_UBSAN_NULL:
+         {
+           tree addr = gimple_call_arg (stmt, 0);
+           if (TREE_CODE (addr) == ADDR_EXPR
+               && DECL_P (TREE_OPERAND (addr, 0))
+               && (!VAR_OR_FUNCTION_DECL_P (TREE_OPERAND (addr, 0))
+                   || !DECL_WEAK (TREE_OPERAND (addr, 0))))
+             replace_call_with_value (gsi, NULL_TREE);
+         }
+         break;
        case IFN_UBSAN_OBJECT_SIZE:
          {
            tree offset = gimple_call_arg (stmt, 1);

Reply via email to