patches/gcc/4.2.1/260-flatten-switch-stmt-00.patch
author "Yann E. MORIN" <yann.morin.1998@free.fr>
Sun May 05 00:01:05 2013 +0200 (2013-05-05)
changeset 3218 3709e61ad85b
parent 313 2f223aafc7cb
permissions -rw-r--r--
complibs/cloog: add support for the ISL backend

CLooG 0.18+ will use ISL instead of PPL, so we have to configure
adequately depending of which backend is in use.

The Kconfig entries will decide for us which is selected, so we
can rely on either PPL xor ISL to be selected, not both.

Reported-by: "Plotnikov Dmitry" <leitz@ispras.ru>
[Dmitry did a preliminray patch to add ISL support,
which this patch is inspired from]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.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,