[Bug tree-optimization/9814] gcc fails to optimise if (l&2) l|=2 away
steven at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Sun May 22 15:14:00 GMT 2011
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=9814
Steven Bosscher <steven at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |FIXED
--- Comment #10 from Steven Bosscher <steven at gcc dot gnu.org> 2011-05-22 14:54:53 UTC ---
Works overall, fails at GIMPLE level:
$ ./cc1 -quiet -m32 -fomit-frame-pointer -O2 t.c -fdump-tree-optimized
$ cat t.s
.file "t.c"
.text
.p2align 4,,15
.globl k
.type k, @function
k:
.LFB0:
.cfi_startproc
movl 4(%esp), %eax
ret
.cfi_endproc
.LFE0:
.size k, .-k
.ident "GCC: (GNU) 4.6.0 20110312 (experimental) [trunk revision
170907]"
.section .note.GNU-stack,"",@progbits
$ cat t.c.143t.optimized
;; Function k (k)
k (int l)
{
int D.1979;
<bb 2>:
D.1979_3 = l_2(D) & 2;
if (D.1979_3 != 0)
goto <bb 3>;
else
goto <bb 4>;
<bb 3>:
l_4 = l_2(D) | 2;
<bb 4>:
# l_1 = PHI <l_2(D)(2), l_4(3)>
return l_1;
}
But there is already a (series of) bug report(s) for missed bit folding
optimizations on GIMPLE.
More information about the Gcc-bugs
mailing list