whisperity added a comment.

In D69560#2487117 <https://reviews.llvm.org/D69560#2487117>, @aaron.ballman 
wrote:
> In D69560#2487093 <https://reviews.llvm.org/D69560#2487093>, @whisperity 
> wrote:
>
>> Not sure what CVR-modelling's default should be... it finds less when "off", 
>> but too easily silences crucial issues (such as `memcpy(T*, const T*)`).
>
> My instinct is that if you accidentally swap a qualified parameter you'll get 
> some other diagnostic about dropped qualifiers and so perhaps the default 
> should be `off`, but perhaps there's something I'm not thinking of there.

That only happens if at a call site the //argument// is qualified.

  void foo(const int& ir1, int& ir2);
  
  void test() {
    int i1 = 8;
    int i2 = 10;
  
    foo(i2, i1); // No warning here.
  
    const int ci = 12;
    foo(i1, ci); // Error here.
  }

So while `const Something` and `Something` are distinct types conceptually (and 
as of now, according to I.24), an unqualified `Something` can still be passed 
in a swapped order at any given call site.
Will think about this.

I'll continue implementing some of the heuristics, re-run the measurements, and 
then I'll update the patch with the rename.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D69560/new/

https://reviews.llvm.org/D69560

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to