rollup/rollup

Function body being mistakenly optimized away

u9g opened this issue · 2 comments

u9g commented

Rollup Version

rollup v4.17.2

Operating System (or Browser)

Browser

Node Version (if applicable)

No response

Link To Reproduction

https://rollupjs.org/repl/?version=4.17.2&shareable=JTdCJTIyZXhhbXBsZSUyMiUzQW51bGwlMkMlMjJtb2R1bGVzJTIyJTNBJTVCJTdCJTIyY29kZSUyMiUzQSUyMmltcG9ydCUyMCU3QiUyMGNvbXBhcmUlMkMlMjBMdCUyQyUyMEd0JTJDJTIwRXElMjAlN0QlMjBmcm9tJTIwJTVDJTIyLiUyRm1hdGhzLmpzJTVDJTIyJTNCJTVDbiU1Q25leHBvcnQlMjBmdW5jdGlvbiUyMG1haW4oKSUyMCU3QiU1Q24lMjAlMjBjb25zb2xlLmxvZyhjb21wYXJlKDAlMkMlMjAwJTIwJTJCJTIwNyklMjBpbnN0YW5jZW9mJTIwR3QpJTNCJTVDbiU3RCU1Q24lMjIlMkMlMjJpc0VudHJ5JTIyJTNBdHJ1ZSUyQyUyMm5hbWUlMjIlM0ElMjJtYWluLmpzJTIyJTdEJTJDJTdCJTIyY29kZSUyMiUzQSUyMmV4cG9ydCUyMGNsYXNzJTIwTHQlMjAlN0IlN0QlNUNuJTVDbmV4cG9ydCUyMGNsYXNzJTIwRXElMjAlN0IlN0QlNUNuJTVDbmV4cG9ydCUyMGNsYXNzJTIwR3QlMjAlN0IlN0QlNUNuJTVDbmV4cG9ydCUyMGZ1bmN0aW9uJTIwY29tcGFyZShhJTJDJTIwYiklMjAlN0IlNUNuJTIwJTIwbGV0JTIwJTI0JTIwJTNEJTIwYSUyMCUzRCUzRCUzRCUyMGIlM0IlNUNuJTIwJTIwaWYlMjAoJTI0KSUyMCU3QiU1Q24lMjAlMjAlMjAlMjByZXR1cm4lMjBuZXclMjBFcSgpJTNCJTVDbiUyMCUyMCU3RCUyMGVsc2UlMjAlN0IlNUNuJTIwJTIwJTIwJTIwbGV0JTIwJTI0MSUyMCUzRCUyMGElMjAlM0MlMjBiJTNCJTVDbiUyMCUyMCUyMCUyMGlmJTIwKCUyNDEpJTIwJTdCJTVDbiUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMG5ldyUyMEx0KCklM0IlNUNuJTIwJTIwJTIwJTIwJTdEJTIwZWxzZSUyMCU3QiU1Q24lMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjBuZXclMjBHdCgpJTNCJTVDbiUyMCUyMCUyMCUyMCU3RCU1Q24lMjAlMjAlN0QlNUNuJTdEJTVDbiUyMiUyQyUyMmlzRW50cnklMjIlM0FmYWxzZSUyQyUyMm5hbWUlMjIlM0ElMjJtYXRocy5qcyUyMiU3RCU1RCUyQyUyMm9wdGlvbnMlMjIlM0ElN0IlMjJvdXRwdXQlMjIlM0ElN0IlMjJmb3JtYXQlMjIlM0ElMjJlcyUyMiU3RCUyQyUyMnRyZWVzaGFrZSUyMiUzQXRydWUlN0QlN0Q=

Expected Behaviour

Properly transpile the body of the compare function, and keep Gt, Lt, Eq

Actual Behaviour

most of the compare function is mistakenly optimized away and only new Lt() remains

u9g commented

This is a recent regression from v4.16.4 to v4.17.0

As the arguments compare(0, 0 + 7) here are all known at compile time, we can optimize some code inside function away. If the arguments here are unknown, for example repl, the function body will not be optimized.

Also, as v4.17.0 has a bug for function parameter tracking, there may be some cases compare is called with a unknown value but the compare is not deoptimized properly, can you confirm if v4.17.2 fix your problem?