Simplify after DCE (Multiple Passes)
- 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
Assessment
This issue has not been assessed yet.