dillon1000/react

Commit

Improve DCE to handle unused loop phis

Improves DCE, using fixpoint iteration to detect values that are updated across 
loops but otherwise never read. There is still some further optimization we can 
do (the dce-loop case could optimize out `y`), but this seems like plenty for 
now. 

Actually, we probably have to add some return statements to our fixtures before 
landing this, because otherwise most of the code goes away.
Browse files
Changed paths32 files
First-parent comparison
M compiler/forget/src/Optimization/DeadCodeElimination.ts ModifiedM compiler/forget/src/__tests__/fixtures/hir/alias-while.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/assignment-variations.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/constant-propagation-phi.expect.md ModifiedA compiler/forget/src/__tests__/fixtures/hir/dce-loop.expect.md AddedA compiler/forget/src/__tests__/fixtures/hir/dce-loop.js AddedM compiler/forget/src/__tests__/fixtures/hir/destructuring-assignment.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/destructuring.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/infer-phi-primitive.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/obj-literal-cached-in-if-else.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/obj-literal-mutated-after-if-else.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/primitive-alias-mutate.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/reverse-postorder.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/ssa-call-jsx-2.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/ssa-complex-multiple-if.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/ssa-complex-single-if.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/ssa-if-else.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/ssa-nested-loops-no-reassign.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/ssa-nested-partial-phi.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/ssa-sibling-phis.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/ssa-simple-phi.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/ssa-simple.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/ssa-single-if.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/ssa-switch.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/ssa-while-no-reassign.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/switch-with-fallthrough.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/type-args-test-binary-operator.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/type-binary-operator.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/type-field-load.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/type-test-field-load-binary-op.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/type-test-primitive.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/type-test-return-type-inference.expect.md Modified
Patch

Files changed

Rendering syntax-highlighted changes…