diff options
author | Christoph Bumiller <[email protected]> | 2014-02-19 04:00:34 +0100 |
---|---|---|
committer | Christoph Bumiller <[email protected]> | 2014-02-22 13:17:23 +0100 |
commit | 1f4bfb8797d2f851f5e113f85bcbff519977fd99 (patch) | |
tree | 9176bac0e592783798ad67d3efc8589f8c8ea582 /src/gallium/drivers/nouveau/codegen | |
parent | 7770b026937948e1be3ed55f9ff97e6521c500df (diff) |
nv50/ir/ra: fix SpillCodeInserter::offsetSlot usage
We were turning non-memory spill slots into NULL.
Cc: 10.1 <[email protected]>
Diffstat (limited to 'src/gallium/drivers/nouveau/codegen')
-rw-r--r-- | src/gallium/drivers/nouveau/codegen/nv50_ir_ra.cpp | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_ra.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_ra.cpp index dd3beb701ce..1ace9f5fcbd 100644 --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_ra.cpp +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_ra.cpp @@ -284,7 +284,7 @@ public: bool run(const std::list<ValuePair>&); Symbol *assignSlot(const Interval&, const unsigned int size); - Symbol *offsetSlot(Symbol *, const LValue *); + Value *offsetSlot(Value *, const LValue *); inline int32_t getStackSize() const { return stackSize; } private: @@ -1468,12 +1468,12 @@ SpillCodeInserter::assignSlot(const Interval &livei, const unsigned int size) return slot.sym; } -Symbol * -SpillCodeInserter::offsetSlot(Symbol *base, const LValue *lval) +Value * +SpillCodeInserter::offsetSlot(Value *base, const LValue *lval) { - if (!base || !lval->compound || (lval->compMask & 0x1)) + if (!lval->compound || (lval->compMask & 0x1)) return base; - Symbol *slot = cloneShallow(func, base); + Value *slot = cloneShallow(func, base); slot->reg.data.offset += (ffs(lval->compMask) - 1) * lval->reg.size; slot->reg.size = lval->reg.size; @@ -1486,7 +1486,7 @@ SpillCodeInserter::spill(Instruction *defi, Value *slot, LValue *lval) { const DataType ty = typeOfSize(lval->reg.size); - slot = offsetSlot(slot->asSym(), lval); + slot = offsetSlot(slot, lval); Instruction *st; if (slot->reg.file == FILE_MEMORY_LOCAL) { @@ -1507,7 +1507,7 @@ SpillCodeInserter::unspill(Instruction *usei, LValue *lval, Value *slot) { const DataType ty = typeOfSize(lval->reg.size); - slot = offsetSlot(slot->asSym(), lval); + slot = offsetSlot(slot, lval); lval = cloneShallow(func, lval); Instruction *ld; |