mirror of
https://github.com/DarkPlacesEngine/gmqcc.git
synced 2025-03-22 02:31:28 +00:00
I added it for a reason, because I was smart. I forgot about it because of life :(
This commit is contained in:
parent
0c58509417
commit
5694c77d16
2 changed files with 16 additions and 12 deletions
1
ast.h
1
ast.h
|
@ -231,6 +231,7 @@ void ast_type_adopt_impl(ast_expression *self, const ast_expression *other);
|
|||
void ast_type_to_string(ast_expression *e, char *buf, size_t bufsize);
|
||||
|
||||
typedef enum ast_binary_ref_s {
|
||||
AST_REF_NONE = 0,
|
||||
AST_REF_LEFT = 1 << 1,
|
||||
AST_REF_RIGHT = 1 << 2,
|
||||
AST_REF_ALL = (AST_REF_LEFT | AST_REF_RIGHT)
|
||||
|
|
27
parser.c
27
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,
|
||||
|
|
Loading…
Reference in a new issue