From c7c5c34188599bae19991f842a836fe125fa3283 Mon Sep 17 00:00:00 2001 From: Nitin A Kamble Date: Mon, 19 Jul 2010 02:36:13 -0700 Subject: gcc family : upgrade to 4.5.0 Imported OE patches into the poky recipes. - Use elfutils instead of libelf Converted OE's svn source into tar ball & a patch. Added a patch to revert the baseversion to 4.5.0 Merge OE & poky extra_oeconf_options Fix the zlib (inside gcc) make issue by providing the --with-system-zlib switch in EXTRA_OECONF Found out that some header file dirs were soft linked to non-existing locations like c_std. Changed the configure options to point them to existing locations like c_global. gcc-cross-canadian_4.5.0: fix configure issue Thanks to Saul Wold for providing poky gcc patches rebased to the 4.5.0 sources. Signed-off-by: Nitin A Kamble --- .../gcc/gcc-4.5.0/904-flatten-switch-stmt-00.patch | 74 ++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 meta/packages/gcc/gcc-4.5.0/904-flatten-switch-stmt-00.patch (limited to 'meta/packages/gcc/gcc-4.5.0/904-flatten-switch-stmt-00.patch') diff --git a/meta/packages/gcc/gcc-4.5.0/904-flatten-switch-stmt-00.patch b/meta/packages/gcc/gcc-4.5.0/904-flatten-switch-stmt-00.patch new file mode 100644 index 000000000..c4641dc63 --- /dev/null +++ b/meta/packages/gcc/gcc-4.5.0/904-flatten-switch-stmt-00.patch @@ -0,0 +1,74 @@ +Hi, + +The attached patch makes sure that we create smaller object code for +simple switch statements. We just make sure to flatten the switch +statement into an if-else chain, basically. + +This fixes a size-regression as compared to gcc-3.4, as can be seen +below. + +2007-04-15 Bernhard Fischer <..> + + * stmt.c (expand_case): Do not create a complex binary tree when + optimizing for size but rather use the simple ordered list. + (emit_case_nodes): do not emit jumps to the default_label when + optimizing for size. + +Not regtested so far. +Comments? + +Attached is the test switch.c mentioned below. + +$ for i in 2.95 3.3 3.4 4.0 4.1 4.2.orig-HEAD 4.3.orig-HEAD 4.3-HEAD;do +gcc-$i -DCHAIN -Os -o switch-CHAIN-$i.o -c switch.c ;done +$ for i in 2.95 3.3 3.4 4.0 4.1 4.2.orig-HEAD 4.3.orig-HEAD 4.3-HEAD;do +gcc-$i -UCHAIN -Os -o switch-$i.o -c switch.c ;done + +$ size switch-*.o + text data bss dec hex filename + 169 0 0 169 a9 switch-2.95.o + 115 0 0 115 73 switch-3.3.o + 103 0 0 103 67 switch-3.4.o + 124 0 0 124 7c switch-4.0.o + 124 0 0 124 7c switch-4.1.o + 124 0 0 124 7c switch-4.2.orig-HEAD.o + 95 0 0 95 5f switch-4.3-HEAD.o + 124 0 0 124 7c switch-4.3.orig-HEAD.o + 166 0 0 166 a6 switch-CHAIN-2.95.o + 111 0 0 111 6f switch-CHAIN-3.3.o + 95 0 0 95 5f switch-CHAIN-3.4.o + 95 0 0 95 5f switch-CHAIN-4.0.o + 95 0 0 95 5f switch-CHAIN-4.1.o + 95 0 0 95 5f switch-CHAIN-4.2.orig-HEAD.o + 95 0 0 95 5f switch-CHAIN-4.3-HEAD.o + 95 0 0 95 5f switch-CHAIN-4.3.orig-HEAD.o + + +Content-Type: text/x-diff; charset=us-ascii +Content-Disposition: attachment; filename="gcc-4.3.gcc-flatten-switch-stmt.00.diff" + +Index: gcc-4.5.0/gcc/stmt.c +=================================================================== +--- gcc-4.5.0.orig/gcc/stmt.c 2010-02-19 01:53:51.000000000 -0800 ++++ gcc-4.5.0/gcc/stmt.c 2010-06-25 11:05:31.816881094 -0700 +@@ -2440,7 +2440,11 @@ + default code is emitted. */ + + use_cost_table = estimate_case_costs (case_list); +- balance_case_nodes (&case_list, NULL); ++ /* When optimizing for size, we want a straight list to avoid ++ jumps as much as possible. This basically creates an if-else ++ chain. */ ++ if (!optimize_size) ++ balance_case_nodes (&case_list, NULL); + emit_case_nodes (index, case_list, default_label, index_type); + if (default_label) + emit_jump (default_label); +@@ -3008,6 +3012,7 @@ + { + if (!node_has_low_bound (node, index_type)) + { ++ if (!optimize_size) /* don't jl to the .default_label. */ + emit_cmp_and_jump_insns (index, + convert_modes + (mode, imode, -- cgit v1.2.3