On 1/10/20, Jason Merrill <ja...@redhat.com> wrote: > Back in 2009 Manuel sent a patch to avoid useless -Wconversion warnings > on compound assignment of types that get promoted to int: > > https://gcc.gnu.org/ml/gcc-patches/2009-08/msg00582.html > > Joseph argued that those warnings are sometimes useful, and that they > should be controlled by a separate flag. So this patch introduces > -Warith-conversion, which is off by default in this patch. > > Joseph, is that default OK with you? If not, can you explain your > reasoning more about why the warnings are desirable? It seems to me > that even in cases where you don't know the ranges involved, it's wrong > for e.g. 'mychar += 1' to warn when 'myint += 1' doesn't. In both > cases, the addition might overflow the range of the target type, but > that isn't about the conversion; the result is the same as if the > operation had been done in the operand/target type rather than the > promoted type. > > The change to cp/typeck.c is a placeholder to use if the default setting > changes; even if we end up warning by default for mychar = mychar + 1, I > really don't want to warn about mychar += 1. > > sign.diff is a prerequisite tidying that moves the warnings from > unsafe_conversion_p back into conversion_warning with the others. > > rshift.diff restores the short_shift code to the C++ front end so that C > and C++ give the same warnings with -Warith-conversion. > > Tested x86_64-pc-linux-gnu. Comments? >
Hi Jason, thanks for this new flag. Now that GCC 10 has been released I was checking the release notes to review everything new in GCC 10, and I didn't see any mention of -Warith-conversion on it. Could you add a quick note about -Warith-conversion to changes.html please? Thanks, Eric