https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108894
--- Comment #13 from qinzhao at gcc dot gnu.org ---
(In reply to Jakub Jelinek from comment #12)
> Created attachment 54547 [details]
> gcc13-pr108894.patch
>
> Untested fix.
several comments on the patch:
1. should the documentation of -fsanitize=bounds and -fsanitize=strict-bounds
be updated to reflect the interaction with -fstrict-flex-arrays=N?
2. there are several routines in c-decl.cc:
static bool flexible_array_member_type_p (const_tree type);
static bool one_element_array_type_p (const_tree type);
static bool zero_length_array_type_p (const_tree type);
can they be generalized as well to be used in the routine
"ubsan_instrument_bounds" to check for [], [0], or [1]? (in the patch lines
from 405 to 442).
3. could you add comments for lines (I guess they are for [0])?
370 if (!bound)
371 bound = fold_build2 (PLUS_EXPR, TREE_TYPE (bound), bound, 371
{
372 build_int_cst (TREE_TYPE (bound), 1)); 372
if (!c_dialect_cxx ()
373 && COMPLETE_TYPE_P (type)
374 && integer_zerop (TYPE_SIZE (type)))
375 bound = build_int_cst (TREE_TYPE (TYPE_MIN_VALUE (domain)),
-1);
376 else
377 return NULL_TREE;
378 }