https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88314
Bug ID: 88314 Summary: range calculation of shift Product: gcc Version: 9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: denis.campredon at gmail dot com Target Milestone: --- gcc is not able to determine that the possible values of res are 0, 8, 16, 32 and so the following function is not optimized : ------------------ bool f(bool a, bool b, bool c) { int res = (a + b) << (1 + c) << 2; return res > 0 && res < 8; } -----------------