Fixed inconsistent lifetimes
This commit is contained in:
@ -80,8 +80,14 @@ func (f *Function) CompileAssignDivision(expr *expression.Expression) error {
|
||||
f.RegisterNumber(asm.MOVE, x86.RAX, dividend.Number)
|
||||
err = f.Execute(division.Token, x86.RAX, divisor)
|
||||
case eval.Register:
|
||||
err = f.Execute(division.Token, dividend.Register, divisor)
|
||||
defer f.FreeRegister(dividend.Register)
|
||||
if dividend.Register != quotientVariable.Value.Register && dividend.IsAlive() {
|
||||
tmp := f.NewRegister()
|
||||
f.RegisterRegister(asm.MOVE, tmp, dividend.Register)
|
||||
err = f.Execute(division.Token, tmp, divisor)
|
||||
f.FreeRegister(tmp)
|
||||
} else {
|
||||
err = f.Execute(division.Token, dividend.Register, divisor)
|
||||
}
|
||||
default:
|
||||
panic(fmt.Errorf("%s: not implemented: %v", f.UniqueName, dividend))
|
||||
}
|
||||
|
Reference in New Issue
Block a user