Created attachment 221578 [details]
Created attachment 221579 [details]
This just reverts LLVM r138841, and then updates the code a bit to various internal API changes.
Comment on attachment 221578 [details]
Comment on attachment 221579 [details]
Seems like it would be best to get this into LLVM trunk first.
(In reply to comment #4)
> (From update of attachment 221579 [details])
> Seems like it would be best to get this into LLVM trunk first.
Yeah - that's definitely a blocker.
At the time that they removed TailDup there seemed to be multiple good justifications for doing so:
- It de-SSAifies the IR in a weird non-canonical way.
- It has demonstrably bad heuristics for important things like switch.
- It was unused in LLVM.
So it may be a challenge to get it pushed back in. I suspect that this optimization is only good for JS because JS is so weird.
We wrote our own compiler, and it has taildup.
*** This bug has been marked as a duplicate of bug 150279 ***