Mark spill and fill as can_store and can_load.

This allows GVN to avoid hoisting them. These will be to coarse for
things that want more precise dependence information, however we can
work that out when we build such things.
This commit is contained in:
Dan Gohman
2017-10-19 13:11:33 -07:00
parent cc0bb70c5d
commit 7c9b9e3d27
2 changed files with 17 additions and 2 deletions

View File

@@ -501,7 +501,7 @@ spill = Instruction(
This instruction behaves exactly like :inst:`copy`, but the result
value is assigned to a spill slot.
""",
ins=x, outs=a)
ins=x, outs=a, can_store=True)
fill = Instruction(
'fill', r"""
@@ -510,7 +510,7 @@ fill = Instruction(
This instruction behaves exactly like :inst:`copy`, but creates a new
SSA value for the spilled input value.
""",
ins=x, outs=a)
ins=x, outs=a, can_load=True)
src = Operand('src', regunit)
dst = Operand('dst', regunit)