[PATCH] D33102: [clang] Implement -Wcast-qual for C++
Roman Lebedev via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Sat Jun 10 03:33:43 PDT 2017
lebedev.ri planned changes to this revision.
lebedev.ri added a comment.
In https://reviews.llvm.org/D33102#773296, @dblaikie wrote:
> But sure. Could you also (manually, I guess) confirm that this matches GCC's cast-qual behavior (insofar as the warning fires in the same situations). If there are any deviations, let's chat about them.
Great, you were right :)
Found a false-negative:
$ cat /tmp/tst.c
int main() {
void* p1 = (void*)"txt";
char* p2 = (char*)"txt";
}
$ gcc -x c -Wcast-qual /tmp/tst.c
$ gcc -x c++ -Wcast-qual /tmp/tst.c
/tmp/tst.c: In function ‘int main()’:
/tmp/tst.c:2:21: warning: cast from type ‘const char*’ to type ‘void*’ casts away qualifiers [-Wcast-qual]
void* p1 = (void*)"txt";
^~~~~
/tmp/tst.c:3:21: warning: cast from type ‘const char*’ to type ‘char*’ casts away qualifiers [-Wcast-qual]
char* p2 = (char*)"txt";
^~~~~
$ ./bin/clang -x c -Wcast-qual /tmp/tst.c
$ ./bin/clang -x c++ -Wcast-qual /tmp/tst.c
/tmp/tst.c:3:21: warning: cast from 'const char *' to 'char *' drops const qualifier [-Wcast-qual]
char* p2 = (char*)"txt";
^
1 warning generated.
So at least, in C++ mode, it should warn on both lines.
I'm not sure, should that really not produce a warning in C?
(gcc version 6.3.0 20170516 (Debian 6.3.0-18) )
Repository:
rL LLVM
https://reviews.llvm.org/D33102
More information about the cfe-commits
mailing list