patches/gcc/4.2.2/260-flatten-switch-stmt-00.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Wed Sep 21 22:42:35 2011 +0200 (2011-09-21)
changeset 2677 7df89370f805
parent 431 8bde4c6ea47a
permissions -rw-r--r--
kernel/linux: add alternate download locations

Since kernel.org is dead, and there is no announced or known estimated
time or return to normality, it is impossible to download any kernel at
this time.

Add a known-working mirror.

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