diff --git a/backendC/CleanCompilerSources/instructions.c b/backendC/CleanCompilerSources/instructions.c index 5c3e7734c1382293303c8d3f2c0de88497d2a60a..b4b8ef6df5f622b3b81eed6eb13094e6aa72ccf9 100644 --- a/backendC/CleanCompilerSources/instructions.c +++ b/backendC/CleanCompilerSources/instructions.c @@ -1331,14 +1331,6 @@ static void CallFunction2 (Label label, SymbDef def, Bool isjsr, StateS root_sta label->lab_pref = s_pref; - if (def->sdef_kind==SYSRULE){ - if (def->sdef_mark & SDEF_DEFRULE_ABC_CODE){ - GenABCInstructions (def->sdef_abc_code); - if (!isjsr) - GenRtn (aout, bout, root_state); - return; - } - } if (def->sdef_kind==IMPRULE){ if ((def->sdef_mark & SDEF_INLINE_IS_CONSTRUCTOR)!=0){ generate_is_constructor (def->sdef_rule); @@ -1364,6 +1356,11 @@ static void CallFunction2 (Label label, SymbDef def, Bool isjsr, StateS root_sta GenRtn (aout, bout, root_state); return; } + } else if ((def->sdef_mark & SDEF_DEFRULE_ABC_CODE)!=0 && (def->sdef_kind==SYSRULE || def->sdef_kind==DEFRULE)){ + GenABCInstructions (def->sdef_abc_code); + if (!isjsr) + GenRtn (aout, bout, root_state); + return; } GenDStackLayout (ain, bin, fun_args);