babel / babel/minify

Simplify after DCE (Multiple Passes)

Open
#422 0 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
JavaScript
Stars
4.4k
Forks
217
PR merge metrics
No merged PRs in 30d

Description

Related #61 , #317

Right now DCE is run in a single pass at the Program.exit. But this blocks other optimisations that could be performed after DCE - such as simplify.

an example - from #420 ... if_return optimisation (simplify) after DCE is not happening here because DCE is at the end, and requires a second pass.

Also, if the function is an arrow function, after DCE, an arrow function with a single return statement could be further simplified to remove the BlockStatement, which is also not happening now because of the same reasons.

```js
// input
function foo(...args) {
if (!i) return;
else {
const x = {args};
while(false);
return x;
}
};

// out
function foo(...a) {
if (!i) return;
return { args: a };
}

// could reduce to
function foo(...a) {
if (i) return {args: a};
}
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.