Generate (non_const_float * (1.0 / constant_float)) for (non_const_float / constant_float) expressions.

This commit is contained in:
Dale Weiler 2013-09-18 19:15:24 -04:00
parent 5a47dd5e62
commit e18849fa42
2 changed files with 14 additions and 1 deletions

9
fold.c
View file

@ -386,7 +386,7 @@ static GMQCC_INLINE ast_expression *fold_op_mul_vec(fold_t *fold, vec3_t vec, as
out = (ast_expression*)ast_member_new(fold_ctx(fold), (ast_expression*)sel, set[0]-'x', NULL);
out->node.keep = false;
((ast_member*)out)->rvalue = true;
if (x != -1)
if (x != -1.0f)
return (ast_expression*)ast_binary_new(fold_ctx(fold), INSTR_MUL_F, fold_constgen_float(fold, x), out);
}
return NULL;
@ -483,6 +483,13 @@ static GMQCC_INLINE ast_expression *fold_op_div(fold_t *fold, ast_value *a, ast_
return fold_constgen_float(fold, fold_immvalue_float(a) / fold_immvalue_float(b));
else
return (ast_expression*)fold->imm_float[3]; /* inf */
} else if (fold_can_1(b)) {
return (ast_expression*)ast_binary_new(
fold_ctx(fold),
INSTR_MUL_F,
(ast_expression*)a,
fold_constgen_float(fold, 1.0f / fold_immvalue_float(b))
);
}
} else if (isvector(a)) {
if (fold_can_2(a, b)) {

6
misc/xonotic_export.sh Normal file → Executable file
View file

@ -35,8 +35,14 @@ rm -f i18n-guide.txt
rm -rf server-testcase
rm -f Makefile
rm -f *.src
rm -f qccversion.*
echo "complete"
cat client/progs.src | sed "s/\.\.\///" > csprogs.src
cat server/progs.src | sed "s/\.\.\///" > progs.src
cat menu/progs.src | sed "s/\.\.\///" > menu.src
echo -n "creating zip archive ... "
zip -r -9 ../xonotic.zip * > /dev/null
echo "complete"