forked from M-Labs/artiq
transforms.interleaver: don't fail on delay-free loops/conditionals.
This commit is contained in:
parent
69cdeaf706
commit
2570932264
|
@ -110,8 +110,14 @@ class Interleaver:
|
||||||
assert False
|
assert False
|
||||||
|
|
||||||
source_terminator = source_block.terminator()
|
source_terminator = source_block.terminator()
|
||||||
if isinstance(source_terminator, (ir.Parallel, ir.Branch)):
|
if isinstance(source_terminator, ir.Parallel):
|
||||||
source_terminator.replace_with(ir.Branch(source_terminator.target()))
|
source_terminator.replace_with(ir.Branch(source_terminator.target()))
|
||||||
|
elif isinstance(source_terminator, ir.Branch):
|
||||||
|
pass
|
||||||
|
elif isinstance(source_terminator, ir.BranchIf):
|
||||||
|
# Skip a delay-free loop/conditional
|
||||||
|
source_block = postdom_tree.immediate_dominator(source_block)
|
||||||
|
assert (source_block is not None)
|
||||||
elif isinstance(source_terminator, ir.Return):
|
elif isinstance(source_terminator, ir.Return):
|
||||||
break
|
break
|
||||||
elif isinstance(source_terminator, ir.Delay):
|
elif isinstance(source_terminator, ir.Delay):
|
||||||
|
|
Loading…
Reference in New Issue