If the right side of an assignment is an int constant, it seems it outputs the constant expression directly. But when it does that, it never does anything to the original "result" register.
Relevant code:
Code: Select all
if (intconst)
{ //fix int constant return for assignment
return Right->Emit(build);
}
I believe this will leak the register used for the result. As far as I can tell, the correct code should be this:
Code: Select all
if (intconst)
{ //fix int constant return for assignment
result.Free (build);
return Right->Emit(build);
}
I found this issue while debugging a more serious one, which I'll be making a report and bugfix PR for soon.