[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
problem.
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