[LLVMdev] Quirk in switch lowering

Jasper Neumann jasper.neumann at web.de
Sat Jan 11 08:53:25 PST 2014

Hello Anton!

 > Some of the behavior seen there was for a purpose,
 > like the heuristics to overcome different problems.
 > I have to remember all the details :)

I have read your article "Improving Switch Lowering for The LLVM 
Compiler System" and thought that the selection mechanism works out 
well; by chance however I found that this mechanism does not work as 
designed if labels are sufficiently sparse and can effectively create an 
else-if chain because separated (single) marginal (i.e. first and last) 
labels have a too high weight.
The central point might be: What is the density of a single label?
It might also be that the logarithmic metric is not always working well.

My simple modification however seems to be a solution to this special 
problem; until now I have not found any malicious secondary effects 
(collateral damages).

By the way: I have submitted the patch to llvm-commits at cs.uiuc.edu few 
minutes ago; perhaps you are the person with the best knowledge for this 

I'm currently working on switch lowering using hashing which can fully 
replace the jump table method. It works quite good by now but I will 
have to prepare a ton of documentation and test stuff. Some of the 
remaining problems can easily be solved later.
Is anybody interested in beta-testing my patches therefor?

Best regards
Jasper Neumann

More information about the llvm-dev mailing list