From 43e9885a085b307d720ef7e8e327a094ec89f45b Mon Sep 17 00:00:00 2001 From: Dale Weiler Date: Fri, 29 Nov 2013 13:48:03 -0500 Subject: [PATCH] Fix fold_op_cmp --- fold.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/fold.c b/fold.c index 40580e4..84b01c7 100644 --- a/fold.c +++ b/fold.c @@ -606,10 +606,15 @@ static GMQCC_INLINE ast_expression *fold_op_lteqgt(fold_t *fold, ast_value *a, a static GMQCC_INLINE ast_expression *fold_op_cmp(fold_t *fold, ast_value *a, ast_value *b, bool ne) { if (fold_can_2(a, b)) { - if (isfloat(a) && isfloat(b)) - return fold_constgen_float(fold, ne != (fold_immvalue_float(a) == fold_immvalue_float(b))); - if (isvector(a) && isvector(b)) - return fold_constgen_float(fold, ne != vec3_cmp(fold_immvalue_vector(a), fold_immvalue_vector(b))); + if (isfloat(a) && isfloat(b)) { + float la = fold_immvalue_float(a); + float lb = fold_immvalue_float(b); + return (ast_expression*)fold->imm_float[!!(ne ? la != lb : la == lb)]; + } if (isvector(a) && isvector(b)) { + vec3_t la = fold_immvalue_vector(a); + vec3_t lb = fold_immvalue_vector(b); + return (ast_expression*)fold->imm_float[!!(ne ? vec3_cmp(la, lb) : !vec3_cmp(la, lb))]; + } } return NULL; } -- 2.39.2