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

--- Comment #4 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jose E. Marchesi <jema...@gcc.gnu.org>:

https://gcc.gnu.org/g:e1f45bea2741c271efbc4c2f9dfad93cbcd644c0

commit r14-3291-ge1f45bea2741c271efbc4c2f9dfad93cbcd644c0
Author: Jose E. Marchesi <jose.march...@oracle.com>
Date:   Thu Aug 17 15:36:26 2023 +0200

    Add warning options -W[no-]compare-distinct-pointer-types

    GCC emits pedwarns unconditionally when comparing pointers of
    different types, for example:

      int xdp_context (struct xdp_md *xdp)
        {
            void *data = (void *)(long)xdp->data;
            __u32 *metadata = (void *)(long)xdp->data_meta;
            __u32 ret;

            if (metadata + 1 > data)
              return 0;
            return 1;
       }

      /home/jemarch/foo.c: In function âxdp_contextâ:
      /home/jemarch/foo.c:15:20: warning: comparison of distinct pointer types
lacks a cast
             15 |   if (metadata + 1 > data)
                     |                    ^

    LLVM supports an option -W[no-]compare-distinct-pointer-types that can
    be used in order to enable or disable the emission of such warnings.
    It is enabled by default.

    This patch adds the same options to GCC.

    Documentation and testsuite updated included.
    Regtested in x86_64-linu-gnu.
    No regressions observed.

    gcc/ChangeLog:

            PR c/106537
            * doc/invoke.texi (Option Summary): Mention
            -Wcompare-distinct-pointer-types under `Warning Options'.
            (Warning Options): Document -Wcompare-distinct-pointer-types.

    gcc/c-family/ChangeLog:

            PR c/106537
            * c.opt (Wcompare-distinct-pointer-types): New option.

    gcc/c/ChangeLog:

            PR c/106537
            * c-typeck.cc (build_binary_op): Warning on comparing distinct
            pointer types only when -Wcompare-distinct-pointer-types.

    gcc/testsuite/ChangeLog:

            PR c/106537
            * gcc.c-torture/compile/pr106537-1.c: New test.
            * gcc.c-torture/compile/pr106537-2.c: Likewise.
            * gcc.c-torture/compile/pr106537-3.c: Likewise.

Reply via email to