aboutsummaryrefslogtreecommitdiff
path: root/backendC/CleanCompilerSources
diff options
context:
space:
mode:
Diffstat (limited to 'backendC/CleanCompilerSources')
-rw-r--r--backendC/CleanCompilerSources/statesgen.c24
1 files changed, 23 insertions, 1 deletions
diff --git a/backendC/CleanCompilerSources/statesgen.c b/backendC/CleanCompilerSources/statesgen.c
index 1fe9494..16667a9 100644
--- a/backendC/CleanCompilerSources/statesgen.c
+++ b/backendC/CleanCompilerSources/statesgen.c
@@ -2262,7 +2262,29 @@ static Bool NodeInASemiStrictContext (Node node,int local_scope)
}
} else
DecrRefCountCopiesOfArgs (node->node_arguments IF_OPTIMIZE_LAZY_TUPLE_RECURSION(local_scope));
- } else
+ }
+#if STRICT_LISTS
+ else if (symb->symb_kind==cons_symb && node->node_arity==2){
+ ArgP arg_p;
+
+ arg_p=node->node_arguments;
+ if (symb->symb_head_strictness>1){
+ if (ArgInAStrictContext (arg_p,StrictState,True,local_scope))
+ parallel = True;
+ } else
+ if (ShouldDecrRefCount)
+ DecrRefCountCopiesOfArg (arg_p IF_OPTIMIZE_LAZY_TUPLE_RECURSION(local_scope));
+
+ arg_p=arg_p->arg_next;
+ if (symb->symb_tail_strictness){
+ if (ArgInAStrictContext (arg_p,StrictState,True,local_scope))
+ parallel = True;
+ } else
+ if (ShouldDecrRefCount)
+ DecrRefCountCopiesOfArg (arg_p IF_OPTIMIZE_LAZY_TUPLE_RECURSION(local_scope));
+ }
+#endif
+ else
DecrRefCountCopiesOfArgs (node->node_arguments IF_OPTIMIZE_LAZY_TUPLE_RECURSION(local_scope));
if (parallel)