aboutsummaryrefslogtreecommitdiff
path: root/gcc/stmt.c
diff options
context:
space:
mode:
authorSteven Bosscher <steven@gcc.gnu.org>2003-08-31 13:59:33 +0000
committerRoger Sayle <sayle@gcc.gnu.org>2003-08-31 13:59:33 +0000
commit9e4b13a79edbe22a7a4d20f0d4aefe59b9b2380b (patch)
tree2943e960a71d6eeaa5a2638ab20272ec65e903d9 /gcc/stmt.c
parent7c66d5f5f91c0e83d53ad9f9fbc129675d0dea08 (diff)
downloadgcc-9e4b13a79edbe22a7a4d20f0d4aefe59b9b2380b.zip
gcc-9e4b13a79edbe22a7a4d20f0d4aefe59b9b2380b.tar.gz
gcc-9e4b13a79edbe22a7a4d20f0d4aefe59b9b2380b.tar.bz2
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 <roger@eyesopen.com> From-SVN: r70959
Diffstat (limited to 'gcc/stmt.c')
-rw-r--r--gcc/stmt.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/stmt.c b/gcc/stmt.c
index 54c93be..9a8c0bc 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