http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60013

--- Comment #14 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Important thing I forgot to mention is the order or predecessors, bb10 has
first bb9 and then bb11, bb11 has first bb4, then bb12, then bb5, bb6, bb8.

The oscillation is there really just because of the first and second processing
of bb11, where first time we've ored
{0x100,4,0}, <bb12 wasn't processed yet>, {0x80,0x40,4,0}, {0x20,0x10,4,0},
{0x200,8,0} and the second time:
{0x100,4,0}, {0x200,8,0}, {0x80,0x40,4,0}, {0x20,0x10,4,0}, {0x200,8,0}
{0x100,4,0}
So the result was first time
{0x3a0,0x390,0x360,0x350,0x1a8,0x198,0x168,0x158,0},
second time {0x3a0,0x390,0x360,0x350,0x204,0x1a8,0x198,0x168,0}.

{0x200,8,0} | {0x3a0,0x390,0x360,0x350,0x1a8,0x198,0x168,0x158,0}
gives the second operand.
{0x100,4,0} | {0x3a0,0x390,0x360,0x350,0x204,0x1a8,0x198,0x168,0}
gives also the second operand and oring into it {0x80,0x40,4,0},
{0x20,0x10,4,0}
and {0x200,8,0} doesn't change anything.
{0x200,8,0} | {0x3a0,0x390,0x360,0x350,0x204,0x1a8,0x198,0x168,0}
gives the second operand.
{0x100,4,0} | {0x3a0,0x390,0x360,0x350,0x1a8,0x198,0x168,0x158,0}
gives the second operand and oring into it {0x80,0x40,4,0}, {0x20,0x10,4,0}
and {0x200,8,0} doesn't change anything.

The oscillation is there because we always get the one before previous
iteration's predicate of bb10 through bb12.

Reply via email to