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

--- Comment #3 from Martin Sebor <msebor at gcc dot gnu.org> ---
Author: msebor
Date: Thu Aug 22 23:09:26 2019
New Revision: 274837

URL: https://gcc.gnu.org/viewcvs?rev=274837&root=gcc&view=rev
Log:
PR middle-end/91490 - bogus argument missing terminating nul warning on strlen
of a flexible array member

gcc/c-family/ChangeLog:

        PR middle-end/91490
        * c-common.c (braced_list_to_string): Add argument and overload.
        Handle flexible length arrays and unions.

gcc/testsuite/ChangeLog:

        PR middle-end/91490
        * c-c++-common/Warray-bounds-7.c: New test.
        * gcc.dg/Warray-bounds-39.c: Expect either -Warray-bounds or
        -Wstringop-overflow.
        * gcc.dg/strlenopt-78.c: New test.

gcc/ChangeLog:

        PR middle-end/91490
        * builtins.c (c_strlen): Rename argument and introduce new local.
        Set no-warning bit on original argument.
        * expr.c (string_constant): Pass argument type to fold_ctor_reference.
        Fold empty and zero constructors into empty strings.
        * gimple-fold.c (fold_nonarray_ctor_reference): Return a STRING_CST
        for missing initializers.
        * tree.c (build_string_literal): Handle optional argument.
        * tree.h (build_string_literal): Add defaulted argument.
        * gimple-ssa-warn-restrict.c (maybe_diag_access_bounds): Check
        no-warning bit on original expression.


Added:
    trunk/gcc/testsuite/c-c++-common/Warray-bounds-7.c
    trunk/gcc/testsuite/gcc.dg/strlenopt-78.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/builtins.c
    trunk/gcc/c-family/ChangeLog
    trunk/gcc/c-family/c-common.c
    trunk/gcc/expr.c
    trunk/gcc/gimple-fold.c
    trunk/gcc/gimple-ssa-warn-restrict.c
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/gcc.dg/Warray-bounds-39.c
    trunk/gcc/tree.c
    trunk/gcc/tree.h

Reply via email to