mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2025-02-17 01:11:45 +00:00
[qfcc] Analyze tempop pointers in move/memset statements
This commit is contained in:
parent
6ec92fb83b
commit
fa2cbc72d8
1 changed files with 21 additions and 13 deletions
|
@ -1054,20 +1054,28 @@ static int
|
|||
flow_analyize_pointer_operand (operand_t *ptrop, set_t *def,
|
||||
operand_t *operands[4])
|
||||
{
|
||||
if (ptrop->op_type == op_value
|
||||
&& ptrop->o.value->lltype == ev_pointer
|
||||
&& ptrop->o.value->v.pointer.def) {
|
||||
operand_t *op;
|
||||
def_t *alias;
|
||||
if (ptrop->op_type == op_value && ptrop->o.value->lltype == ev_pointer) {
|
||||
ex_pointer_t *ptr = &ptrop->o.value->v.pointer;
|
||||
alias = alias_def (ptr->def, ptr->type, ptr->val);
|
||||
op = def_operand (alias, ptr->type, ptrop->expr);
|
||||
flow_add_op_var (def, op, 0);
|
||||
if (operands)
|
||||
operands[0] = op;
|
||||
else
|
||||
free_operand (op);
|
||||
return 1;
|
||||
operand_t *op = 0;
|
||||
if (ptrop->o.value->v.pointer.def) {
|
||||
def_t *alias;
|
||||
alias = alias_def (ptr->def, ptr->type, ptr->val);
|
||||
op = def_operand (alias, ptr->type, ptrop->expr);
|
||||
}
|
||||
if (ptrop->o.value->v.pointer.tempop) {
|
||||
op = ptrop->o.value->v.pointer.tempop;
|
||||
}
|
||||
if (op) {
|
||||
flow_add_op_var (def, op, 0);
|
||||
if (operands) {
|
||||
operands[0] = op;
|
||||
} else {
|
||||
if (op->op_type != op_temp) {
|
||||
free_operand (op);
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue