patches/gcc/4.2.4/260-flatten-switch-stmt-00.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Tue Aug 02 18:26:53 2011 +0200 (2011-08-02)
changeset 2592 4908eb2b6f17
parent 687 b2b6b1d46aa1
permissions -rw-r--r--
scripts/functions: cvs retrieval first tries the mirror for tarballs

The cvs download helper looks for the local tarballs dir to see if it
can find a pre-downloaded tarball, and if it does not find it, does
the actual fetch to upstream via cvs.

In the process, it does not even try to get a tarball from the local
mirror, which can be useful if the mirror has been pre-populated
manually (or with a previously downloaded tree).

Fake a tarball get with the standard tarball-download helper, but
without specifying any upstream URL, which makes the helper directly
try the LAN mirror.

Of course, if no mirror is specified, no URL wil be available, and
the standard cvs retrieval will kick in.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
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,