diff options
author | Nitin A Kamble <nitin.a.kamble@intel.com> | 2010-07-19 02:36:13 -0700 |
---|---|---|
committer | Richard Purdie <rpurdie@linux.intel.com> | 2010-07-24 01:38:36 +0100 |
commit | c7c5c34188599bae19991f842a836fe125fa3283 (patch) | |
tree | 5e2e97d48c73cc9d0206a0d57bf2446b8dec8af1 /meta/packages/gcc/gcc-4.5.0/904-flatten-switch-stmt-00.patch | |
parent | 722e27e44806558b2ef3e6b7072451981fa5823e (diff) | |
download | openembedded-core-c7c5c34188599bae19991f842a836fe125fa3283.tar.gz openembedded-core-c7c5c34188599bae19991f842a836fe125fa3283.tar.bz2 openembedded-core-c7c5c34188599bae19991f842a836fe125fa3283.zip |
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 <nitin.a.kamble@intel.com>
Diffstat (limited to 'meta/packages/gcc/gcc-4.5.0/904-flatten-switch-stmt-00.patch')
-rw-r--r-- | meta/packages/gcc/gcc-4.5.0/904-flatten-switch-stmt-00.patch | 74 |
1 files changed, 74 insertions, 0 deletions
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 0000000000..c4641dc63e --- /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, |