This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c/65452] strcmp (foo, foo) could give a warning


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

--- Comment #9 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
Testcase:

#include <string.h>

#define STR1 "str"
#define STR2 "str"
#define S1 (s)
#define S2 (s)

int
f (const char *s)
{
  int r = 0;

  r += strcmp (s, s) == 0;
  r += __builtin_strcmp (s, s) == 0;

  r += strcmp ("s", "s") == 0;
  r += __builtin_strcmp ("s", "s") == 0;

  r += strcmp ((const char *) 0, "s") == 0;
  r += __builtin_strcmp ((const char *) 0, "s") == 0;

  r += strcmp ((const char *) 0, (const char *) 0) == 0;
  r += __builtin_strcmp ((const char *) 0, (const char *) 0) == 0;

  r += strcmp (STR1, STR2) == 0;
  r += __builtin_strcmp (STR1, STR2) == 0;

  r += strcmp (STR1, "str") == 0;
  r += __builtin_strcmp (STR1, "str") == 0;

  r += strcmp ("str", STR2) == 0;
  r += __builtin_strcmp ("str", STR2) == 0;

  r += strcmp (S1, S2) == 0;
  r += __builtin_strcmp (S1, S2) == 0;

  r += strcmp (S1, s) == 0;
  r += __builtin_strcmp (S1, s) == 0;

  r += strcmp (s, S2) == 0;
  r += __builtin_strcmp (s, S2) == 0;

  return r;
}

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]