aaron.ballman added a comment. In https://reviews.llvm.org/D44231#1032011, @pfultz2 wrote:
> > If the return type of foo() is changed, then the use for s1 will be > > automatically updated > > But usually you write it as: > > using foo_return = uint16_t; > foo_return foo(); > ... > size_t s1 = sizeof(foo()); > size_t s2 = sizeof(foo_return); > > > So you just update the `foo_return` typedef, and it will update it everywhere > that type is used. Again, that only works for C++ and not C. >> I think we need some data measurements over several large (>500k LoC) C and >> C++ code bases to see how frequently this check yields false positives. > > So I ran it on llvm. It mainly complained about areas where `sizeof` is used > for building traits. I should add an extra check that the function is not > overloaded. > > It did complain once about `sizeof` in a detection idiom(in BitmaskEnum.h) > and once with `sizeof(getVersion())`, like you mentioned. Did it report any true positives that would need correcting? LLVM is a good start, but hardly representative. Can you check some other large repos (both C++ and C), such as: Qt, cocos2d, rethinkdb, redis, and php-src? Did they produce true positives? How was the false positive rate? Repository: rCTE Clang Tools Extra https://reviews.llvm.org/D44231 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits