[Nickle] bug: do-while doesnt
Keith Packard
nickle@nickle.org
Fri, 06 Sep 2002 17:05:33 -0700
Around 16 o'clock on Sep 6, Bart Massey wrote:
> spins without incrementing k. Probably a compiler bug: I'll
> let Keith sort it out :-).
It incremented k *once*, but then it did kinda start spinning.
Here's what the compiler was generating:
LocalRefStore ^ auto k (link 0 elt 0)
int k = 0;
Const 0
Assign
k++;
LocalRef auto k (link 0 elt 0)
PostOp +
do
while (k < 10);
L1:
Local ^ auto k (link 0 elt 0)
Const 10
BinOp <
BranchTrue branch L1 BranchModNone
As you can see, it's branching back to the wrong place. It generated
a branch back to the 'continue' portion of the loop, rather than the top.
Easily fixed (and in CVS).
-keith