patches/gcc/4.4.2/190-flatten-switch-stmt-00.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Wed May 18 23:00:46 2011 +0200 (2011-05-18)
changeset 2467 200836977ce6
parent 1544 2228ea3f6b79
permissions -rw-r--r--
config: rename variables that are arrays

Make it explicit that a variable is an array bu the name of the variable.
It will be used later when .config gets munged to allow both multiple
arguments and arguments with spaces at the same time to be passed from the
configuration down to the build scripts.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
yann@1393
     1
diff -durN gcc-4.4.0.orig/gcc/stmt.c gcc-4.4.0/gcc/stmt.c
yann@1393
     2
--- gcc-4.4.0.orig/gcc/stmt.c	2009-02-27 20:49:42.000000000 +0100
yann@1393
     3
+++ gcc-4.4.0/gcc/stmt.c	2009-05-27 21:38:21.000000000 +0200
yann@1393
     4
@@ -2376,7 +2376,11 @@
yann@1393
     5
 	  use_cost_table
yann@1393
     6
 	    = (TREE_CODE (orig_type) != ENUMERAL_TYPE
yann@1393
     7
 	       && estimate_case_costs (case_list));
yann@1393
     8
-	  balance_case_nodes (&case_list, NULL);
yann@1393
     9
+	  /* When optimizing for size, we want a straight list to avoid
yann@1393
    10
+	     jumps as much as possible. This basically creates an if-else
yann@1393
    11
+	     chain.  */
yann@1393
    12
+	  if (!optimize_size)
yann@1393
    13
+	    balance_case_nodes (&case_list, NULL);
yann@1393
    14
 	  emit_case_nodes (index, case_list, default_label, index_type);
yann@1393
    15
 	  if (default_label)
yann@1393
    16
 	    emit_jump (default_label);
yann@1393
    17
@@ -2942,6 +2946,7 @@
yann@1393
    18
 	    {
yann@1393
    19
 	      if (!node_has_low_bound (node, index_type))
yann@1393
    20
 		{
yann@1393
    21
+		  if (!optimize_size) /* don't jl to the .default_label. */
yann@1393
    22
 		  emit_cmp_and_jump_insns (index,
yann@1393
    23
 					   convert_modes
yann@1393
    24
 					   (mode, imode,