We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent b14e56e commit 93ec53bCopy full SHA for 93ec53b
lib/syntax_tree/yarv/sea_of_nodes.rb
@@ -391,6 +391,30 @@ def cleanup_insn_nodes
391
connect_over(node)
392
remove(node)
393
end
394
+ when Pop
395
+ from = node.inputs.find { |edge| edge.type == :data }.from
396
+ next unless from.is_a?(InsnNode)
397
+
398
+ removed =
399
+ if from.inputs.empty? && from.outputs.size == 1
400
+ remove(from)
401
+ true
402
+ elsif from.insn.is_a?(Dup)
403
+ connect_over(from)
404
405
406
+ new_edge = node.inputs.last
407
+ new_edge.from.outputs.delete(new_edge)
408
+ node.inputs.delete(new_edge)
409
410
+ else
411
+ false
412
+ end
413
414
+ if removed
415
+ connect_over(node)
416
+ remove(node)
417
418
419
420
0 commit comments