From 5b9992075c7127ff4e2b5361dd57b732f86b97ad Mon Sep 17 00:00:00 2001 From: Joe Savona Date: Wed, 26 Apr 2023 11:27:41 -0700 Subject: [PATCH] Driveby optimization of DCE Lift a constant evaluation out of a loop --- compiler/forget/src/Optimization/DeadCodeElimination.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compiler/forget/src/Optimization/DeadCodeElimination.ts b/compiler/forget/src/Optimization/DeadCodeElimination.ts index c7a9b3272e..bc6aabafe9 100644 --- a/compiler/forget/src/Optimization/DeadCodeElimination.ts +++ b/compiler/forget/src/Optimization/DeadCodeElimination.ts @@ -33,13 +33,13 @@ export function deadCodeElimination(fn: HIRFunction): void { // of the blocks const hasLoop = hasBackEdge(fn); + const reversedBlocks = [...fn.body.blocks.values()].reverse(); let size = state.count; do { size = state.count; // Iterate blocks in postorder (successors before predecessors, excepting loops) // to find usages before declarations - const reversedBlocks = [...fn.body.blocks.values()].reverse(); for (const block of reversedBlocks) { for (const operand of eachTerminalOperand(block.terminal)) { state.reference(operand.identifier);