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