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

--- Comment #3 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Qing Zhao <[email protected]>:

https://gcc.gnu.org/g:078b0a2be260ccb2c118865058e75ae038fc1949

commit r16-7077-g078b0a2be260ccb2c118865058e75ae038fc1949
Author: Qing Zhao <[email protected]>
Date:   Mon Jan 26 20:22:43 2026 +0000

    C: Do not warn for calls to .ACCESS_WITH_SIZE when -Wbad-function-cast is
specified [PR123500]

    For the following source code:

    (uintptr_t)b->ptr;

    when b->ptr has an counted_by annotation, the IR for this pointer reference
    is changed to a call to .ACCESS_WITH_SIZE as:

    (uintptr_t).ACCESS_WITH_SIZE (b->ptr, &b->len, 0B, 1);

    As a result, the following code in the routine "build_c_cast" is invoked:

     7455       if (TREE_CODE (value) == CALL_EXPR
     7456           && TREE_CODE (type) != TREE_CODE (otype))
     7457         warning_at (loc, OPT_Wbad_function_cast,
     7458                     "cast from function call of type %qT "
     7459                     "to non-matching type %qT", otype, type);
     7460

    It's obviously that C FE should exclude the call to .ACCESS_WITH_SIZE from
    issuing such warning.

            PR c/123500

    gcc/c/ChangeLog:

            * c-typeck.cc (build_c_cast): Exclude call to .ACCESS_WITH_SIZE
from
            -Wbad-function-cast warnings.

    gcc/testsuite/ChangeLog:

            * gcc.dg/pointer-counted-by-pr123500.c: New test.

Reply via email to