]> git.xonotic.org Git - xonotic/gmqcc.git/blobdiff - parser.c
I added it for a reason, because I was smart. I forgot about it because of life :(
[xonotic/gmqcc.git] / parser.c
index b53dba5ec5b9df6055eebd0789ac07a5d1a4f0b6..7ba3782e3b8d8d445b5667a28b5ddf94fc0b9497 100644 (file)
--- a/parser.c
+++ b/parser.c
@@ -1051,6 +1051,19 @@ static bool parser_sy_apply_operator(parser_t *parser, shunt *sy)
             if(CanConstFold(exprs[0], exprs[1])) {
                 out = (ast_expression*)parser_const_float(parser, (float)((qcint)(ConstF(0)) ^ ((qcint)(ConstF(1)))));
             } else {
+                ast_binary *expr = ast_binary_new(
+                    ctx,
+                    INSTR_SUB_F,
+                    (ast_expression*)parser_const_float_neg1(parser),
+                    (ast_expression*)ast_binary_new(
+                        ctx,
+                        INSTR_BITAND,
+                        exprs[0],
+                        exprs[1]
+                    )
+                );
+                expr->refs = AST_REF_NONE;
+                
                 out = (ast_expression*)
                     ast_binary_new(
                         ctx,
@@ -1061,17 +1074,7 @@ static bool parser_sy_apply_operator(parser_t *parser, shunt *sy)
                             exprs[0],
                             exprs[1]
                         ),
-                        (ast_expression*)ast_binary_new(
-                            ctx,
-                            INSTR_SUB_F,
-                            (ast_expression*)parser_const_float_neg1(parser),
-                            (ast_expression*)ast_binary_new(
-                                ctx,
-                                INSTR_BITAND,
-                                exprs[0],
-                                exprs[1]
-                            )
-                        )
+                        (ast_expression*)expr
                     );
             }
             break;
@@ -1201,7 +1204,7 @@ static bool parser_sy_apply_operator(parser_t *parser, shunt *sy)
             } else {
                 ast_binary *eq = ast_binary_new(ctx, INSTR_EQ_F, exprs[0], exprs[1]);
 
-                eq->refs = (ast_binary_ref)false; /* references nothing */
+                eq->refs = AST_REF_NONE;
 
                     /* if (lt) { */
                 out = (ast_expression*)ast_ternary_new(ctx,