This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/29789] Missed invariant out of the loop with conditionals and shifts
- From: "rguenth at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 20 Apr 2007 12:51:52 -0000
- Subject: [Bug tree-optimization/29789] Missed invariant out of the loop with conditionals and shifts
- References: <bug-29789-10053@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #4 from rguenth at gcc dot gnu dot org 2007-04-20 13:51 -------
Mine. I have a tree if-conversion patch that produces
<L0>:;
D.1993 = MEM[base: state, index: ivtmp.32, step: 8];
if (pretmp.25 == (pretmp.25 & D.1993)) goto <L1>; else goto <L3>;
<L1>:;
MEM[base: state, index: ivtmp.32, step: 8] = 1 << target ^ D.1993;
<L3>:;
ivtmp.32 = ivtmp.32 + 1;
if (size > (int) ivtmp.32) goto <L0>; else goto <L6>;
and finally
.L4:
movq (%r11,%r9,8), %rdi
movq %rsi, %rax
andq %rdi, %rax
cmpq %rax, %rsi
jne .L5
xorq %rdx, %rdi
movq %rdi, (%r11,%r9,8)
.L5:
addq $1, %r9
cmpl %r9d, %r8d
jg .L4
for the inner loop.
--
rguenth at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
AssignedTo|unassigned at gcc dot gnu |rguenth at gcc dot gnu dot
|dot org |org
Status|NEW |ASSIGNED
Last reconfirmed|2006-11-10 01:55:58 |2007-04-20 13:51:52
date| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29789