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:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user