patches/gcc/4.4.4/190-flatten-switch-stmt-00.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Tue Aug 31 23:24:40 2010 +0200 (2010-08-31)
branch1.8
changeset 2108 68d038933dc4
child 2148 ada9128c98b8
permissions -rw-r--r--
binutils/binutils: remove faulty patch

The added code should be conditinal to the target system
being !MIPS, but is based on the host system being !MIPS.

This is plain wrong, and had not been noticed until now
as I never used those binutils versions on MIPS.

See:
http://sourceware.org/ml/crossgcc/2010-08/msg00192.html

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