Original patch from: ../4.3.2/160-flatten-switch-stmt-00.patch

-= BEGIN original header =-
Original patch from gentoo: gentoo/src/patchsets/gcc/4.3.1/gentoo/18_all_904-flatten-switch-stmt-00.patch
http://gcc.gnu.org/ml/gcc-patches/2007-04/msg00927.html

Hi,

The attached patch makes sure that we create smaller object code for
simple switch statements. We just make sure to flatten the switch
statement into an if-else chain, basically.

This fixes a size-regression as compared to gcc-3.4, as can be seen
below.

2007-04-15  Bernhard Fischer  <..>

	* stmt.c (expand_case): Do not create a complex binary tree when
	optimizing for size but rather use the simple ordered list.
	(emit_case_nodes): do not emit jumps to the default_label when
	optimizing for size.

Not regtested so far.
Comments?

Attached is the test switch.c mentioned below.

$ for i in 2.95 3.3 3.4 4.0 4.1 4.2.orig-HEAD 4.3.orig-HEAD 4.3-HEAD;do
gcc-$i  -DCHAIN -Os -o switch-CHAIN-$i.o -c switch.c ;done
$ for i in 2.95 3.3 3.4 4.0 4.1 4.2.orig-HEAD 4.3.orig-HEAD 4.3-HEAD;do
gcc-$i  -UCHAIN -Os -o switch-$i.o -c switch.c ;done

$ size switch-*.o
   text	   data	    bss	    dec	    hex	filename
    169	      0	      0	    169	     a9	switch-2.95.o
    115	      0	      0	    115	     73	switch-3.3.o
    103	      0	      0	    103	     67	switch-3.4.o
    124	      0	      0	    124	     7c	switch-4.0.o
    124	      0	      0	    124	     7c	switch-4.1.o
    124	      0	      0	    124	     7c	switch-4.2.orig-HEAD.o
     95	      0	      0	     95	     5f	switch-4.3-HEAD.o
    124	      0	      0	    124	     7c	switch-4.3.orig-HEAD.o
    166	      0	      0	    166	     a6	switch-CHAIN-2.95.o
    111	      0	      0	    111	     6f	switch-CHAIN-3.3.o
     95	      0	      0	     95	     5f	switch-CHAIN-3.4.o
     95	      0	      0	     95	     5f	switch-CHAIN-4.0.o
     95	      0	      0	     95	     5f	switch-CHAIN-4.1.o
     95	      0	      0	     95	     5f	switch-CHAIN-4.2.orig-HEAD.o
     95	      0	      0	     95	     5f	switch-CHAIN-4.3-HEAD.o
     95	      0	      0	     95	     5f	switch-CHAIN-4.3.orig-HEAD.o


Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment; filename="gcc-4.3.gcc-flatten-switch-stmt.00.diff"

-= END original header =-

diff -durN gcc-4.3.3.orig/gcc/stmt.c gcc-4.3.3/gcc/stmt.c
--- gcc-4.3.3.orig/gcc/stmt.c	2008-05-09 20:12:13.000000000 +0200
+++ gcc-4.3.3/gcc/stmt.c	2009-01-27 22:19:28.000000000 +0100
@@ -2509,7 +2509,11 @@
 	  use_cost_table
 	    = (TREE_CODE (orig_type) != ENUMERAL_TYPE
 	       && estimate_case_costs (case_list));
-	  balance_case_nodes (&case_list, NULL);
+	  /* When optimizing for size, we want a straight list to avoid
+	     jumps as much as possible. This basically creates an if-else
+	     chain.  */
+	  if (!optimize_size)
+	    balance_case_nodes (&case_list, NULL);
 	  emit_case_nodes (index, case_list, default_label, index_type);
 	  emit_jump (default_label);
 	}
@@ -3067,6 +3071,7 @@
 	    {
 	      if (!node_has_low_bound (node, index_type))
 		{
+		  if (!optimize_size) /* don't jl to the .default_label. */
 		  emit_cmp_and_jump_insns (index,
 					   convert_modes
 					   (mode, imode,
