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

--- Comment #6 from Martin Liška <marxin at gcc dot gnu.org> ---
(In reply to Marek Polacek from comment #5)
> So maybe the following?  Not sure how well it plays with weak vars/fns
> though...
> 
> --- a/gcc/c-family/c-ubsan.c
> +++ b/gcc/c-family/c-ubsan.c
> @@ -433,8 +433,9 @@ ubsan_maybe_instrument_reference_or_call (location_t
> loc, tree op, tree ptype,
>           int save_flag_delete_null_pointer_checks
>             = flag_delete_null_pointer_checks;
>           flag_delete_null_pointer_checks = 1;
> -         if (!tree_single_nonzero_warnv_p (op, &strict_overflow_p)
> -             || strict_overflow_p)
> +         if ((!tree_single_nonzero_warnv_p (op, &strict_overflow_p)
> +              || strict_overflow_p)
> +             && !TREE_STATIC (TREE_OPERAND (op, 0)))
>             instrument = true;
>           flag_delete_null_pointer_checks
>             = save_flag_delete_null_pointer_checks;

Hi.

Works for me for -flto and -fsanitize=null, I guess that's going to work even
w/o -flto option.

Thanks,
Martin

Reply via email to