patches/gcc/4.2.4/260-flatten-switch-stmt-00.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sun May 08 11:02:18 2011 +0200 (2011-05-08)
branch1.11
changeset 2443 d632feb2602a
parent 687 b2b6b1d46aa1
permissions -rw-r--r--
scripts/addToolVersion: fix gcc complibs dependency

Since the gcc configuration changes, the way to select the
dependent companion libraries has changed.

Update the addToolVersion script to match.

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