patches/gcc/4.4.3/190-flatten-switch-stmt-00.patch
author Remy Bohmer <linux@bohmer.net>
Thu May 27 23:18:19 2010 +0200 (2010-05-27)
changeset 2060 51e4597b07fc
parent 1611 e2516bba8fe5
permissions -rw-r--r--
scripts: add option to strip all toolchain executables

To reduce filesizes of the toolchain and even improve build times
of projects to be build with this toolchain it is usefull to strip
the delivered toolchain executables. Since it is not likely that we
will debug the toolchain executables itself we do not need the
debug information inside the executables itself.

Signed-off-by: Remy Bohmer <linux@bohmer.net>
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,