Why can't Rust use LLVM FastIsel


Is there any technical reason why Rust isn’t using FastIsel in LLVM?

It’d be nice to get compile time benefits from using it.


I think rustc just tends to emit code that isn’t handled by FastISel, so it falls back to the slower SelectionDAG. Or is it not using FastISel at all?


The biggest problem here is that FastISel does not support the invoke instruction, which Rust uses for unwinding.

According to sunfish, implementing it would be at least a month’s worth of work in LLVM.


Ah ok. I was guessing if it would be related to unwinding. I’m sad, but I understand it’s not worth the effort at this moment in Rust’s life.

Thank you.


It doesn’t use FastISe at all.