From 9e4b13a79edbe22a7a4d20f0d4aefe59b9b2380b Mon Sep 17 00:00:00 2001 From: Steven Bosscher Date: Sun, 31 Aug 2003 13:59:33 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 7 +++++++ gcc/stmt.c | 3 ++- 2 files changed, 9 insertions(+), 1 deletion(-) 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