https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82433
Bug ID: 82433 Summary: IPA-VRP not handling tcc_binary with constant argument Product: gcc Version: 8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: jakub at gcc dot gnu.org Target Milestone: --- On -O2 -fdump-{tree,ipa}-all-alias -fno-inline: volatile int z, w; static int foo (int x, int y) { z = x + 1; w = y + 1; return x + y; } static int bar (int x, int y) { return foo (x + 1, y + 1) + 1; } int baz (int x, int y) { return bar (x & 4095, y & 4095) + bar (x & 255, y & 255); } IPA-CP seems to figure out that foo's arguments have non-zero bits 8191, but doesn't figure out their range is [1, 4096]. Seems we only handle tcc_unary, not tcc_binary with constant argument for IPA-VRP, but somehow do handle it for the alignment/nonzero-bits propagation.