[PATCH] D15486: [RFC] Emit note pointing to a discarded qualifier [-Wincompatible-pointer-types-discards-qualifiers]

Adrian ZgorzaƂek via cfe-commits cfe-commits at lists.llvm.org
Mon Dec 14 17:38:31 PST 2015


adek05 added a comment.

@aaron.ballman I think this could be hard to achieve without an extra note if you have something like:

  cat test2.c
  int main() {
          char *c = 'a';
  
          char volatile** cc = &c;
          cc = &c;
  }



  test2.c:2:15: warning: incompatible integer to pointer conversion initializing 'char *' with an expression of type 'int' [-Wint-conversion]
          char *c = 'a';
                ^   ~~~
  test2.c:4:25: warning: initializing 'volatile char **' with an expression of type 'char **' discards qualifiers in nested pointer types [-Wincompatible-pointer-types-discards-qualifiers]
          char volatile** cc = &c;
                          ^    ~~
  test2.c:4:9: note: nested pointer type with discarded 'const' qualifier
          char volatile** cc = &c;
          ^~~~~~~~~~~~~~~~~~
  test2.c:5:12: warning: assigning to 'volatile char **' from 'char **' discards qualifiers in nested pointer types [-Wincompatible-pointer-types-discards-qualifiers]
          cc = &c;
             ^ ~~
  3 warnings generated.

Sadly, my code doesn't print a note in the second case, which I would have to debug. In case of initialization, I think we can just print one line and omit note. 
For assignment which is not an initialization, it might be useful to point to the declaration of a variable which is assigned.

I will try to handle the second case and write tests for this. Let me know if you feel like it is still worth proceeding.


http://reviews.llvm.org/D15486





More information about the cfe-commits mailing list