LLVM IR is built for hardware code generation. V8's TurboFan is built
for JIT performance. Neither models JavaScript semantics in enough
detail to fold the obfuscation primitives directly, and neither is
designed for inputs that actively resist analysis.
The devirt.dev IR represents JavaScript directly: prototype chains,
type coercion edges, exception control flow, observable side effects.
Memory SSA and side-effect tracking sit in the core. The passes do not
recognize obfuscation. They optimize the IR, and the obfuscation
happens to not survive.