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

            Bug ID: 65891
           Summary: -Wlogical-op now warns about logical ‘and’ of equal
                    expressions even when different types/sizeofs are
                    involved
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: gerald at pfeifer dot com
                CC: polacek at redhat dot com
  Target Milestone: ---

Since 2015-04-21  Marek Polacek  <pola...@redhat.com>

    PR c/63357
    * c-common.c (warn_logical_operator): Warn if the operands have the
    same expressions.

we also diagnose code the following

  typedef int r_fun_t (int);

  r_fun_t * text_funcs[] = {0,0,0};

  int report (unsigned t)
  {
    typedef int s_fun_t (long, char);

    static s_fun_t * GUI_funcs[3];

    return (t < sizeof text_funcs / sizeof text_funcs[0] &&
            t < sizeof GUI_funcs / sizeof GUI_funcs[0]);
  }

with

  input: In function ‘report’:
  input:8:58: warning: logical ‘and’ of equal expressions [-Wlogical-op]
     return (t < sizeof text_funcs / sizeof text_funcs[0] &&
                                                          ^

when these two conditions are about two different types, defined in two
different locations, and the sizes are set differently.

Reply via email to