<div dir="ltr"><br><br><div class="gmail_quote"><div dir="ltr">On Sat, Jun 10, 2017 at 3:33 AM Roman Lebedev via Phabricator <<a href="mailto:reviews@reviews.llvm.org">reviews@reviews.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">lebedev.ri planned changes to this revision.<br>
lebedev.ri added a comment.<br>
<br>
In <a href="https://reviews.llvm.org/D33102#773296" rel="noreferrer" target="_blank">https://reviews.llvm.org/D33102#773296</a>, @dblaikie wrote:<br>
<br>
> 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.<br>
<br>
<br>
Great, you were right :)<br>
Found a false-negative:<br>
<br>
  $ cat /tmp/tst.c<br>
  int main() {<br>
    void* p1 = (void*)"txt";<br>
    char* p2 = (char*)"txt";<br>
  }<br>
  $ gcc -x c -Wcast-qual /tmp/tst.c<br>
  $ gcc -x c++ -Wcast-qual /tmp/tst.c<br>
  /tmp/tst.c: In function ‘int main()’:<br>
  /tmp/tst.c:2:21: warning: cast from type ‘const char*’ to type ‘void*’ casts away qualifiers [-Wcast-qual]<br>
     void* p1 = (void*)"txt";<br>
                       ^~~~~<br>
  /tmp/tst.c:3:21: warning: cast from type ‘const char*’ to type ‘char*’ casts away qualifiers [-Wcast-qual]<br>
     char* p2 = (char*)"txt";<br>
                       ^~~~~<br>
<br>
  $ ./bin/clang -x c -Wcast-qual /tmp/tst.c<br>
  $ ./bin/clang -x c++ -Wcast-qual /tmp/tst.c<br>
  /tmp/tst.c:3:21: warning: cast from 'const char *' to 'char *' drops const qualifier [-Wcast-qual]<br>
    char* p2 = (char*)"txt";<br>
                      ^<br>
  1 warning generated.<br>
<br>
So at least, in C++ mode, it should warn on both lines.<br></blockquote><div><br>Seems reasonable that it should, yes.<br><br>(aside: You're still welcome to commit this patch as-is, and provide patches for improvements as follow-up (mostly false positives would be more of a concern to address before commit))<br> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I'm not sure, should that really not produce a warning in C?<br>
(gcc version 6.3.0 20170516 (Debian 6.3.0-18) )<br></blockquote><div><br>Probably not, no - string literals have some weird mutability in C (& in older versions of C++, even).<br><br>- Dave<br> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
<br>
Repository:<br>
  rL LLVM<br>
<br>
<a href="https://reviews.llvm.org/D33102" rel="noreferrer" target="_blank">https://reviews.llvm.org/D33102</a><br>
<br>
<br>
<br>
</blockquote></div></div>