Summary: | [tree-ssa] Convert (x < 0) || (y < 0) into (x | y) < 0. | ||
---|---|---|---|
Product: | gcc | Reporter: | Kazu Hirata <kazu> |
Component: | tree-optimization | Assignee: | Not yet assigned to anyone <unassigned> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | allen_1985624, dimhen, gabravier, gcc-bugs, jeffreyalaw, zhongyunde |
Priority: | P2 | Keywords: | missed-optimization |
Version: | tree-ssa | ||
Target Milestone: | --- | ||
Host: | Target: | ||
Build: | Known to work: | ||
Known to fail: | Last reconfirmed: | 2005-12-30 22:22:49 | |
Bug Depends on: | 15357, 15459 | ||
Bug Blocks: | 19987 |
Description
Kazu Hirata
2004-05-09 19:30:50 UTC
Another one just like above: void bar (void); void foo (int a, int b) { if (a != 0) return; if (b != 0) return; bar (); } void baz (int a, int b) { if ((a | b) == 0) bar (); } See also PR 15241. Confirmed. For AMD64, the functions from the first test case don't produce the same code either, so combine is not catching this either. x86_64 r10-7080 for me produce identical code -- c#0 with -O2 -- c#1 with -O Resolved at some point in the past. Not worth the trouble to bisect. |