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.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/backendC/CleanCompilerSources/codegen3.c b/backendC/CleanCompilerSources/codegen3.c
index cfe7178..28b783e 100644
--- a/backendC/CleanCompilerSources/codegen3.c
+++ b/backendC/CleanCompilerSources/codegen3.c
@@ -981,8 +981,14 @@ static void CodeNormalRootNode (Node root,NodeId rootid,int asp,int bsp,CodeGenN
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);
+ if (asp>=old_asp)
+ GenPopA (asp-old_asp);
+ else
+ old_asp=asp;
+ if (bsp>=old_bsp)
+ GenPopB (bsp-old_bsp);
+ else
+ old_bsp=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);