------- Additional Comments From s dot bosscher at student dot tudelft dot nl 2004-11-01 15:03 ------- Subject: RE: [4.0 Regression] jump threading on trees is slow with switch statements with large # of cases
I created a special function for the split_critical_edges pass to split edges out of SWITCH_EXPR blocks in linear time wrt. the number of outgoing edges E and the number of case labels C. The function makes the edge splitting take O(E+2C) time, instead of E*C which is effectively quadratic. The effect for the test case of this PR is huge. The effect on everything else (for example insn-attrtab) is not measurable. Dunno if this is worth the trouble. The patch I have is a hack and the real solution is using a smarter representation for the case label targets. I'll try some other code and perhaps post the patch. We might want to just do it as a hack on the gcc 4.0 release branch... -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15524