Fix temp spilling in recursive functions
This commit is contained in:
parent
e6bc6371c9
commit
2db8890453
|
@ -39,6 +39,13 @@ namespace opp {
|
||||||
v = k;
|
v = k;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void operator-=(int k)
|
||||||
|
{
|
||||||
|
k = v - k;
|
||||||
|
__assume(k >= tmin && k <= tmax);
|
||||||
|
v = k;
|
||||||
|
}
|
||||||
|
|
||||||
operator int() const
|
operator int() const
|
||||||
{
|
{
|
||||||
int k = v;
|
int k = v;
|
||||||
|
|
|
@ -5971,7 +5971,7 @@ InterCodeProcedure* InterCodeGenerator::TranslateProcedure(InterCodeModule * mod
|
||||||
if (dec->mFlags & DTF_FUNC_INTRCALLED)
|
if (dec->mFlags & DTF_FUNC_INTRCALLED)
|
||||||
proc->mInterruptCalled = true;
|
proc->mInterruptCalled = true;
|
||||||
|
|
||||||
if (dec->mFlags & DTF_DYNSTACK)
|
if ((dec->mFlags & DTF_DYNSTACK) || (dec->mFlags & DTF_FUNC_RECURSIVE))
|
||||||
proc->mDynamicStack = true;
|
proc->mDynamicStack = true;
|
||||||
|
|
||||||
if ((dec->mFlags & DTF_PREVENT_INLINE) || (dec->mBase->mFlags & DTF_VARIADIC))
|
if ((dec->mFlags & DTF_PREVENT_INLINE) || (dec->mBase->mFlags & DTF_VARIADIC))
|
||||||
|
|
Loading…
Reference in New Issue