Probably caused by `exceptions:goto`, this is the output of `fib` without arc
on 1.6.10:
N_LIB_PRIVATE N_NIMCALL(NI, fib)(NI n) {
NI result;
result = (NI)0;
{
if (!(n < ((NI) 2))) goto LA3_;
result = n;
}
goto LA1_;
LA3_: ;
{
NI T6_;
NI T7_;
T6_ = (NI)0;
T6_ = fib((NI)(n - ((NI) 1)));
T7_ = (NI)0;
T7_ = fib((NI)(n - ((NI) 2)));
result = (NI)(T6_ + T7_);
}
LA1_: ;
return result;
}
Run
And with arc:
N_LIB_PRIVATE N_NIMCALL(NI, fib)(NI n) {
NI result;
NI colontmpD_;
NI colontmpD__2;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
result = (NI)0;
colontmpD_ = (NI)0;
colontmpD__2 = (NI)0;
{
if (!(n < ((NI) 2))) goto LA3_;
colontmpD_ = n;
result = colontmpD_;
}
goto LA1_;
LA3_: ;
{
NI T6_;
NI T7_;
T6_ = (NI)0;
T6_ = fib((NI)(n - ((NI) 1)));
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
T7_ = (NI)0;
T7_ = fib((NI)(n - ((NI) 2)));
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
colontmpD__2 = (NI)(T6_ + T7_);
result = colontmpD__2;
}
LA1_: ;
}BeforeRet_: ;
return result;
}
Run