Why can't Rust use LLVM FastIsel


#1

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.


#2

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?


#3

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.


#4

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.


#5

It doesn’t use FastISe at all.


#6