http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46212
--- Comment #3 from Ryan Mansfield <rmansfield at qnx dot com> 2010-10-28
18:45:10 UTC ---
Reduced testcase:
static __inline__ unsigned foo(void *__ptr) {
unsigned __val = *(volatile unsigned *)(__ptr);
return (((__val) >> 24) | (((__val) >> 8) & 0xff00) | (((__val) & 0xff00)
<< 8) | ((__val) << 24));
}
void bar(void *dst, void *src, int pixels) {
unsigned c;
while (pixels--) {
c = foo(src);
*(unsigned *)dst = (c & 0xf80000) >> 9 | (c & 0xf800) >> 6 | (c & 0xf8) >> 3
| (c & 0x80000000) >> 16;
}
}
Looks like the same bug. Sorry for the dup. I only searched bugzilla for PRs
about reg_nonzero_bits_for_combine.