https://gcc.gnu.org/bugzilla/show_bug.cgi?id=24542
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Last reconfirmed| |2023-03-31 Status|RESOLVED |NEW Resolution|WONTFIX |--- Summary|potential integer overflow |potential unwanted |should be warned on |truncation of operation |assignment to wider |overflow should be warned |variable |on assignment to wider | |variable Ever confirmed|0 |1 --- Comment #13 from Richard Biener <rguenth at gcc dot gnu.org> --- Let me re-open this. I agree that it sounds useful to have a diagnostic that would catch these cases but I also think it might have many false positives. But that's similar to diagnosing if (a || b && c). That said, the burden is on whoever is going to prototype patch with extensive enough test coverage. The question is whether to diagnose int x1, x2; long y1; y1 = x1 * x2; since when x1 * x2 overflows that even invokes undefined behavior (so it's even worse than the unsigned case). The description is misleading, there's no "overflow on assignment" but the operation itself might overflow and the truncated value is then widened on assignment. The assignment is a mere hint that a wider result might have been intended (and a good enough hint IMHO).