------- Additional Comments From law at redhat dot com 2004-11-11 21:42 ------- GRRR. I thought I had settled on a scheme that would address the SWITCH_EXPR representation issues with 15524. It was a combination of a hash table to get us from an edge to a CASE_LABEL_EXPR and the "CASE_LEADER" concept from Kazu.
It works amazingly well on 15524 -- cuts compile-time by just over 70% and should have been suitable for more general code. The problem is we don't have a way to get notification of edge deletions and there are too many places where we can get into remove_edge without first going through ssa_remove_edge, which is were I had put my code to handle edge removals from the hash table. It looks like we might be stuck building the hash table lazily in the CFG cleanup code and when splitting critical edges. Ugh. I may go forward with the CASE_LEADER changes separately -- they should give a measurable benefit, and can work with or without the hash table to map from edge to CASE_LABEL_EXPRs. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15524