https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70378
Manuel López-Ibáñez <manu at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Target|x86_64-w64-mingw32 | Status|UNCONFIRMED |NEW Version|unknown |6.0 Keywords| |diagnostic Last reconfirmed| |2016-04-02 CC| |manu at gcc dot gnu.org Host|x86_64-w64-mingw32 | Ever confirmed|0 |1 Summary|[5.3] inconsistant warnings |wrong warning with |with -Wconversion for |-Wconversion with explicit |different types |cast Known to fail| |6.0 Build|x86_64-w64-mingw32 | --- Comment #2 from Manuel López-Ibáñez <manu at gcc dot gnu.org> --- Simpler testcase: typedef unsigned int uint32_t; void foo(char a, uint32_t b) { b = (uint32_t)((b * 10) + (uint32_t)a); } Something must be removing the explicit cast or messing up the expression.