From: Steven Bosscher Date: Sun, 31 Aug 2003 13:59:33 +0000 (+0000) Subject: re PR middle-end/11823 (Optimizing large jump tables for switch statements) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=9e4b13a79edbe22a7a4d20f0d4aefe59b9b2380b;p=gcc.git re PR middle-end/11823 (Optimizing large jump tables for switch statements) PR middle-end/11823 * stmt.c (expand_end_case_type): Only use jump tables for dense switch statements when optimizing for size. Co-Authored-By: Roger Sayle From-SVN: r70959 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 790f581ea98..422ceb9fd2c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2003-08-31 Steven Bosscher + Roger Sayle + + PR middle-end/11823 + * stmt.c (expand_end_case_type): Only use jump tables for dense + switch statements when optimizing for size. + 2003-08-31 Olivier Hainque * builtins.c (expand_builtin_setjmp): Use emit_jump to jump around diff --git a/gcc/stmt.c b/gcc/stmt.c index 54c93be7909..9a8c0bc6cb9 100644 --- a/gcc/stmt.c +++ b/gcc/stmt.c @@ -5419,7 +5419,8 @@ expand_end_case_type (tree orig_index, tree orig_type) because we can optimize it. */ else if (count < case_values_threshold () - || compare_tree_int (range, 10 * count) > 0 + || compare_tree_int (range, + (optimize_size ? 3 : 10) * count) > 0 /* RANGE may be signed, and really large ranges will show up as negative numbers. */ || compare_tree_int (range, 0) < 0