From db6556348d92709dfaa930251b5aa0fd5cb740c3 Mon Sep 17 00:00:00 2001 From: Jan Hubicka Date: Fri, 11 Oct 2002 22:26:50 +0200 Subject: re PR c/7344 (performance regression on huge case statements) * calls.c (expand_call): Simplify noreturn call. PR c/7344 * cfgbuild.c (make_edges): Create edge cache when we do have large jumptable. (do_tablejump): Note size of maximal jumptable. * function.c (prepare_function_start): Zero out size. * function.h (function): Add max_jumptable_ents. * cfgcleanup.c (insn_match_p): Verify sibcall flag for calls to. From-SVN: r58063 --- gcc/cfgbuild.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gcc/cfgbuild.c') diff --git a/gcc/cfgbuild.c b/gcc/cfgbuild.c index 97552f9..9ac758b 100644 --- a/gcc/cfgbuild.c +++ b/gcc/cfgbuild.c @@ -292,7 +292,7 @@ make_edges (label_value_list, min, max, update_p) /* Heavy use of computed goto in machine-generated code can lead to nearly fully-connected CFGs. In that case we spend a significant amount of time searching the edge lists for duplicates. */ - if (forced_labels || label_value_list) + if (forced_labels || label_value_list || cfun->max_jumptable_ents > 100) { edge_cache = sbitmap_vector_alloc (last_basic_block, last_basic_block); sbitmap_vector_zero (edge_cache, last_basic_block); -- cgit v1.1