[PATCH] [llgo] irgen: generate switch instructions
peter at pcc.me.uk
Wed Jan 7 11:05:13 PST 2015
> adding a check to each "ssa.If" would mean we have a performance hit in the frontend for each If instruction
I very much doubt that the performance impact would be measurable. Remember that the switch analysis has to look at each if instruction anyway.
Regardless, I agree that both approaches are a little messy, and I can't see a neater way without modifying go/ssa, so LGTM.
> I don't know if this will ever be necessary, but another option is for llgo to grow its own IR on top of go/ssa. I'd rather not go there for this, though.
Agreed. FWIW, the long term direction I'd like to see is attempting to extend go/ssa with what we need (in this particular case, a native switch instruction).
> I did look to see if there was an existing pass, but again I couldn't see anything that looked relevant
If you grep for `SimplifyCFGOpt::FoldValueComparisonIntoPredecessors` you should find something.
> Geo-mean improvement of 0.49% (0.23% - 0.75% @ 95% CI)
Great! I'm a little surprised that we can do better than LLVM on its own, but maybe I don't understand what the simplifycfg code is doing.
More information about the llvm-commits