https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103939
Bug ID: 103939 Summary: memset with sizeof in wrong place not detected ? Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: dcb314 at hotmail dot com Target Milestone: --- For this C++ code: $ more jan7d.cc #include <cstring> struct S { int a; int b; int c; int d; }; void f( S * ps) { memset(ps, sizeof(S), 0xff); } compiled with recent gcc trunk: $ /home/dcb/gcc/results/bin/gcc -c -g -O2 -Wall -Wextra -pedantic jan7d.cc $ compiled by clang-13: $ /usr/bin/clang++ -c -g -O2 -Wall -Wextra -pedantic jan7d.cc jan7d.cc:14:15: warning: setting buffer to a 'sizeof' expression; did you mean to transpose the last two arguments? [-Wmemset-transposed-args] memset(ps, sizeof(S), 0xff); ^ jan7d.cc:14:15: note: cast the second argument to 'int' to silence 1 warning generated.