mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2024-11-30 08:00:51 +00:00
Use only the real temp for daglabels.
This fixes the bogus temps for "*to = *from++;", but qfcc ices due to the operand types being lost. It seems alias operands need to be resurrected, if only for code output by dags.
This commit is contained in:
parent
50b0bd0b95
commit
8452f69a21
1 changed files with 4 additions and 0 deletions
|
@ -153,6 +153,8 @@ operand_label (dag_t *dag, operand_t *op)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (op->op_type == op_temp) {
|
if (op->op_type == op_temp) {
|
||||||
|
while (op->o.tempop.alias)
|
||||||
|
op = op->o.tempop.alias;
|
||||||
if (op->o.tempop.daglabel)
|
if (op->o.tempop.daglabel)
|
||||||
return op->o.tempop.daglabel;
|
return op->o.tempop.daglabel;
|
||||||
label = new_label (dag);
|
label = new_label (dag);
|
||||||
|
@ -214,6 +216,8 @@ dag_node (operand_t *op)
|
||||||
if (def->daglabel)
|
if (def->daglabel)
|
||||||
node = def->daglabel->dagnode;
|
node = def->daglabel->dagnode;
|
||||||
} else if (op->op_type == op_temp) {
|
} else if (op->op_type == op_temp) {
|
||||||
|
while (op->o.tempop.alias)
|
||||||
|
op = op->o.tempop.alias;
|
||||||
if (op->o.tempop.daglabel)
|
if (op->o.tempop.daglabel)
|
||||||
node = op->o.tempop.daglabel->dagnode;
|
node = op->o.tempop.daglabel->dagnode;
|
||||||
} else if (op->op_type == op_value) {
|
} else if (op->op_type == op_value) {
|
||||||
|
|
Loading…
Reference in a new issue