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.c24
1 files changed, 23 insertions, 1 deletions
diff --git a/backendC/CleanCompilerSources/codegen3.c b/backendC/CleanCompilerSources/codegen3.c
index cef0807..06c15ef 100644
--- a/backendC/CleanCompilerSources/codegen3.c
+++ b/backendC/CleanCompilerSources/codegen3.c
@@ -1162,7 +1162,29 @@ static void CodeRootUpdateNode (Node root,NodeId rootid,int asp,int bsp,CodeGenN
BuildArgs (root->node_arguments,&asp,&bsp,code_gen_node_ids_p);
- new_update_sdef=CreateUpdateFunction (record_arg,first_field_arg,root);
+ new_update_sdef=CreateUpdateFunction (record_arg,first_field_arg,root
+#if UNBOX_UPDATE_FUNCTION_ARGUMENTS
+ ,False
+#endif
+ );
+
+#if UNBOX_UPDATE_FUNCTION_ARGUMENTS
+ {
+ ArgP previous_arg,arg;
+
+ previous_arg=record_arg;
+ for_l (arg,first_field_arg,arg_next){
+ Node field_node;
+
+ field_node=arg->arg_node;
+ field_node->node_arguments->arg_next=NULL;
+
+ previous_arg->arg_next=arg;
+ previous_arg=arg;
+ }
+ previous_arg->arg_next=NULL;
+ }
+#endif
ConvertSymbolToDandNLabel (&name,&codelab,new_update_sdef);