PR middle-end/11823
authorsayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 31 Aug 2003 13:59:33 +0000 (13:59 +0000)
committersayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 31 Aug 2003 13:59:33 +0000 (13:59 +0000)
* stmt.c (expand_end_case_type): Only use jump tables for dense
switch statements when optimizing for size.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@70959 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/stmt.c

index 790f581..422ceb9 100644 (file)
@@ -1,3 +1,10 @@
+2003-08-31  Steven Bosscher  <steven@gcc.gnu.org>
+           Roger Sayle  <roger@eyesopen.com>
+
+       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  <hainque@act-europe.fr>
 
         * builtins.c (expand_builtin_setjmp): Use emit_jump to jump around
index 54c93be..9a8c0bc 100644 (file)
@@ -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