Use LLVMs ADTs that improve the compile time of this pass.