aboutsummaryrefslogtreecommitdiff
path: root/backendC/CleanCompilerSources/codegen3.c
diff options
context:
space:
mode:
Diffstat (limited to 'backendC/CleanCompilerSources/codegen3.c')
-rw-r--r--backendC/CleanCompilerSources/codegen3.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/backendC/CleanCompilerSources/codegen3.c b/backendC/CleanCompilerSources/codegen3.c
index 7a48e02..cfe7178 100644
--- a/backendC/CleanCompilerSources/codegen3.c
+++ b/backendC/CleanCompilerSources/codegen3.c
@@ -724,6 +724,8 @@ static void CodeRootSelection (Node root, NodeId rootid,int asp,int bsp,CodeGenN
}
}
+static int CodeRootNode (Node root,NodeId rootid,int asp,int bsp,CodeGenNodeIdsP code_gen_node_ids_p,StateS resultstate,struct esc *esc_p);
+
static int CodeRhsNodeDefsAndRestoreNodeIdStates (Node root_node,NodeDefs defs,int asp,int bsp,StateS resultstate,struct esc *esc_p,
NodeIdListElementP a_node_ids,NodeIdListElementP b_node_ids,
NodeIdListElementP free_node_ids,int doesnt_fail)
@@ -972,6 +974,25 @@ static void CodeNormalRootNode (Node root,NodeId rootid,int asp,int bsp,CodeGenN
} else
GenRtn (1,1,resultstate);
return;
+ case seq_symb:
+ if (root->node_arity==2){
+ int old_asp,old_bsp;
+
+ old_asp=asp;
+ old_bsp=bsp;
+ BuildArg (root->node_arguments,&asp,&bsp,code_gen_node_ids_p);
+ GenPopA (asp-old_asp);
+ GenPopB (bsp-old_bsp);
+ /* asp=old_asp; bsp=old_bsp; */
+
+ CodeRootNode (root->node_arguments->arg_next->arg_node,rootid,old_asp,old_bsp,code_gen_node_ids_p,resultstate,NULL);
+ } else {
+ LabDef name;
+
+ ConvertSymbolToDLabel (&name,SeqDef);
+ FillRhsRoot (&name, root, asp, bsp,code_gen_node_ids_p);
+ }
+ return;
default:
if (rootsymb->symb_kind < Nr_Of_Basic_Types)
FillRhsRoot (&BasicDescriptors[rootsymb->symb_kind], root, asp, bsp,code_gen_node_ids_p);