avt77 added a comment. > That's an interesting question. In general, these warnings do try to ignore > the effects of implicit promotion. We would not want -Wsign-conversion to > fire on `unsigned short x = an_unsigned_short + 1;` (or `- 1`, for that > matter), even though formally this coerces a `signed int` to `unsigned > short`. Similarly, -Wsign-conversion *should* warn on `signed short x = > an_unsigned_short + 1;`, even though formally the promotion from `unsigned > short` to `signed int` is not problematic and the final conversion from > `signed int` to `signed short` is not a signedness change. (This second > example should also generate a -Wconversion warning, but the questions are > independent.) Applying that strictly here would say that the user is > entitled to think of this as an operation on `unsigned char` that then gets > losslessly promoted to `signed short`, even though arithmetically that's not > what happens. On the other hand, I do think there's some room for > -Wsign-conversion to be more aggressive than -Wconversion about this sort of > thing; -Wsign-conversion should generally fire for any changes in signedness > from the original operand types (with the usual complexities around constant > values), and there's just an exception for computations whose value is known > to fit within the expressible range of the result type, which is not true of > this multiplication. So I think it would be acceptable to warn on this. > > John.
OK, is it LGTM? https://reviews.llvm.org/D44559 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits