mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2025-02-20 18:52:28 +00:00
[qfcc] Cast functions to ints for comparison
Yet more (non-)wasted instructions.
This commit is contained in:
parent
61727941fd
commit
5ba6bf02e8
1 changed files with 18 additions and 2 deletions
|
@ -48,6 +48,7 @@ typedef struct {
|
|||
|
||||
static expr_t *pointer_arithmetic (int op, expr_t *e1, expr_t *e2);
|
||||
static expr_t *pointer_compare (int op, expr_t *e1, expr_t *e2);
|
||||
static expr_t *func_compare (int op, expr_t *e1, expr_t *e2);
|
||||
static expr_t *inverse_multiply (int op, expr_t *e1, expr_t *e2);
|
||||
static expr_t *double_compare (int op, expr_t *e1, expr_t *e2);
|
||||
|
||||
|
@ -172,8 +173,8 @@ static expr_type_t field_field[] = {
|
|||
};
|
||||
|
||||
static expr_type_t func_func[] = {
|
||||
{EQ, &type_int},
|
||||
{NE, &type_int},
|
||||
{EQ, 0, 0, 0, func_compare},
|
||||
{NE, 0, 0, 0, func_compare},
|
||||
{0, 0}
|
||||
};
|
||||
|
||||
|
@ -696,6 +697,21 @@ pointer_compare (int op, expr_t *e1, expr_t *e2)
|
|||
return e;
|
||||
}
|
||||
|
||||
static expr_t *
|
||||
func_compare (int op, expr_t *e1, expr_t *e2)
|
||||
{
|
||||
expr_t *e;
|
||||
|
||||
if (options.code.progsversion < PROG_VERSION) {
|
||||
e = new_binary_expr (op, e1, e2);
|
||||
} else {
|
||||
e = new_binary_expr (op, new_alias_expr (&type_int, e1),
|
||||
new_alias_expr (&type_int, e2));
|
||||
}
|
||||
e->e.expr.type = &type_int;
|
||||
return e;
|
||||
}
|
||||
|
||||
static expr_t *
|
||||
inverse_multiply (int op, expr_t *e1, expr_t *e2)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue