[LLVMdev] Inserting a custom switch instruction implementation in backend

Marcello Maggioni marcello at codeplay.com
Sat Sep 21 04:43:27 PDT 2013


in implementing a backend for a target we work on, I ended up needing to 
lower the switch instruction in a very specific way that is quite 
different from the standard llvm way with the decision trees.

The custom implementation wants to get rid of the decision blocks that 
llvm generates between the actual cases basic blocks and the switch root 
block. What I do currently is basically deleting these blocks manually 
and moving all the successors (updating the PHIs) to the switch root 
block and splicing the instructions in the decision blocks into the 
switch root block manually and then proceed to the removal of these blocks.

This seems to work fine, but is a solution that I not like very much. I 
would prefer being able to lower the switch instructions in my own way 
directly instead of having to let llvm do it its own way and "morph" the 
result into my own.

There is a clean way to custom lower the switch instruction in the 
backend without substituting the entire SelectionDAGBuilder?


More information about the llvm-dev mailing list