mirror of
https://github.com/DarkPlacesEngine/gmqcc.git
synced 2025-03-22 10:41:43 +00:00
unary not now uses NOT_F with -ftrue-empty-strings
This commit is contained in:
parent
b85441d6af
commit
6b9eff19f1
1 changed files with 11 additions and 4 deletions
15
parser.c
15
parser.c
|
@ -648,10 +648,17 @@ static bool parser_sy_apply_operator(parser_t *parser, shunt *sy)
|
|||
out = (ast_expression*)ast_unary_new(ctx, INSTR_NOT_V, exprs[0]);
|
||||
break;
|
||||
case TYPE_STRING:
|
||||
if (CanConstFold1(exprs[0]))
|
||||
out = (ast_expression*)parser_const_float(parser, !ConstS(0) || !*ConstS(0));
|
||||
else
|
||||
out = (ast_expression*)ast_unary_new(ctx, INSTR_NOT_S, exprs[0]);
|
||||
if (CanConstFold1(exprs[0])) {
|
||||
if (OPTS_FLAG(TRUE_EMPTY_STRINGS))
|
||||
out = (ast_expression*)parser_const_float(parser, !ConstS(0));
|
||||
else
|
||||
out = (ast_expression*)parser_const_float(parser, !ConstS(0) || !*ConstS(0));
|
||||
} else {
|
||||
if (OPTS_FLAG(TRUE_EMPTY_STRINGS))
|
||||
out = (ast_expression*)ast_unary_new(ctx, INSTR_NOT_F, exprs[0]);
|
||||
else
|
||||
out = (ast_expression*)ast_unary_new(ctx, INSTR_NOT_S, exprs[0]);
|
||||
}
|
||||
break;
|
||||
/* we don't constant-fold NOT for these types */
|
||||
case TYPE_ENTITY:
|
||||
|
|
Loading…
Reference in a new issue