patches/gcc/4.2.2/260-flatten-switch-stmt-00.patch
author Trevor Woerner <twoerner@gmail.com>
Wed Nov 16 16:06:42 2011 -0500 (2011-11-16)
changeset 2753 710fa859bfe6
parent 431 8bde4c6ea47a
permissions -rw-r--r--
docs: --target versus --host

In the very beginnings, eons ago, autotools also got confused by this
whole build vs. host vs. target, and got it wrong. Now they fixed it,
but they want to keep backward compatibility, so the --target is still
recongised, although ./configure will complain if you do so. It is
better to use --host.

Signed-off-by: "Trevor Woerner" <twoerner@gmail.com>
[yann.morin.1998@anciens.enib.fr: add build/host clarification]
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,