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.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/backendC/CleanCompilerSources/codegen3.c b/backendC/CleanCompilerSources/codegen3.c
index bbd9ceb..21c8703 100644
--- a/backendC/CleanCompilerSources/codegen3.c
+++ b/backendC/CleanCompilerSources/codegen3.c
@@ -707,6 +707,10 @@ static int CodeRhsNodeDefsAndRestoreNodeIdStates (Node root_node,NodeDefs defs,i
#define BETWEEN(l,h,v) ((unsigned)((v)-(l)) <= (unsigned)((h)-(l)))
+#if STRICT_LISTS
+extern int simple_expression_without_node_ids (NodeP node_p);
+#endif
+
static void CodeNormalRootNode (Node root,NodeId rootid,int asp,int bsp,CodeGenNodeIdsP code_gen_node_ids_p,StateS resultstate)
{
Symbol rootsymb;
@@ -792,9 +796,11 @@ static void CodeNormalRootNode (Node root,NodeId rootid,int asp,int bsp,CodeGenN
case nil_symb:
#if STRICT_LISTS
if (rootsymb->symb_head_strictness & 1){
- BuildArg (root->node_arguments,&asp,&bsp,code_gen_node_ids_p);
- GenPopA (1);
- --asp;
+ if (!simple_expression_without_node_ids (root->node_arguments->arg_node)){
+ BuildArg (root->node_arguments,&asp,&bsp,code_gen_node_ids_p);
+ GenPopA (1);
+ --asp;
+ }
if (resultstate.state_kind==StrictRedirection){
GenPopA (asp);