https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102291
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|dubious overflow warning |[9/10/11/12 Regression] | |wrong overflow warning for | |compound expression | |conversion and bit_and | |expressions Known to work|9.4.0 |4.1.2 Known to fail| |4.4.7 Target Milestone|--- |9.5 --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- I don't think this really a regression from GCC 9 but rather a regression from a long time ago. Take: typedef unsigned long ulong; typedef unsigned char uchar; ulong testera(ulong ul) { return ((((uchar) (((void)0, ((uchar) (0x80)))|0)) & 0x3f)); } ----- CUT ---- This is slightly different from your teststcase but it warns all the way back until sometime before 4.4.0 (I only can test 4.1.2).