@@ -649,7 +649,6 @@ function lines_required!(isrequired::AbstractVector{Bool}, objs, src::CodeInfo,
649
649
changed |= add_named_dependencies! (isrequired, edges, objs, norequire)
650
650
651
651
# Add control-flow
652
- changed |= add_loops! (isrequired, cfg)
653
652
changed |= add_control_flow! (isrequired, src, cfg, postdomtree)
654
653
655
654
# So far, everything is generic graph traversal. Now we add some domain-specific information
731
730
732
731
# # Add control-flow
733
732
734
- # Mark loops that contain evaluated statements
735
- function add_loops! (isrequired, cfg)
736
- changed = false
737
- for (ibb, bb) in enumerate (cfg. blocks)
738
- needed = false
739
- for ibbp in bb. preds
740
- # Is there a backwards-pointing predecessor, and if so are there any required statements between the two?
741
- ibbp > ibb || continue # not a loop-block predecessor
742
- r, rp = rng (bb), rng (cfg. blocks[ibbp])
743
- r = first (r): first (rp)- 1
744
- needed |= any (view (isrequired, r))
745
- end
746
- if needed
747
- # Mark the final statement of all predecessors
748
- for ibbp in bb. preds
749
- rp = rng (cfg. blocks[ibbp])
750
- changed |= ! isrequired[last (rp)]
751
- isrequired[last (rp)] = true
752
- end
753
- end
754
- end
755
- return changed
756
- end
757
-
758
733
using Core: CodeInfo
759
734
using Core. Compiler: CFG, BasicBlock, compute_basic_blocks
760
735
0 commit comments